FreeBSD là một hệ điều hành giống Unix mã nguồn mở được sử dụng để cung cấp năng lượng cho các máy chủ, máy tính để bàn và nền tảng nhúng hiện đại.Một cộng đồng lớn đã liên tục phát triển nó trong hơn ba mươi năm. Các tính năng lưu trữ, bảo mật và mạng tiên tiến của nó đã biến FreeBSD trở thành nền tảng được lựa chọn cho nhiều trang web bận rộn nhất và các thiết bị lưu trữ và mạng nhúng phổ biến nhất.Những gã khổng lồ như Netflix, Yahoo!, WhatsApp, BBC và Sony sử dụng FreeBSD dưới một số hình thức. Hệ thống FreeBSD không được biết đến rộng rãi như Linux chủ yếu là do Linux đã tập trung vào Máy tính để bàn trong nhiều năm và dự án FreeBSD có xu hướng dựa trên máy chủ nhiều hơn.
Trong hướng dẫn này, bạn sẽ tìm hiểu về quản lý gói nhị phân thông qua pkg trên hệ điều hành FreeBSD 12, đây là phiên bản mới nhất tại thời điểm bài viết này được viết. Hầu hết các nội dung cũng áp dụng cho phiên bản FreeBSD 11 trước đó.
Ports là hệ thống xây dựng phần mềm bổ sung trên FreeBSD. Với Ports, bạn bắt đầu với mã nguồn thô do nhà cung cấp phần mềm cung cấp và xây dựng phần mềm theo đúng cách bạn cần, bật và tắt các tính năng theo ý muốn.
Gói là phần mềm được biên dịch trước và là kết quả của việc xây dựng các cổng, sử dụng các tùy chọn mà người bảo trì cổng tin rằng sẽ hữu ích nhất đối với nhiều người nhất và đóng gói chúng trong một gói để dễ cài đặt. Gói cho phép bạn nhanh chóng cài đặt, gỡ cài đặt và nâng cấp phần mềm bổ sung. Chúng là những gì hầu hết người dùng sẽ sử dụng. Hệ thống đóng gói FreeBSD được gọi là package hoặc chỉ là
Một thông tin quan trọng khác về quản lý gói FreeBSD là vị trí của tệp nhị phân gói. Các gói cài đặt các tệp nhị phân trong
Sau đây là cách bạn cài đặt gói
Bạn có thể đưa lệnh vào
Để xóa gói, bạn sẽ sử dụng:
Sử dụng
Cài đặt
Phiên bản gốc của FreeBSD không được cài đặt trình quản lý gói
Bạn sẽ nhấn Y và ENTER trên bàn phím và quá trình cài đặt công cụ quản lý gói sẽ bắt đầu. Sau khi hệ thống đóng gói được thiết lập, gói phần mềm ban đầu mà bạn muốn cài đặt (
Bạn cũng có thể cài đặt hệ thống đóng gói riêng, không cần thêm các gói khác, bằng cách chạy
Danh sách các ứng dụng khả dụng của FreeBSD đang ngày càng tăng lên.Dự án FreeBSD cung cấp một số bộ gói trong kho lưu trữ công khai và chúng được cập nhật sau mỗi vài ngày. Hiện có hơn 25.000 gói.
Ví dụ, hãy thử tìm kiếm máy chủ web Apache.
Nó sẽ tìm thấy tất cả các gói có
Một số tìm kiếm có thể tạo ra hàng trăm kết quả. Bạn sẽ cần sử dụng các tùy chọn dòng lệnh khác nhau để cắt bớt hoặc điều chỉnh kết quả tìm kiếm. Tham khảo trang hướng dẫn
Nếu bạn không chắc chắn liệu một gói có phải là thứ bạn muốn hay không, bạn có thể sử dụng lệnh sau để tra cứu thông tin chi tiết về gói đó:
Lệnh này sẽ cung cấp cho bạn nhiều thông tin hữu ích về gói.
Khi bạn cài đặt các gói bằng
Lệnh này sẽ chỉ tải xuống gói Nginx mà không có phần phụ thuộc của nó. Bạn có thể sử dụng cờ
Các gói được tải xuống thư mục bộ đệm gói
Bây giờ, để cài đặt một gói đã tải xuống sau khi tải, hãy chạy
Theo thời gian, thư mục bộ nhớ đệm gói có thể lớn hơn. Lệnh
Nếu bạn muốn xóa mọi gói được lưu trong bộ nhớ đệm, hãy sử dụng cờ
Nếu bạn muốn tự động xóa bộ nhớ đệm gói sau mỗi lần cài đặt hoặc nâng cấp gói, hãy đặt tùy chọn
Cách cấu hình
Chương trình
Bạn có thể định nghĩa các bí danh cho các lệnh con
Để biết thêm thông tin về định dạng tệp và các tùy chọn, bạn có thể tham khảo trang hướng dẫn
Nếu bạn muốn biết thêm thông tin về một gói đã cài đặt, hãy sử dụng
Bạn có thể thấy nhiều thông tin hữu ích như phiên bản phần mềm, thời gian cài đặt phần mềm, giấy phép phần mềm, cờ thời gian biên dịch, v.v. Xem trang hướng dẫn
Bạn sẽ nhận được danh sách các gói cần xóa và dung lượng chúng sẽ giải phóng.
Nếu bạn xóa một gói mà các gói khác phụ thuộc vào,
Sử dụng
Gói
Để liệt kê tất cả các gói hiện đang bị khóa trên hệ thống, hãy sử dụng cờ
Để xóa khóa, hãy sử dụng lệnh
Để khóa hoặc mở khóa tất cả các gói trên hệ thống cùng một lúc, hãy sử dụng cờ
Bạn có thể thêm và xóa kho lưu trữ khi cần. Vì
Ví dụ về lệnh
Trong phần này, tôi sẽ liệt kê một số lệnh phụ được sử dụng phổ biến nhất mà bạn có thể sử dụng khi quản trị máy chủ FreeBSD.
Trong hướng dẫn này, bạn sẽ tìm hiểu về quản lý gói nhị phân thông qua pkg trên hệ điều hành FreeBSD 12, đây là phiên bản mới nhất tại thời điểm bài viết này được viết. Hầu hết các nội dung cũng áp dụng cho phiên bản FreeBSD 11 trước đó.
Điều kiện tiên quyết
- Hệ điều hành FreeBSD 12
- Truy cập vào tài khoản root hoặc sudo
Cổng và Gói
Trên hệ thống FreeBSD, chúng ta có hai phương pháp khác nhau để cài đặt phần mềm bổ trợ: thông qua ports và thông qua gói được cấu hình sẵn mà hầu hết người dùng sẽ chọn để cài đặt và quản lý phần mềm.Ports là hệ thống xây dựng phần mềm bổ sung trên FreeBSD. Với Ports, bạn bắt đầu với mã nguồn thô do nhà cung cấp phần mềm cung cấp và xây dựng phần mềm theo đúng cách bạn cần, bật và tắt các tính năng theo ý muốn.
Gói là phần mềm được biên dịch trước và là kết quả của việc xây dựng các cổng, sử dụng các tùy chọn mà người bảo trì cổng tin rằng sẽ hữu ích nhất đối với nhiều người nhất và đóng gói chúng trong một gói để dễ cài đặt. Gói cho phép bạn nhanh chóng cài đặt, gỡ cài đặt và nâng cấp phần mềm bổ sung. Chúng là những gì hầu hết người dùng sẽ sử dụng. Hệ thống đóng gói FreeBSD được gọi là package hoặc chỉ là
pkg
. Thông tin gói được lưu trữ trong cơ sở dữ liệu SQLite mà bạn có thể truy vấn về dữ liệu gói.Một thông tin quan trọng khác về quản lý gói FreeBSD là vị trí của tệp nhị phân gói. Các gói cài đặt các tệp nhị phân trong
/usr/local
và hầu hết các tệp cấu hình đều nằm trong /usr/local/etc
thay vì /etc
. Nếu bạn đến từ thế giới Linux, bạn có thể thấy điều này rất bất thường.Trình quản lý gói FreeBSD -pkg
pkg
là công cụ thay thế thế hệ tiếp theo cho các công cụ quản lý gói FreeBSD truyền thống, cung cấp nhiều tính năng giúp xử lý các gói nhị phân nhanh hơn và dễ dàng hơn. pkg
là cách dễ nhất để cài đặt phần mềm chưa có trong hệ thống cơ sở của FreeBSD. pkg
là một chương trình duy nhất với nhiều lệnh phụ. Bạn sẽ sử dụng pkg
cho hầu hết mọi thao tác trên các gói, như cài đặt, xóa và điều tra các gói. Tất cả các hoạt động và thay đổi gói phải được chạy dưới dạng root
hoặc thông qua sudo
.Sau đây là cách bạn cài đặt gói
acme.sh
trên FreeBSD:
Mã:
pkg install acme.sh
-y
để tránh Tiến hành hành động này? [y/N]:
câu hỏi khi cài đặt phần mềm hoặc bạn có thể cấu hình pkg
để luôn mặc định -y
trong tệp cấu hình.Để xóa gói, bạn sẽ sử dụng:
Mã:
pkg deleteacme.sh
pkg help
để tham khảo nhanh về các lệnh con khả dụng hoặc lệnh pkg help
để hiển thị trang hướng dẫn cho một lệnh con cụ thể.
Mã:
pkg help pkg
help install
pkg help delete
Cài đặt pkg
Phiên bản gốc của FreeBSD không được cài đặt trình quản lý gói pkg
. Bạn cần phải cài đặt trình quản lý này. Lần đầu tiên bạn thử cài đặt một số gói pkg
, trình quản lý sẽ nhắc bạn cài đặt công cụ quản lý gói. Ví dụ, giả sử gói đầu tiên bạn muốn cài đặt trên FreeBSD mới của mình là wget
và bạn sẽ thấy lời nhắc sau trong terminal của mình:
Mã:
Công cụ quản lý gói chưa được cài đặt trên hệ thống của bạn.Bạn có muốn tải xuống và cài đặt ngay bây giờ không? [y/N]: y
wget
) sẽ được cài đặt.Bạn cũng có thể cài đặt hệ thống đóng gói riêng, không cần thêm các gói khác, bằng cách chạy
pkg bootstrap
, nhưng điều này hiếm khi được sử dụng, có thể chỉ trong các tập lệnh thiết lập hệ thống. pkg
biết cách cài đặt và cập nhật chính nó và các gói khác.Cách tìm kiếm các gói
Bây giờ bạn đã cài đặt trình quản lý gói, bạn có thể cài đặt các gói. Nếu bạn là quản trị viên hệ thống, bạn sẽ quen với thực tế là các hệ điều hành khác nhau gán các tên khác nhau cho các phiên bản đóng gói của cùng một phần mềm. Ví dụ, một gói cho máy chủ web Apache trên FreeBSD sẽ có tên hoàn toàn khác với Apache đóng gói trên các bản phân phối Linux khác nhau. Vì vậy, trước khi bạn có thể cài đặt bất kỳ thứ gì, bạn sẽ cần tìm ra tên của gói mà bạn muốn cài đặt.Danh sách các ứng dụng khả dụng của FreeBSD đang ngày càng tăng lên.Dự án FreeBSD cung cấp một số bộ gói trong kho lưu trữ công khai và chúng được cập nhật sau mỗi vài ngày. Hiện có hơn 25.000 gói.
Ví dụ, hãy thử tìm kiếm máy chủ web Apache.
Mã:
pkg search apache
# apache24-2.4.38 Phiên bản 2.4.x của máy chủ web Apache
apache
trong tên của chúng. Điều này sẽ trả về một danh sách dài, nhưng những gì bạn đang tìm kiếm là gói apache24
. Có một mô tả ngắn về mọi gói. Điều này sẽ giúp bạn khi quyết định cài đặt gói nào. Nhưng không phải lúc nào cũng đơn giản.Một số tìm kiếm có thể tạo ra hàng trăm kết quả. Bạn sẽ cần sử dụng các tùy chọn dòng lệnh khác nhau để cắt bớt hoặc điều chỉnh kết quả tìm kiếm. Tham khảo trang hướng dẫn
pkg-search
hoặc trang trợ giúp pkg help search
để tìm hiểu thêm về các tùy chọn tìm kiếm phổ biến.Nếu bạn không chắc chắn liệu một gói có phải là thứ bạn muốn hay không, bạn có thể sử dụng lệnh sau để tra cứu thông tin chi tiết về gói đó:
Mã:
pkg search -R apache24
# name: "apache24"
# origin: "www/apache24"
# version: "2.4.38"
# comment: "Phiên bản 2.4.x của máy chủ web Apache"
# maintainer: "[emailprotected]"
# www: "https://httpd.apache.org/"
# abi: "FreeBSD:12:amd64"
# arch: "freebsd:12:x86:64"
# prefix: "/usr/local"
# . . .
# . . .
Cách cài đặt các gói mới bằng pkg
Để cài đặt phần mềm, hãy sử dụng lệnh phụinstall
của pkg và tên của gói cần cài đặt.
Mã:
pkg install apache24
pkg install
, pkg
sẽ tham khảo danh mục gói cục bộ, sau đó tải xuống gói được yêu cầu từ kho lưu trữ tại pkg.FreeBSD.org
. Sau khi gói được cài đặt, nó sẽ được đăng ký trong cơ sở dữ liệu SQLite được lưu tại /var/db/pkg/local.sqlite
. Hãy cẩn thận không xóa tệp này, nếu không, hệ thống của bạn sẽ không theo dõi được các gói nào đã được cài đặt. Nếu phần mềm có các phần phụ thuộc, pkg
sẽ tìm ra chúng và cài đặt chúng cùng với gói cơ sở. Các gói được cài đặt dưới dạng phần phụ thuộc được gọi là các gói tự động.pkg
có khả năng chỉ tải xuống các gói qua internet, lưu chúng ở một vị trí trên đĩa và bạn có thể cài đặt chúng vào thời điểm khác. Bạn có thể sử dụng lệnh pkg fetch
để tải xuống gói mà không cần cài đặt.
Mã:
pkg fetch nginx
-d
để lấy tất cả các phần phụ thuộc cũng như gói được đặt tên.
Mã:
pkg fetch -d nginx
/var/cache/pkg
. Sau khi bạn đã tải các gói, pkg
sẽ dán chúng vào thư mục này. Bạn có thể liệt kê các tệp để xem nó chứa những gì.
Mã:
ls /var/cache/pkg
pkg install
bình thường. Quá trình cài đặt sử dụng các tệp đã lưu trong bộ nhớ đệm thay vì các tệp đã tải xuống.Theo thời gian, thư mục bộ nhớ đệm gói có thể lớn hơn. Lệnh
pkg clean
xóa mọi gói được lưu trong bộ nhớ đệm đã được thay thế bằng các phiên bản mới hơn, cũng như mọi tệp gói không còn trong kho lưu trữ.
Mã:
pkg clean
-a
.
Mã:
pkg clean -a
pkg.conf
AUTOCLEAN
thành true
.Cách cấu hình pkg
Chương trình pkg
được thiết kế để có tính linh hoạt cao. Mỗi lệnh con có rất nhiều tùy chọn. Bạn có thể thiết lập hành vi tùy chỉnh nhưng nhất quán cho hầu hết các chương trình bằng tệp cấu hình toàn hệ thống cho pkg
, nằm trong /usr/local/etc/pkg.conf
.tệp pkg.conf
chứa các giá trị mặc định được chú thích cho pkg
. Chỉ cần đọc tệp đó, bạn có thể tìm hiểu rất nhiều về cách pkg
hoạt động. Cấu hình được viết bằng ngôn ngữ cấu hình chung (UCL) và có rất nhiều tùy chọn cấu hình được chú thích và khá nhiều bí danh. Biến có thể được đặt thành số nguyên, chuỗi hoặc giá trị Boolean
Mã:
#PKG_DBDIR = "/var/db/pkg";#PKG_CACHEDIR = "/var/cache/pkg";#PORTSDIR = "/usr/ports";#INDEXDIR = "";#INDEXFILE = "INDEX-10"; # Tự động tạo#HANDLE_RC_SCRIPTS = false;#DEFAULT_ALWAYS_YES = false;#ASSUME_ALWAYS_YES = false;. . .
pkg
trong pkg.conf
. Ở cuối pkg.conf
, bạn sẽ tìm thấy một phần có nhãn ALIAS
. Khi bạn thấy mình liên tục chạy các lệnh phức tạp, bạn nên thêm bí danh.Để biết thêm thông tin về định dạng tệp và các tùy chọn, bạn có thể tham khảo trang hướng dẫn
pkg.conf(5)
.
Mã:
man pkg.conf
Cách xem thông tin về các gói đã cài đặt
Nếu bạn quên những gói nào đã cài đặt trên hệ thống, bạn có thể sử dụng lệnhpkg info
để có danh sách đầy đủ các phần mềm đã cài đặt.
Mã:
pkg info
# atk-2.28.1 Bộ công cụ trợ năng GNOME (ATK)
# avahi-app-0.7_2 Khám phá dịch vụ trên mạng cục bộ
# ca_root_nss-3.42.1 Gói chứng chỉ gốc từ Dự án Mozilla
# . . .
# . . .
pkg info
và tên gói. Lệnh này sẽ hiển thị thông tin chi tiết về cài đặt gói trong báo cáo thân thiện với người dùng.
Mã:
pkg info nginx
# nginx-1.14.2_3,2
# Name : nginx
# Version : 1.14.2_3,2
# . . .
# . . .
pkg-info
để biết thông tin chi tiết đầy đủ.Cách xóa gói
Để xóa hoặc gỡ cài đặt các gói nhị phân, hãy sử dụng lệnh conpkg delete
. Nó cũng có sẵn dưới dạng pkg remove
.
Mã:
pkg delete nginx
# hoặc
pkg remove nginx
Nếu bạn xóa một gói mà các gói khác phụ thuộc vào,
pkg
cũng sẽ xóa các gói phụ thuộc.Cách khóa các gói
Có thể có lúc bạn muốn một gói trên máy chủ của mình không bao giờ nâng cấp. Khi bạn khóa một gói,pkg
sẽ không nâng cấp, hạ cấp, gỡ cài đặt hoặc cài đặt lại gói đó. Nó áp dụng các quy tắc tương tự cho các gói phụ thuộc và các chương trình mà nó phụ thuộc vào.Sử dụng
pkg lock
để khóa một gói.
Mã:
pkg lock openssl
openssl
này hiện đã bị khóa.Để liệt kê tất cả các gói hiện đang bị khóa trên hệ thống, hãy sử dụng cờ
-l
.
Mã:
pkg lock -l
pkg unlock
.
Mã:
pkg unlock openssl
-a
.
Mã:
pkg lock -a
pkg unlock -a
Kho lưu trữ gói
pkg
hỗ trợ kho lưu trữ gói, là các tập hợp các gói được đặt tên. Bạn có thể thêm, xóa, bật và tắt kho lưu trữ. Bạn nên cấu hình từng kho lưu trữ trong tệp riêng của nó bằng định dạng UCL. Kho lưu trữ FreeBSD chính thức nằm trong thư mục /etc/pkg
. FreeBSD được cung cấp với kho lưu trữ "FreeBSD" được bật. Bạn sẽ tìm thấy tệp cấu hình của nó trong /etc/pkg/FreeBSD.conf
.
Mã:
FreeBSD: { url: "pkg+http://pkg.FreeBSD.org/${ABI}/quarterly", mirror_type: "srv", signature_type: "fingerprints", fingerprints: "/usr/share/keys/pkg", enabled: yes}
/etc/pkg
được dành riêng cho kho lưu trữ FreeBSD chính thức, bạn sẽ cần một thư mục khác. Vị trí truyền thống là /usr/local/etc/pkg/repos
. Nếu bạn muốn sử dụng một thư mục khác, bạn sẽ cần đặt vị trí trong pkg.conf
với tùy chọn REPO_DIRS
. Theo mặc định, thư mục kho lưu trữ cục bộ không tồn tại, vì vậy bạn sẽ cần tạo nó bằng mkdir -p /usr/local/etc/pkg/repos
. Đặt cấu hình kho lưu trữ của riêng bạn vào thư mục đóVí dụ về lệnh pkg
Trong phần này, tôi sẽ liệt kê một số lệnh phụ được sử dụng phổ biến nhất mà bạn có thể sử dụng khi quản trị máy chủ FreeBSD.
Mã:
# Cài đặt gói mà không cần hỏi bất kỳ câu hỏi nào
pkg install -y package
# Tạo bản sao lưu cơ sở dữ liệu gói cục bộ
pkg backup
# Liệt kê tất cả các gói đã cài đặt
pkg info
# Hiển thị thông tin mở rộng cho một gói
pkg info package
# Tìm kiếm kho lưu trữ gói
pkg search -i package
# Hiển thị các gói có lỗ hổng bảo mật đã biết
pkg audit -F
# Hiển thị gói nào sở hữu tệp được đặt tên
pkg tệp nào
# Xóa các gói không sử dụng
pkg autoremove
# Gỡ cài đặt một gói
pkg delete package
# Xóa các gói được lưu trong bộ nhớ đệm khỏi /var/cache/pkg
pkg clean -ay
# Cập nhật bản sao cục bộ của danh mục gói
pkg update
# Nâng cấp các gói đã cài đặt lên phiên bản mới nhất
pkg upgrade
# Kiểm tra tính toàn vẹn của tất cả các gói của bạn
pkg check -saq
# Xác minh rằng các tệp của gói không bị thay đổi
pkg check -s nginx
# Hiển thị các tệp đi kèm với gói
pkg info -l nginx
# Liệt kê các gói không tự động
pkg prime-list
Kết luận
FreeBSD triển khai hai công nghệ đi kèm để cài đặt phần mềm của bên thứ ba: FreeBSD Ports Collection, để cài đặt từ nguồn và các gói, để cài đặt từ các tệp nhị phân được dựng sẵn. Nhưng vì FreeBSD đang chuyển hệ thống theo hướng quản lý gói chung một cách quyết đoán hơn, bạn nên cố gắng quản lý phần mềm của bên thứ ba bằngpkg
càng nhiều càng tốt. Tránh sử dụng các cổng trừ khi phần mềm bạn muốn không có phiên bản đóng gói hoặc bạn cần tùy chỉnh các tùy chọn thời gian biên dịch.