Thứ hai, 04/01/2016 | 00:00 GMT+7

Kiến thức cơ bản về quản lý gói: apt, yum, dnf, pkg

Hầu hết các hệ điều hành giống Unix hiện đại đều cung cấp một cơ chế tập trung để tìm và cài đặt phần mềm. Phần mềm thường được phân phối dưới dạng gói , được lưu giữ trong các kho . Làm việc với các gói được gọi là quản lý gói . Các gói cung cấp các thành phần cơ bản của hệ điều hành, cùng với các thư viện, ứng dụng, dịch vụ và tài liệu được chia sẻ.

Một hệ thống quản lý gói thực hiện nhiều hơn việc cài đặt phần mềm một lần. Nó cũng cung cấp các công cụ để nâng cấp các gói đã được cài đặt sẵn. Repository giúp đảm bảo mã đã được kiểm tra để sử dụng trên hệ thống của bạn và các version phần mềm được cài đặt đã được các nhà phát triển và người bảo trì gói chấp thuận.

Khi cấu hình server hoặc môi trường phát triển, điều cần thiết là phải nhìn xa hơn các repository chính thức. Các gói trong bản phát hành ổn định của bản phân phối có thể đã lỗi thời, đặc biệt khi có liên quan đến phần mềm mới hoặc thay đổi nhanh chóng. Tuy nhiên, quản lý gói là một kỹ năng quan trọng đối với administrator và nhà phát triển hệ thống, và sự phong phú của phần mềm đóng gói cho các bản phân phối lớn là một nguồn tài nguyên to lớn.

Hướng dẫn này nhằm mục đích tham khảo nhanh các nguyên tắc cơ bản về tìm kiếm, cài đặt và nâng cấp các gói trên nhiều bản phân phối và sẽ giúp bạn dịch kiến thức đó giữa các hệ thống.

Hệ thống quản lý gói: Tổng quan ngắn gọn

Hầu hết các hệ thống gói được xây dựng xung quanh các bộ sưu tập các file gói. Tệp gói thường là một repository chứa các file binary đã biên dịch và các tài nguyên khác tạo nên phần mềm, cùng với các lệnh cài đặt . Các gói cũng chứa metadata có giá trị, bao gồm các phần phụ thuộc của chúng, danh sách các gói khác được yêu cầu để cài đặt và chạy chúng.

Mặc dù chức năng và lợi ích của chúng rất giống nhau, nhưng các định dạng và công cụ đóng gói khác nhau tùy theo nền tảng:

Hệ điều hành định dạng Công cụ)
Debian .deb apt , apt-cache , apt-get , dpkg
Ubuntu .deb apt , apt-cache , apt-get , dpkg
CentOS .rpm yum
Fedora .rpm dnf
FreeBSD Cổng, .txz make , pkg

Trong Debian và các hệ thống dựa trên nó, như Ubuntu, Linux Mint và Raspbian, định dạng gói là file .deb . APT, Công cụ đóng gói nâng cao, cung cấp các lệnh được sử dụng cho hầu hết các hoạt động phổ biến: Tìm kiếm repository , cài đặt bộ sưu tập các gói và các gói phụ thuộc của chúng và quản lý nâng cấp. Các lệnh APT hoạt động như một giao diện user cho tiện ích dpkg cấp thấp hơn, tiện ích này xử lý việc cài đặt các file .deb riêng lẻ trên hệ thống local và đôi khi được gọi trực tiếp.

Các bản phát hành gần đây của hầu hết các bản phân phối có nguồn root từ Debian bao gồm apt , lệnh này cung cấp một giao diện ngắn gọn và thống nhất cho các hoạt động phổ biến mà trước đây thường được xử lý bởi apt-getapt-cache . Việc sử dụng nó là tùy chọn, nhưng có thể đơn giản hóa một số tác vụ.

CentOS, Fedora và các thành viên khác của gia đình Red Hat sử dụng file RPM. Trong CentOS, yum được sử dụng để tương tác với cả file gói và repository riêng lẻ.

Trong các version gần đây của Fedora, yum đã được thay thế bởi dnf , một fork hiện đại hóa giữ lại hầu hết giao diện của yum .

Hệ thống gói binary của FreeBSD được quản lý bằng lệnh pkg . FreeBSD cũng cung cấp Bộ sưu tập cổng, một cấu trúc folder local và các công cụ cho phép user tìm nạp, biên dịch và cài đặt các gói trực tiếp từ nguồn bằng Makefiles. Thông thường, việc sử dụng pkg sẽ thuận tiện hơn nhiều, nhưng đôi khi không có gói được biên dịch trước hoặc bạn có thể cần thay đổi tùy chọn thời gian biên dịch.

Cập nhật danh sách gói

Hầu hết các hệ thống giữ một database local của các gói có sẵn từ các repository từ xa. Tốt nhất bạn nên cập nhật database này trước khi cài đặt hoặc nâng cấp các gói. Là một ngoại lệ một phần cho mẫu này, yumdnf sẽ kiểm tra các bản cập nhật trước khi thực hiện một số thao tác, nhưng bạn có thể hỏi họ bất kỳ lúc nào xem bản cập nhật có sẵn hay không.

Hệ thống Chỉ huy
Debian / Ubuntu sudo apt-get update
sudo apt update
CentOS yum check-update
Fedora dnf check-update
Gói FreeBSD sudo pkg update
Cổng FreeBSD sudo portsnap fetch update

Nâng cấp các gói đã cài đặt

Đảm bảo rằng tất cả phần mềm được cài đặt trên máy luôn được cập nhật sẽ là một công việc to lớn mà không cần hệ thống gói. Bạn sẽ phải theo dõi các thay đổi ngược dòng và cảnh báo bảo mật cho hàng trăm gói khác nhau. Mặc dù trình quản lý gói không giải quyết được mọi vấn đề bạn gặp phải khi nâng cấp phần mềm, nhưng nó cho phép bạn duy trì hầu hết các thành phần hệ thống bằng một vài lệnh.

Trên FreeBSD, việc nâng cấp các cổng đã cài đặt có thể gây ra các thay đổi đột phá hoặc yêu cầu các bước cấu hình thủ công. Tốt nhất nên đọc /usr/ports/UPDATING trước khi nâng cấp với portmaster .

Hệ thống Chỉ huy Ghi chú
Debian / Ubuntu sudo apt-get upgrade Chỉ nâng cấp các gói đã cài đặt, nếu có thể.
sudo apt-get dist-upgrade Có thể thêm hoặc bớt các gói để đáp ứng các phụ thuộc mới.
sudo apt upgrade Giống như apt-get upgrade .
sudo apt full-upgrade Giống như apt-get dist-upgrade .
CentOS sudo yum update
Fedora sudo dnf upgrade
Gói FreeBSD sudo pkg upgrade
Cổng FreeBSD less /usr/ports/UPDATING Sử dụng less để xem ghi chú cập nhật cho các cổng (sử dụng phím mũi tên để cuộn, nhấn q để thoát).
cd /usr/ports/ports-mgmt/portmaster && sudo make install && sudo portmaster -a Cài đặt portmaster và sử dụng nó để cập nhật các cổng đã cài đặt.

Tìm một gói

Hầu hết các bản phân phối đều cung cấp giao diện user đồ họa hoặc hướng menu cho các bộ sưu tập gói. Đây có thể là một cách tốt để duyệt theo danh mục và khám phá phần mềm mới. Tuy nhiên, thông thường, cách nhanh nhất và hiệu quả nhất để định vị một gói là tìm kiếm bằng các công cụ dòng lệnh.

Hệ thống Chỉ huy Ghi chú
Debian / Ubuntu apt-cache search search_string
apt search search_string
CentOS yum search search_string
yum search all search_string Tìm kiếm tất cả các trường, bao gồm cả mô tả.
Fedora dnf search search_string
dnf search all search_string Tìm kiếm tất cả các trường, bao gồm cả mô tả.
Gói FreeBSD pkg search search_string Tìm kiếm theo tên.
pkg search -f search_string Tìm kiếm theo tên, trả về mô tả đầy đủ.
pkg search -D search_string Tìm kiếm mô tả.
Cổng FreeBSD cd /usr/ports && make search name= package Tìm kiếm theo tên.
cd /usr/ports && make search key= search_string Tìm kiếm comment , mô tả và phần phụ thuộc.

Xem thông tin về một gói cụ thể

Khi quyết định cài đặt những gì, thường sẽ hữu ích khi đọc mô tả chi tiết về các gói. Cùng với văn bản mà con người có thể đọc được, chúng thường bao gồm metadata như số version và danh sách các gói phụ thuộc.

Hệ thống Chỉ huy Ghi chú
Debian / Ubuntu apt-cache show package Hiển thị thông tin được lưu trong bộ nhớ cache local về một gói.
apt show package
dpkg -s package Hiển thị trạng thái được cài đặt hiện tại của một gói.
CentOS yum info package
yum deplist package Liệt kê các phần phụ thuộc cho một gói.
Fedora dnf info package
dnf repoquery --requires package Liệt kê các phần phụ thuộc cho một gói.
Gói FreeBSD pkg info package Hiển thị thông tin cho một gói đã cài đặt.
Cổng FreeBSD cd /usr/ports/ category / port && cat pkg-descr

Cài đặt một Gói từ Kho

Khi bạn biết tên của một gói, bạn thường có thể cài đặt nó và các phụ thuộc của nó bằng một lệnh duy nhất. Nói chung, bạn có thể cung cấp nhiều gói để cài đặt đơn giản bằng cách liệt kê tất cả.

Hệ thống Chỉ huy Ghi chú
Debian / Ubuntu sudo apt-get install package
sudo apt-get install package1 package2 ... Cài đặt tất cả các gói được liệt kê.
sudo apt-get install -y package Giả sử "có" trong đó apt thường nhắc tiếp tục.
sudo apt install package Hiển thị thanh tiến trình màu.
CentOS sudo yum install package
sudo yum install package1 package2 ... Cài đặt tất cả các gói được liệt kê.
sudo yum install -y package Giả sử “yes” trong đó yum thường nhắc tiếp tục.
Fedora sudo dnf install package
sudo dnf install package1 package2 ... Cài đặt tất cả các gói được liệt kê.
sudo dnf install -y package Giả sử “yes” trong đó dnf thường nhắc tiếp tục.
Gói FreeBSD sudo pkg install package
sudo pkg install package1 package2 ... Cài đặt tất cả các gói được liệt kê.
Cổng FreeBSD cd /usr/ports/ category / port && sudo make install Xây dựng và cài đặt một cổng từ nguồn.

Cài đặt gói từ Hệ thống file local

Đôi khi, ngay cả khi phần mềm không được đóng gói chính thức cho một hệ điều hành nhất định, nhà phát triển hoặc nhà cung cấp sẽ cung cấp các file gói để download . Bạn thường có thể truy xuất những thứ này bằng trình duyệt web của bạn hoặc thông qua curl trên dòng lệnh. Khi một gói nằm trên hệ thống đích, nó thường có thể được cài đặt bằng một lệnh duy nhất.

Trên các hệ thống có nguồn root Debian, dpkg xử lý các file gói riêng lẻ. Nếu một gói có các phần phụ thuộc chưa được đáp ứng, gdebi thường được dùng để lấy chúng từ các repository chính thức.

Trên hệ thống CentOS và Fedora, yumdnf được sử dụng để cài đặt các file riêng lẻ và cũng sẽ xử lý các phần phụ thuộc cần thiết.

Hệ thống Chỉ huy Ghi chú
Debian / Ubuntu sudo dpkg -i package.deb
sudo apt-get install -y gdebi && sudo gdebi package.deb Cài đặt và sử dụng gdebi để cài đặt package.deb và truy xuất bất kỳ phần phụ thuộc nào bị thiếu.
CentOS sudo yum install package.rpm
Fedora sudo dnf install package.rpm
Gói FreeBSD sudo pkg add package.txz
sudo pkg add -f package.txz Cài đặt gói ngay cả khi đã được cài đặt.

Xóa một hoặc nhiều gói đã cài đặt

Vì trình quản lý gói biết những file nào được cung cấp bởi một gói nhất định, nên nó thường có thể xóa chúng khỏi hệ thống một cách sạch sẽ nếu phần mềm không còn cần thiết nữa.

Hệ thống Chỉ huy Ghi chú
Debian / Ubuntu sudo apt-get remove package
sudo apt remove package
sudo apt-get autoremove Loại bỏ các gói không cần thiết.
CentOS sudo yum remove package
Fedora sudo dnf erase package
Gói FreeBSD sudo pkg delete package
sudo pkg autoremove Loại bỏ các gói không cần thiết.
Cổng FreeBSD sudo pkg delete package
cd /usr/ports/ path_to_port && make deinstall Hủy cài đặt một cổng đã cài đặt.

Lệnh apt

Administrator của các bản phân phối Debian-family thường quen thuộc với apt-getapt-cache . Ít được biết đến hơn là giao diện apt đơn giản hóa, được thiết kế đặc biệt để sử dụng tương tác.

Lệnh truyền thống apt Tương đương
apt-get update apt update
apt-get dist-upgrade apt full-upgrade
apt-cache search string apt search string
apt-get install package apt install package
apt-get remove package apt remove package
apt-get purge package apt purge package

Mặc dù apt thường là cách viết tắt nhanh hơn cho một thao tác nhất định, nhưng nó không nhằm mục đích thay thế hoàn toàn cho các công cụ truyền thống và giao diện của nó có thể thay đổi giữa các version để cải thiện khả năng sử dụng. Nếu bạn đang sử dụng các lệnh quản lý gói bên trong một tập lệnh hoặc một đường ống shell , bạn nên gắn bó với apt-getapt-cache .

Được giúp đỡ

Ngoài tài liệu dựa trên web, hãy nhớ rằng các trang hướng dẫn Unix (thường được gọi là trang người ) có sẵn cho hầu hết các lệnh từ shell.Để đọc một trang, hãy sử dụng man :

  • man page

man , bạn có thể chuyển bằng các phím mũi tên. Nhấn / để tìm kiếm văn bản trong trang và q để thoát.

Hệ thống Chỉ huy Ghi chú
Debian / Ubuntu man apt-get Cập nhật database gói local và làm việc với các gói.
man apt-cache Truy vấn database gói local .
man dpkg Làm việc với các file gói riêng lẻ và truy vấn các gói đã cài đặt.
man apt Làm việc với giao diện ngắn gọn, thân thiện hơn với hầu hết các thao tác cơ bản.
CentOS man yum
Fedora man dnf
Gói FreeBSD man pkg Làm việc với các gói binary được biên dịch trước.
Cổng FreeBSD man ports Làm việc với Bộ sưu tập cổng.

Kết luận và Đọc thêm

Hướng dẫn này cung cấp một cái nhìn tổng quan về các hoạt động cơ bản có thể được tham chiếu chéo giữa các hệ thống, nhưng chỉ làm xước bề mặt của một chủ đề phức tạp. Để biết thêm chi tiết về một hệ thống nhất định, bạn có thể tham khảo các tài nguyên sau:


Tags:

Các tin liên quan