banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thảo luận hệ điều hành *nix Một thắc mắc về package dependencies  XML
  [Question]   Một thắc mắc về package dependencies 10/03/2009 12:46:46 (+0700) | #1 | 172661
[Avatar]
St Konqueror
Member

[Minus]    0    [Plus]
Joined: 08/12/2007 00:47:39
Messages: 229
Offline
[Profile] [PM]
Hi all,
Theo mình được biết thì Linux pacakages được chia thành 2 loại chính là binary và source, và mỗi package đều có sự phụ thuộc vào những thư viện nhất định hoặc là phụ thuộc vào các package khác. Tuy nhiên có một số điểm mình chưa rõ như thế này:

Mình lấy ví dụ với phần mềm Evince-2.22
- khi biên dịch từ source, một trong những gói mà nó yêu cầu phải được cài đặt trước là gnome-doc-utils phiên bản từ 0.3.2 trở lên
- khi cài đặt từ gói .deb thì nó lại hoàn toàn không cần gì tới gói gnome-doc-utils nói trên có trong hệ thống
Không chỉ riêng Evince mà rất nhiều phần mềm khác cũng như vậy khi mình thử so sánh việc cài từ .deb và biên dịch source cùng 1 phần mềm trên cùng 1 hệ thống.

Vậy điều mình muốn hỏi ở đây là vì sao lại có sự khác biệt về dependency đó khi cài đặt từ binary và từ mã nguồn? Mình tìm trên google và wikipedia 2 ngày nay nhưng chưa có câu trả lời thỏa đáng, mong được các bạn chỉ dẫn, hoặc là cho mình vài từ khóa hoặc vài đường links có liên quan để mình tham khảo cũng được.

Rất cám ơn
St. Konqueror
[Up] [Print Copy]
  [Question]   Re: Một thắc mắc về package dependencies 10/03/2009 12:54:31 (+0700) | #2 | 172665
[Avatar]
giobuon
Member

[Minus]    0    [Plus]
Joined: 10/09/2006 06:25:46
Messages: 72
Offline
[Profile] [PM]
Bạn thử tưởng tượng gói deb đó như một file nén chứa các file binary đã đc biên dịch sẵn, còn với source bạn phải compile, khi đó sẽ cần các thứ để compile nó ví dụ như gcc, make...
[Up] [Print Copy]
  [Question]   Re: Một thắc mắc về package dependencies 10/03/2009 12:57:56 (+0700) | #3 | 172666
[Avatar]
giobuon
Member

[Minus]    0    [Plus]
Joined: 10/09/2006 06:25:46
Messages: 72
Offline
[Profile] [PM]

giobuon wrote:
Bạn thử tưởng tượng gói deb đó như một file nén chứa các file binary đã đc biên dịch sẵn, còn với source bạn phải compile, khi đó sẽ cần các thứ để compile nó ví dụ như gcc, make... 


Với gói gnome-doc-utils thì cụ thể nó như thế này
The GNOME Doc Utils package is a collection of documentation utilities for the GNOME project. Notably, it contains utilities for building documentation and all auxiliary files in your source tree, and it contains the DocBook XSLT stylesheets that were once distributed with Yelp. Starting with GNOME 2.8, Yelp requires GNOME Doc Utils for the XSLT. Starting with GNOME 2.12, many of the core GNOME packages require GNOME Doc Utils. 
[Up] [Print Copy]
  [Question]   Re: Một thắc mắc về package dependencies 10/03/2009 13:08:15 (+0700) | #4 | 172671
[Avatar]
St Konqueror
Member

[Minus]    0    [Plus]
Joined: 08/12/2007 00:47:39
Messages: 229
Offline
[Profile] [PM]

giobuon wrote:
Bạn thử tưởng tượng gói deb đó như một file nén chứa các file binary đã đc biên dịch sẵn, còn với source bạn phải compile, khi đó sẽ cần các thứ để compile nó ví dụ như gcc, make... 

Mình tạm hiểu thế này không biết có đúng hay không? Khi biên dịch từ nguồn thì mình sẽ cần một số gói cần thiết cho quá trình biên dịch chứ không cần thiết cho việc chạy phần mềm mà đã được biên dịch xong, vì vậy sau khi biên dịch ta có thể remove các gói phụ thuộc mà đã bắt buộc phải cài trước đó. Không biết có phải là như vậy không?

PS: Có lẽ cách đặt câu hỏi của mình chưa được tốt lắm. Vì mình chủ yếu cái đặt phần mềm từ binary lấy từ các repo, chỉ khi nào cần dùng những phần mềm mà ko có binary thì mới biên dịch từ source nên thành ra các khái niệm về Linux packages đối với mình vẫn còn tương đối mơ hồ. rất mong được các bạn chỉ dẫn thêm.

Cám ơn
St. Konqueror
[Up] [Print Copy]
  [Question]   Re: Một thắc mắc về package dependencies 10/03/2009 13:42:35 (+0700) | #5 | 172682
[Avatar]
giobuon
Member

[Minus]    0    [Plus]
Joined: 10/09/2006 06:25:46
Messages: 72
Offline
[Profile] [PM]
Theo mình nghĩ là như vậy. Cũng chưa có thời gian nghiên cứu kĩ về nó. Thường thì gói source là system independent ở một mức nào đó, khi bạn compile môi trường nào thì nó sẽ chạy trên môi trường đó (đương nhiên là nếu nó hỗ trợ). Còn với binary thì khác, đó là các gói đã biên dịch sẵn và thường chỉ chạy trên một môi trường xác định.
Về gói .deb bạn có thể tham khảo thêm ở đây:
http://tldp.org/HOWTO/Debian-Binary-Package-Building-HOWTO/index.html
[Up] [Print Copy]
  [Question]   Re: Một thắc mắc về package dependencies 10/03/2009 19:36:11 (+0700) | #6 | 172692
[Avatar]
K4i
Moderator

Joined: 18/04/2006 09:32:13
Messages: 635
Location: Underground
Offline
[Profile] [PM]
Thực ra muốn thành binary package thì cũng phải biên dịch từ mã nguồn thôi. Tuy nhiên, điểm khác biệt giữa hai cách cài đặt là một cách (từ mã nguồn) mình có thể tùy biến được các tham số cài đặt => điều này dẫn tới nếu không nắm rõ mình cần gì thì sẽ cài đặt thêm các tính năng không cần thiết => dẫn tới đòi hỏi các thư viện rất lạ. Trong khi đó, trong quá trình dịch ra binary package, người làm công việc biên dịch cũng đã phải tùy chỉnh các tham số đó, dẫn tới là khi cài đặt ra, mình không thể nắm được phần mềm đó có những tính năng nào.

Nếu theo ở trên, thì mình đoán cái Evince cần gnome-doc-utils để làm tài liệu cho nó, còn ở gói deb không đó vì docs đã được biên dịch thành một gói riêng, tách rời ra khỏi Evince executable.

Tốt nhất là trước khi compile
Code:
# vim README
#./configure --help


@St: cái nhận xét cần thiết cho quá trình biên dịch hơn là cho quá trình chạy là khá thú vị, bản thân mình ít khi để ý điều đó. Nhưng đáng tiếc là ví dụ thì không chứng minh được nhận xét đó của bạn smilie

Sống là để không chết chứ không phải để trở thành anh hùng
[Up] [Print Copy]
  [Question]   Re: Một thắc mắc về package dependencies 11/03/2009 05:06:29 (+0700) | #7 | 172763
[Avatar]
giobuon
Member

[Minus]    0    [Plus]
Joined: 10/09/2006 06:25:46
Messages: 72
Offline
[Profile] [PM]
Thực ra cũng chả có gì lạ lùng lắm. Lấy ví dụ đơn giản trên windows nhé, cho gần gũi smilie Giả sử đang code một cái application trên C# chẳng hạn, từ source muốn có file exe thì phải compile đúng không nào. Khi đó thì nào là trình biên dịch, nào là .NET Framework SDK. Thế nhưng sau khi biên dịch xong ta chỉ việc vác cái exe đó qua máy khác kèm với .NET Framework bình thường là chạy được rồi. Trên linux cũng vậy binary và source tuy cùng của một phần mềm nhưng là hai thứ cách nhau khá xa đấy smilie
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 Users currently in here 
1 Anonymous

Powered by JForum - Extended by HVAOnline
 hvaonline.net  |  hvaforum.net  |  hvazone.net  |  hvanews.net  |  vnhacker.org
1999 - 2013 © v2012|0504|218|