Gentoo Logo

Disclaimer : This document is not valid and is not maintained anymore.


[ << ] [ < ] [ Về đầu ] [ > ] [ >> ]


2. USE flag

Nội dung:

2.a. USE flag là gì?

Những ý tưởng đằng sau USE flag

Khi bạn cài đặt Gentoo (hoặc bất kỳ bản phân phối nào khác, hoặc thậm chi bất kỳ hệ điều hành nào), những lựa chọn của bạn phụ thuộc vào môi trường bạn đang làm việc. Thiết lập cho server khác với thiết lập cho workstation. Máy dùng để chơi game khác với máy để kết xuất cảnh 3D.

Không những bạn chọn những gói bạn muốn cài đặt, bạn còn chọn những tính năng bạn muốn gói phần mềm đó hỗ trợ. Nếu bạn không cần OpenGL, tại sao phải cài đặt OpenGL và buộc hỗ trợ OpenGL trong phần mềm của bạn? Nếu bạn không dùng KDE, tại sao lại phải biên dịch với hỗ trợ KDE nếu các gói đó có thể hoạt động tốt không cần KDE?

Để giúp người sử dụng có thể quyết định cái gì nên cài/kích hoạt hoặc không nên, chúng tôi muốn người sử dụng ghi rõ môi trường của họ, theo một cách đơn giản. Điều này sẽ bắt buộc người sử dụng chọn ra những gì họ thật sự muốn, giúp cho Portage, hệ thống quản lý gói tin của chúng tôi, tiến hành một cách dễ dàng hơn nhằm đưa ra những quyết định có ích hơn.

Định nghĩa USE flag

USE flag là một từ khóa xác nhận sự hỗ trợ một tính năng nhất định cùng các thông tin ràng buộc liên quan. Nếu bạn định nghĩa một USE flag, Portage sẽ biết bạn muốn có hỗ trợ tương ứng. Dĩ nhiên nó cũng sẽ thay đổi các thông tin gói phụ thuộc của mỗi gói.

Hãy xem thử ví dụ sau: cờ kde. Nếu bạn không đặt cờ này vào biến USE, mọi gói hỗ trợ KDE tùy chọn sẽ được biên dịch không có hỗ trợ KDE. Mọi gói có thể phụ thuộc vào KDE sẽ được cài đặt mà không cần các thư viện KDE. Nếu bạn định nghĩa cờ kde, những gói này sẽ được biên dịch với hỗ trợ KDE, và các thư viện KDE sẽ được cài đặt vào vì là những gói phụ thuộc của gói bạn định cài đặt.

Bằng cách định nghĩa các cờ, bạn sẽ có được hệ thống được cân chỉnh theo ý bạn muốn.

Có những USE flag nào?

Có hai loại USE flag: USE flag toàn cục và USE flag cục bộ.

  • USE flag toàn cục được dùng bởi nhiều gói phần mềm khác nhau trên toàn hệ thống. Đây là những USE flag thông dụng.
  • USE flag cục bộ chỉ được dùng bởi một gói phần mềm, đại diện cho những quyết định đặc trưng cho gói phần mềm đó.

Danh sách USE flag toàn cục nằm ở trên mạng hoặc nằm trong /usr/portage/profiles/use.desc.

Danh sách các USE flag cục bộ nằm trong /usr/portage/profiles/use.local.desc.

2.b. Sử dụng USE flag

Khai báo USE flag bền vững

Hy vọng bạn đã bị thuyết phục về tầm quan trọng của USE flag. Chúng tôi sẽ hướng dẫn bạn cách khai báo USE flag.

Như đã đề cập, mọi USE flag được khai báo trong biến USE. Để tiện dụng cho người dùng khi tìm kiếm và chọn USE flag, chúng tôi cung cấp thiết lập USE mặc định. Thiết lập này là tập hợp các USE flag chúng tôi nghĩ thường được dùng. Thiết lập mặc định nằm trong những tập tin make.defaults của profile của bạn.

Hệ thống profile bạn dùng là tùy vào symlink /etc/make.profile. Mỗi profile nằm trên profile khác, một profile bao quát hơn. Kết quả cuối cùng là tổng của mọi profile. Profile trên cùng là profile base (/usr/portage/profiles/base).

Hãy xem các thiết lập mặc định cho 2004.3:

Mã 2.1: Biến USE tổng hợp từ make.defaults của profile 2004.3

(Đây là ví dụ tổng hợp các thiết lập trong profile base, default-linux,
 default-linux/x86 và default-linux/x86/2004.3)
USE="x86 oss apm arts avi berkdb bitmap-fonts crypt cups encode fortran f77
     foomaticdb gdbm gif gpm gtk imlib jpeg kde gnome libg++ libwww mad
     mikmod motif mpeg ncurses nls oggvorbis opengl pam pdflib png python qt
     quicktime readline sdl spell ssl svga tcpd truetype X xml2 xmms xv zlib"

Như bạn đã thấy, biến này chứa khác nhiều cờ. Đừng thay thế trong make.defaults cho phù hợp với bạn: mọi thay đổi trong đó sẽ bị xóa mất mỗi khi bạn cập nhật Portage!

Để thay đổi thiết lập mặc định, bạn cần thêm hoặc xóa cờ trong biến USE. Bạn có thể thực hiện điều này ở mức hệ thống bằng cách định nghĩa biến USE trong /etc/make.conf. Trong biến này bạn có thể thêm những USE flag riêng của bạn, loại bớt những USE flag bạn không muốn. Loại những USE flag bằng cách thêm dấu trừ vào trước tên cờ ("-").

Ví dụ, để loại bỏ hỗ trợ KDE và QT và muốn thêm hỗ trợ LDAP, định nghĩa biến USE trong /etc/make.conf như sau:

Mã 2.2: Ví dụ đặt USE trong /etc/make.conf

USE="-kde -qt ldap"

Khai báo USE flag riêng cho từng gói

Đôi khi bạn muốn khai báo USE flag đặc biệt cho riêng một (hoặc một số) gói nhất định chứ không muốn khai báo cho toàn hệ thống. Để thực hiện điều này, bạn cần tạo thư mục /etc/portage (nếu chưa có) và sửa /etc/portage/package.use.

Ví dụ, nếu bạn không muốn hỗ trợ berkdb toàn cục nhưng muốn có hỗ trợ berkdb trong mysql, bạn cần thêm:

Mã 2.3: Ví dụ /etc/portage/package.use

dev-db/mysql berkdb

Bạn cũng có thể xác định trực tiếp tắt USE flag cho một ứng dụng nhất định. Ví dụ, nếu bạn không muốn có hỗ trợ java trong PHP:

Mã 2.4: Ví dụ /etc/portage/package.use thứ hai

dev-php/php -java

Khai báo USE flag tạm thời

Đôi khi bạn muốn đặt USE flag chỉ một lần. Thay vì phải sửa /etc/make.conf hai lần (một lần thêm USE flag và một lần xóa các thay đổi), bạn có thể chỉ cần khai báo biến môi trường USE. Nhớ rằng khi bạn emerge lại hoặc cập nhật ứng dụng (hoặc cập nhật trực tiếp hoặc gián tiếp do nó là gói phụ thuộc của gói khác), những thay đổi của bạn sẽ biến mất!

Ví dụ, bạn cần tạm thời loại bỏ cờ java khi cài đặt mozilla.

Mã 2.5: Dùng biến môi trường USE

# USE="-java" emerge mozilla

USE flag tự động

Sau khi cài đặt một số gói nhất định, một số USE flag sẽ được bật tự động nếu bạn không tắt nó một cách tường minh. Để xem danh sách những gói cung cấp USE flag, hãy xem /etc/make.profile/use.defaultsuse.defaults của các profile cha.

Mã 2.6: Trích đoạn /etc/make.profile/use.defaults

gnome           gnome-base/gnome
gtk             x11-libs/gtk+
qt              x11-libs/qt
kde             kde-base/kdebase
motif           x11-libs/openmotif

Thứ tự ưu tiên

Dĩ nhiên các cách thiết lập USE flag sẽ có độ ưu tiên khac nhau. Bạn không muốn khai báo USE="-java" chỉ để xem java có được đặt với độ ưu tiên cao hay không. Thứ tự ưu tiên của thiết lập USE flag, sắp theo độ ưu tiên là (cái đầu tiên có ưu tiên thấp nhất):

  1. Thiết lập USE mặc định được khai báo trong những tập tin make.defaults của profile của bạn
  2. Thiết lập USE được kế thừa nếu một gói từ use.defaults của profile được cài đặt
  3. Thiết lập USE do người dùng định nghĩa trong /etc/make.conf
  4. Thiết lập USE do người dùng định nghĩa trong /etc/portage/package.use
  5. Thiết lập USE do người dùng định nghĩa bằng biến môi trường

Để xem thiết lập USE cuối cùng được Portage sử dụng, hãy chạy emerge --info. Lệnh này sẽ liệt kê mọi biến liên quan (bao gồm biến USE) được dùng bởi Portage.

Mã 2.7: Chạy emerge --info

# emerge --info

Cập nhật lại toàn bộ hệ thống để sử dụng USE-flag mới

Nếu bạn thay thế vài USE flag và muốn cập nhật lại toàn bộ hệ thống để dùng những USE flag này, hãy dùng tùy chọn --newuse của emerge:

Mã 2.8: Dựng lại toàn bộ hệ thống

# emerge --update --deep --newuse world

Kế tiếp hãy chạy depclean của Portage để loại bỏ những phụ thuộc theo điều kiện, đã được cài đặt trên hệ thống cũ, nhưng không còn được dùng bởi USE flag mới.

Cảnh báo: Chạy emerge --depclean là một thao tác nguy hiểm và nên được xử lý hết sức cẩn thận. Hãy kiểm tra đi kiểm tra lại danh sách các gói bị loại bỏ để bảo đảm không loại bỏ nhầm những gói bạn cần. Trong ví dụ kế, chúng ta sẽ thêm tùy chọn -p vào để chỉ liệt kê danh sách cần loại bỏ trước khi thật sự loại bỏ:

Mã 2.9: Loại bỏ các gói thừa

# emerge -p --depclean

Khi depclean hoàn tất, hãy chạy revdep-rebuild để điều chỉnh những ứng dụng được liên kết động với các thư viện đã bị loại bỏ. revdep-rebuild nằm trong gói gentoolkit; đừng quên emerge gói này.

Mã 2.10: Chạy revdep-rebuild

# revdep-rebuild

Khi hoàn tất, hệ thống của bạn sẽ sử dụng những thiết lập USE flag mới.

2.c. USE flag riêng cho mỗi gói

Xem các USE flag hiện có

Hãy xem ví dụ về mozilla: những USE flag nào sẽ được dùng? Để biết, chúng ta dùng emerge với tùy chọn --pretend--verbose:

Mã 3.1: Xem những USE flag được dùng

# emerge --pretend --verbose mozilla
These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild  N    ] net-www/mozilla-1.5-r1 +java +crypt -ipv6 +ssl +ldap 
+gnome -debug +mozcalendar -mozaccess -mozxmlterm -moznoirc -moznomail
-moznocompose -moznoxft 

emerge không phải là công cụ duy nhất để thực hiện công việc này. Thực ra, một công cụ khác là equery nằm trong gentoolkit được tạo ra để cung cấp thông tin gói. Trước hết hãy cài đặt gentoolkit:

Mã 3.2: Cài đặt gentoolkit

# emerge gentoolkit

Giờ hãy chạy equery với tham số uses để xem những USE flag của một gói nhất định. Ví dụ, với gói gnumeric:

Mã 3.3: Dùng equery để xem những USE flag được dùng

# equery uses gnumeric
[ Colour Code : set unset ]
[ Legend      : (U) Col 1 - Current USE flags        ]
[             : (I) Col 2 - Installed With USE flags ]

 U I [ Found these USE variables in : app-office/gnumeric-1.2.0 ]
 - - libgda  : Adds GNU Data Access (CORBA wrapper) support for gnumeric
 - - gnomedb : unknown
 + + python  : Adds support/bindings for the Python language
 + + bonobo  : Adds support for gnome-base/bonobo (Gnome CORBA interfaces)

[ << ] [ < ] [ Về đầu ] [ > ] [ >> ]


Bản in

View all

Cập nhật 16 Tháng hai 2006

The original version of this document was last updated December 18, 2013

Tóm tắt: USE-flag là một đặc điểm rất quan trọng của Gentoo. Trong chương này, bạn sẽ học cách sử dụng USE flag và hiểu cách USE flag tương tác với hệ thống của bạn.

Sven Vermeulen
Author

Roy Marples
Author

Daniel Robbins
Author

Chris Houser
Author

Jerry Alexandratos
Author

Seemant Kulleen
Gentoo x86 Developer

Tavis Ormandy
Gentoo Alpha Developer

Jason Huebel
Gentoo AMD64 Developer

Guy Martin
Gentoo HPPA developer

Pieter Van den Abeele
Gentoo PPC developer

Joe Kallar
Gentoo SPARC developer

John P. Davis
Editor

Pierre-Henri Jondot
Editor

Eric Stockbridge
Editor

Rajiv Manglani
Editor

Jungmin Seo
Editor

Stoyan Zhekov
Editor

Jared Hudson
Editor

Colin Morey
Editor

Jorge Paulo
Editor

Carl Anderson
Editor

Jon Portnoy
Editor

Zack Gilburd
Editor

Jack Morgan
Editor

Benny Chuang
Editor

Erwin
Editor

Joshua Kinard
Editor

Tobias Scherbaum
Editor

Xavier Neys
Editor

Grant Goodyear
Reviewer

Gerald J. Normandin Jr.
Reviewer

Donnie Berkholz
Reviewer

Ken Nowack
Reviewer

Lars Weiler
Contributor

Nguyễn Thái Ngọc Duy
Translator

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.