Gentoo Logo

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


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


3. Các tính năng của Portage

Nội dung:

3.a. Các tính năng của Portage

Portage có một số tính năng bổ sung giúp bạn sử dụng Gentoo tốt hơn. Nhiều tính năng dựa trên một số công cụ để cải thiện hiệu năng, tính ổn định, bảo mật ...

Để bật hoặc tắt một số tính năng nhất định của Portage, bạn cần hiệu chỉnh biến FEATURES trong /etc/make.conf, chứa các từ khóa tính năng khác nhau, cách nhau bằng khoảng trắng. Trong vài trường hợp, bạn còn cần cài đặt công cụ bổ sung mà những tính năng này cần.

Chú ý rằng không phải tất cả các tính năng của Portage được liệt kê ở đây. Để có cái nhìn toàn diện, hãy tham khảo man page của make.conf:

Mã 1.1: Xem man page của make.conf

$ man make.conf

Để biết những tính năng nào được kích hoạt, hãy chạy emerge --info và tìm biến FEATURES hoặc grep nó:

Mã 1.2: Tìm xem biến FEATURES đã được lập chưa

$ emerge --info | grep FEATURES

3.b. Biên dịch phân tán

Dùng distcc

distcc là chương trình để phân tán quá trình biên dịch trên nhiều máy, không nhất thiết đồng nhất, trên mạng. Client distcc gửi mọi thông tin cần thiết về các distcc server hiện có (chạy distccd) để chúng có thể biên dịch từng phần mã nguồn cho client. Kết quả có được là quá trình biên dịch được rút ngắn.

Bạn có thể tìm thông tin chi tiết về distcc (và cách làm nó hoạt động trong Gentoo) trong tài liệu Gentoo Distcc Documentation của chúng tôi.

Cài đặt distcc

Distcc đi kèm với một bộ theo dõi đồ họa để theo dõi các công việc mà máy tính bạn gửi đi để biên dịch. Nếu bạn dùng Gnome, hãy đặt 'gnome' vào biến USE. Tuy nhiên, nếu bạn không dùng Gnome và vẫn muốn có bộ theo dõi, bạn nên đặt 'gtk' vào biến USE.

Mã 2.1: Cài đặt distcc

# emerge distcc

Kích hoạt hỗ trợ Portage

Hãy thêm distcc vào biến FEATURES bên trong /etc/make.conf. Kế tiếp hãy hiệu chỉnh biến MAKEOPTS theo ý thích của bạn. Một chỉ dẫn đáng tin cập là dùng "-jX" với X là số CPU bạn dùng để chạy distccd (bao gồm máy hiện thời) cộng một. Tuy nhiên bạn cũng có thể đạt kết quả tốt với một con số khác.

Giờ hãy chạy distcc-config và nhập vào danh sách distcc server hiện có. Trong ví dụ sau, chúng tôi giả định rằng distcc server là 192.168.1.102 (máy hiện thời), 192.168.1.103 và 192.168.1.104 (hai máy hỗ trợ):

Mã 2.2: Cấu hình distcc với ba distcc server

# distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"

Đừng quên chạy distccd daemon:

Mã 2.3: Khởi động distccd daemon

# rc-update add distccd default
# /etc/init.d/distccd start

3.c. Caching Compilation

Giới thiệu ccache

ccache là cache cho trình biên dịch. Khi bạn biên dịch chương trình, nó sẽ lưu lại kết quả trung gian, để bất cứ khi nào bạn biên dịch cùng một chương trình đó, thời gian biên dịch sẽ giảm đáng kể. Đối với thao tác biên dịch thông thường, điều này có thể tăng tốc từ 5 đến 10 lần thời gian biên dịch.

Nếu bạn quan tâm đến ccache, vui lòng xem trang chủ của ccache.

Cài đặt ccache

Để cài đặt ccache, hãy chạy emerge ccache:

Mã 3.1: Cài đặt ccache

# emerge ccache

Kích hoạt hỗ trợ Portage

Hãy mở /etc/make.conf và thêm ccache vào biến FEATURES. Sau đó thêm biến mới tên là CCACHE_SIZE và đặt nó là "2G":

Mã 3.2: Đặt biến CCACHE_SIZE trong /etc/make.conf

CCACHE_SIZE="2G"

Để kiểm tra tính năng ccache, hãy yêu cầu ccache cung cấp thông tin thống kê của nó. Vì Portage dùng thư mục home ccache khác, bạn cần đặt biến CCACHE_DIR luôn:

Mã 3.3: Xem thống kê ccache

# CCACHE_DIR="/var/tmp/ccache" ccache -s

Vị trí /var/tmp/ccache là vị trí thư mục home ccache mặc định của Portage. Nếu bạn muốn thay đổi, hãy điều chỉnh CCACHE_DIR trong /etc/make.conf.

Tuy nhiên nếu bạn chạy ccache, nó sẽ dùng thư mục mặc định ${HOME}/.ccache. Đó là lý do tại sao phải đặt biến CCACHE_DIR khi tính thống kê ccache cho Portage.

Dùng ccache khi biên dịch không dùng Portage

Nếu bạn muốn dùng ccache khi biên dịch không dùng Portage, hãy thêm /usr/lib/ccache/bin vào đầu biến PATH (trước /usr/bin). Điều đó có thể được thực hiện bằng cách hiệu chỉnh /etc/env.d/00basic, cũng là tập tin môi trường đầu tiên định nghĩa biến PATH:

Mã 3.4: Hiệu chỉnh /etc/env.d/00basic

PATH="/usr/lib/ccache/bin:/opt/bin"

3.d. Hỗ trợ gói tạo sẵn

Tạo sẵn gói

Portage hỗ trợ cài đặt các gói dựng sẵn. Ngay cả khi Gentoo không tự cung cấp các gói dựng sẵn (trừ các phiên bản GRP), Portage vẫn có thể hỗ trợ các gói dựng sẵn.

Để tạo các gói dựng sẵn, bạn có thể dùng quickpkg nếu gói đó đã cài đặt vào hệ thống, hoặc emerge với tham số --buildpkg hoặc --buildpkgonly.

Nếu bạn muốn Portage tạo các gói dựng sẵn của từng gói bạn cài đặt, hãy thêm buildpkg vào biến FEATURES.

Hỗ trợ mở rộng hơn cho việc tạo gói dựng sẵn là sử dụng chương trình catalyst. Vui lòng đọc Catalyst Reference ManualCatalyst Howto để có thông tin chi tiết về Catalyst.

Cài đặt gói tạo sẵn

Mặc dù Gentoo không cung cấp các gói dựng sẵn, bạn có thể tạo một kho lưu trữ tập trung, nơi bạn chứa các gói dựng sẵn của bạn. Nếu bạn muốn dùng kho này, bạn cần thông báo cho Portage biết sự hiện diện của nó bằng cách đặt PORTAGE_BINHOST trỏ đến nó. Ví dụ, nếu các gọi dựng sẵn của bạn nằm ở ftp://buildhost/gentoo:

Mã 4.1: Đặt PORTAGE_BINHOST trong /etc/make.conf

PORTAGE_BINHOST="ftp://buildhost/gentoo"

Khi bạn muốn cài đặt một gói dựng sẵn, hãy thêm tùy chọn --getbinpkg vào lệnh emerge bên cạnh tùy chọn --usepkg. Tùy chọn đầu cho emerge biết cần tải về các gói dựng sẵn từ server được định nghĩa bên trên còn tùy chọn sau yêu cầu emerge cài đặt các gói dựng sẵn trước khi thử lấy mã nguồn về và biên dịch.

Ví dụ, để cài gnumeric với gói dựng sẵn:

Mã 4.2: Cài đặt gói dựng sẵn gnumeric

# emerge --usepkg --getbinpkg gnumeric

Thông tin chi tiết hơn về những tuỳ chọn của emerge dành cho các gói dựng sẵn nằm trong man page của emerge:

Mã 4.3: Đọc man page của emerge

$ man emerge

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


Bản in

View all

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

The original version of this document was last updated February 9, 2013

Tóm tắt: Hãy khám phá các tính năng của Portage, như hỗ trợ biên dịch phân tán, ccache và nhiều thứ khác.

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-2013 Gentoo Foundation, Inc. Questions, Comments? Contact us.