Kể từ phiên bản 9.2, FreeBSD đã giới thiệu một công cụ mới để thay thế các lệnh pkg _ * - cũ - pkg
còn được gọi là pkgng
. Nó rất giống với Debian apt
hay Fedora yum
nhưng có một số tính năng rất hay. Một trong số đó là khả năng dễ dàng sử dụng kho gói riêng của bạn.
Tại sao bạn muốn làm điều đó? Các kho lưu trữ pkg chính thức được xây dựng từ cây cổng của FreeBSD với một bộ tùy chọn rất hạn chế. Ví dụ, gói chính thức cho PHP thiếu hỗ trợ cho MySQL. Một lý do khác có thể là bạn muốn có hai kho lưu trữ, một kho lưu trữ được bật X11 - cho máy tính để bàn của bạn - và một kho lưu trữ X11 bị vô hiệu hóa - cho các máy chủ của bạn. Có rất nhiều tùy chọn và khả năng, và hướng dẫn này sẽ chỉ cho bạn cách xây dựng kho lưu trữ của riêng bạn với Poudriere , một công cụ dành cho các gói xây dựng hàng loạt.
Tôi giả sử rằng bạn có một VPS mới với FreeBSD 10 x64 được cài đặt. Trước hết, bạn cần cây cổng trên hệ thống của bạn:
cd /usr
portsnap fetch extract
Sau đó, bạn cần cài đặt Poudriere từ nguồn (Các tùy chọn mặc định vẫn ổn!):
cd /usr/ports/ports-mgmt/poudriere
make install clean
Tiếp theo, tạo một tệp cấu hình cơ bản:
cp /usr/local/etc/poudriere.conf.sample /usr/local/etc/poudriere.conf
... Và chỉnh sửa nó theo nhu cầu của bạn. Sau đây là một khởi đầu tốt:
FREEBSD_HOST=http://ftp.freebsd.org
RESOLV_CONF=/etc/resolv.conf
BASEFS=/usr/local/poudriere
POUDRIERE_DATA=$/data
USE_PORTLINT=no
USE_TMPFS=yes
DISTFILES_CACHE=/usr/ports/distfiles
CHECK_CHANGED_DEPS=yes
# Edit this according to your VPS' CPU.
PARALLEL_JOBS=1
NOLINUX=yes
Thay vì sử dụng portstree thông thường của hệ thống của bạn, Poudriere sử dụng bản sao của chính nó. Bạn phải lấy nó bằng lệnh sau:
poudriere ports -c
Bây giờ, tạo một nhà tù để người xây dựng chạy trong:
poudriere jail -c -j testjail -v 10.0-RELEASE -a amd64
Trước khi bạn có thể bắt đầu xây dựng các gói, bạn thực sự sẽ phải nói với Poudriere những gì nó nên xây dựng. Mở trình soạn thảo văn bản yêu thích của bạn và thêm một số gói:
www/firefox
im/pidgin
sysutils/tmux
editors/vim
... và lưu tập tin dưới /usr/local/etc/buildlist
. Nếu bạn không muốn các tùy chọn mặc định, thì bạn có thể định cấu hình các tùy chọn cho từng gói trong tệp đó. Điều này được thực hiện bằng cách ban hành lệnh sau:
poudriere options -cf /usr/local/etc/buildlist
Nếu không, bạn có thể bắt đầu xây dựng:
poudriere bulk -f /usr/local/etc/buildlist -j testjail
Lượng thời gian thao tác này sẽ thay đổi dựa trên tốc độ CPU của VPS của bạn. Sau khi quá trình kết thúc, các gói mới của bạn có thể được tìm thấy, được sắp xếp theo bản dựng, trong /usr/local/poudriere/data/packages/
.
Bây giờ, bạn cần một máy chủ web để thực sự phục vụ các gói đó cho các máy khác của bạn. Tôi đã chọn Nginx vì nó hiệu quả và nhẹ. Cài đặt nó qua cổng (Các tùy chọn mặc định vẫn ổn!):
cd /usr/ports/www/nginx
make install clean
Sau khi quá trình cài đặt hoàn tất, bạn cần định cấu hình Nginx để phục vụ thư mục gói. Để làm điều đó, chỉnh sửa /usr/local/etc/nginx/nginx.conf
với trình soạn thảo văn bản yêu thích của bạn:
server {
listen 80;
server_name localhost;
root /usr/local/poudriere/data/packages/testjail-default;
location / {
autoindex on;
}
}
Cuối cùng, hãy đảm bảo máy chủ web khởi động khi khởi động:
echo "nginx_enable=YES" >> /etc/rc.conf
... và khởi động máy chủ:
/usr/local/etc/rc.d/nginx start
Khả năng với Poudriere là rất lớn. Bạn có thể tìm hiểu thêm về Poudriere bằng cách đọc mục nhập trang. Nếu bạn có kế hoạch sử dụng một thiết lập như thế này trong môi trường sản xuất, bạn cũng nên đọc về việc ký gói và xem xét việc bảo mật kết nối với máy chủ web của bạn bằng TLS. Nhưng bây giờ, bạn đã sẵn sàng để đá!
Để kích hoạt kho lưu trữ trên máy khách, hãy chạy các lệnh này trên máy khách:
mkdir -p /usr/local/etc/repos
vi /usr/local/etc/repos/myrepo.conf
Dân trí myrepo.conf
với nội dung sau. Bạn có thể sử dụng bất kỳ tên nào cho tệp này, miễn là nó có .conf
hậu tố.
poudriere: {
url: "http://yoururl"
mirror_type: "http",
enabled: yes
}
Tiếp theo, cập nhật cơ sở dữ liệu gói bằng lệnh:
pkg update
Bây giờ bạn có thể cài đặt các gói ra khỏi kho lưu trữ mới của bạn!