Quản lý gói Linux với Yum, RPM, Apt, Dpkg, Zypper và Aptitude command

Hôm nay trong bài viết này chúng tôi sẽ hướng dẫn bạn về quản lý gói Linux với Yum, RPM, Apt, Dpkg, Zypper và Aptitude command, điều đó được yêu cầu để thi chứng chỉ LFCS. Vào tháng 8 năm ngoái, Linux Foundation đã công bố chứng chỉ LFCS (Linux Foundation Certified Sysadmin), một cơ hội rực rỡ cho các quản trị viên hệ thống trên toàn thế giới để chứng minh, thông qua một kỳ thi dựa trên hiệu suất, rằng họ có khả năng thành công trong việc hỗ trợ hoạt động tổng thể cho các hệ thống Linux. Một Sysadmin được chứng chỉ bởi Linux Foundation có chuyên môn để đảm bảo hỗ trợ hệ thống hiệu quả, sự gỡ lỗi và giám sát cấp đầu, bao gồm việc gửi các vấn đề cuối cùng lên các nhóm hỗ trợ kỹ thuật khi cần.

Linux Package Management
Linux Foundation Certified Sysadmin

Quản lý gói

Với vài từ, quản lý gói là phương pháp cài đặt và duy trì (bao gồm cập nhật và có thể loại bỏ) phần mềm trên hệ thống.

Trong những ngày đầu của Linux, các chương trình chỉ được phân phối dưới dạng mã nguồn, cùng với các trang man cần thiết, các tệp cấu hình và nhiều hơn nữa. Ngày nay, hầu hết các nhà phân phối Linux mặc định sử dụng các chương trình đã được xây dựng sẵn hoặc các bộ chương trình gọi là gói, được trình bày cho người dùng để cài đặt trên nhân bản phân phối đó. Tuy nhiên, một trong những điều kỳ diệu của Linux vẫn là khả năng có được mã nguồn của một chương trình để nghiên cứu, cải tiến và biên dịch.

Cách thức làm việc của hệ thống quản lý gói

Nếu một gói nhất định yêu cầu một tài nguyên nhất định như một thư viện chia sẻ hoặc một gói khác, nó được cho là có phụ thuộc. Tất cả các hệ thống quản lý gói hiện đại đều cung cấp một phương pháp giải quyết phụ thuộc để đảm bảo khi cài đặt một gói, tất cả các phụ thuộc của nó cũng được cài đặt.

Hệ thống đóng gói

Hầu hết (nếu không phải tất cả) phần mềm được cài đặt trên một hệ thống Linux hiện đại sẽ được tìm thấy trên Internet. Nó có thể được cung cấp bởi nhà phân phối thông qua các kho trung tâm (có thể chứa hàng nghìn gói, mỗi gói được xây dựng, kiểm tra và bảo trì một cách đặc biệt cho nhà phân phối) hoặc có sẵn dưới dạng mã nguồn có thể tải xuống và cài đặt thủ công.

Bởi vì các gia đình phân phối khác nhau sử dụng các hệ thống đóng gói khác nhau (Debian: *.deb / CentOS: *.rpm / openSUSE: *.rpm được xây dựng đặc biệt cho openSUSE), một gói dành cho một phân phối sẽ không tương thích với một phân phối khác. Tuy nhiên, hầu hết các phân phối rất có thể thuộc vào một trong ba gia đình phân phối được bao gồm trong chứng chỉ LFCS.

Công cụ gói cấp cao và cấp thấp

Để thực hiện công việc quản lý gói một cách hiệu quả, bạn cần nhận ra rằng bạn sẽ có hai loại tiện ích có sẵn: công cụ cấp thấp (xử lý phía sau việc cài đặt thực tế, nâng cấp và gỡ bỏ tệp gói) và công cụ cấp cao (đảm bảo các nhiệm vụ giải quyết phụ thuộc và tìm kiếm siêu dữ liệu - "dữ liệu về dữ liệu" - được thực hiện).

DISTRIBUTION LOW-LEVEL TOOL HIGH-LEVEL TOOL
 Debian và các phân phối phái sinh  dpkg  apt-get / aptitude
 CentOS  rpm  yum
 openSUSE  rpm  zypper

Hãy xem mô tả của công cụ cấp thấp và cấp cao.

dpkg là một trình quản lý gói cấp thấp cho các hệ thống dựa trên Debian. Nó có thể cài đặt, gỡ bỏ, cung cấp thông tin về và xây dựng các gói *.deb nhưng nó không thể tự động tải xuống và cài đặt các phụ thuộc tương ứng của chúng.

apt-get là một trình quản lý gói cấp cao cho Debian và các phân phối phái sinh, và cung cấp một cách đơn giản để truy xuất và cài đặt các gói, bao gồm việc giải quyết phụ thuộc, từ nhiều nguồn bằng dòng lệnh. Khác với dpkg, apt-get không làm việc trực tiếp với các tệp *.deb, mà là với tên gói chính thức.

aptitude command là một trình quản lý gói cấp cao khác cho các hệ thống dựa trên Debian, và có thể được sử dụng để thực hiện các nhiệm vụ quản lý (cài đặt, nâng cấp và gỡ bỏ gói, cũng xử lý giải quyết phụ thuộc tự động) một cách nhanh chóng và dễ dàng. Nó cung cấp cùng chức năng với apt-get và các chức năng bổ sung, như cung cấp truy cập đến một số phiên bản của gói.

rpm là hệ thống quản lý gói được sử dụng bởi các bản phù hợp với Linux Standard Base (LSB) để xử lý cấp thấp của gói. Giống như dpkg, nó có thể truy vấn, cài đặt, xác minh, nâng cấp và gỡ bỏ gói, và được sử dụng thường xuyên hơn bởi các phân phối dựa trên Fedora, chẳng hạn như RHEL và CentOS.

yum thêm chức năng cập nhật tự động và quản lý gói với quản lý phụ thuộc vào các hệ thống dựa trên RPM. Là một công cụ cấp cao, giống như apt-get hoặc aptitude, yum hoạt động với các kho lưu trữ.

Cách sử dụng phổ biến của các công cụ cấp thấp

Các nhiệm vụ phổ biến nhất mà bạn sẽ thực hiện với các công cụ cấp thấp như sau:

1. Cài đặt một gói từ tệp đã biên dịch (*.deb hoặc *.rpm)

Hạn chế của phương pháp cài đặt này là không cung cấp giải quyết phụ thuộc. Bạn có thể lựa chọn cài đặt một gói từ tệp đã biên dịch khi gói đó không có sẵn trong các kho trung tâm của phân phối và do đó không thể được tải xuống và cài đặt thông qua công cụ cấp cao. Vì công cụ cấp thấp không thực hiện giải quyết phụ thuộc, chúng sẽ thoát với lỗi nếu chúng ta cố gắng cài đặt một gói có phụ thuộc chưa đáp ứng.

# dpkg -i file.deb 		[Debian and derivative]
# rpm -i file.rpm 		[CentOS / openSUSE]

Lưu ý: Không cố gắng cài đặt một tệp *.rpm được biên dịch cho openSUSE trên CentOS hoặc ngược lại!

2. Nâng cấp gói từ một tệp đã biên dịch

Một lần nữa, bạn chỉ nâng cấp một gói đã được cài đặt thủ công khi nó không có sẵn trong các kho trung tâm.

# dpkg -i file.deb 		[Debian and derivative]
# rpm -U file.rpm 		[CentOS / openSUSE]

3. Liệt kê các gói đã cài đặt

Khi bạn đầu tiên tiếp xúc với một hệ thống đang hoạt động, các khả năng là bạn muốn biết những gói nào đã cài đặt.

# dpkg -l 		[Debian and derivative]
# rpm -qa 		[CentOS / openSUSE]

Nếu bạn muốn biết xem một gói cụ thể đã được cài đặt hay không, bạn có thể pipe kết quả của các lệnh trên với grep, như đã giải thích trong manipulate files in Linux - Phần 1 của chuỗi bài viết này. Giả sử chúng tôi cần xác minh xem gói mysql-common đã được cài đặt trên một hệ thống Ubuntu.

# dpkg -l | grep mysql-common
Check Installed Packages in Linux
Check Installed Packages

Cách khác để xác định một gói đã được cài đặt.

# dpkg --status package_name 		[Debian and derivative]
# rpm -q package_name 			[CentOS / openSUSE]

Ví dụ, hãy tìm hiểu xem gói sysdig đã được cài đặt trên hệ thống của chúng ta hay chưa.

# rpm -qa | grep sysdig
Check sysdig Package
Kiểm tra gói sysdig

4. Tìm hiểu gói nào đã cài đặt một tệp

# dpkg --search file_name
# rpm -qf file_name

Ví dụ, gói nào đã cài đặt pw_dict.hwm?

# rpm -qf /usr/share/cracklib/pw_dict.hwm
Query File in Linux
Tệp truy vấn trong Linux

Cách sử dụng phổ biến của các công cụ cấp cao

Các nhiệm vụ phổ biến nhất mà bạn sẽ thực hiện với các công cụ cấp cao như sau.

1. Tìm kiếm một gói

aptitude update sẽ cập nhật danh sách các gói có sẵn và aptitude search sẽ thực hiện tìm kiếm thực sự cho tên_gói.

# aptitude update && aptitude search package_name 

Trong tùy chọn tìm kiếm tất cả, yum sẽ tìm kiếm tên_gói không chỉ trong tên gói mà còn trong mô tả gói.

# yum search package_name
# yum search all package_name
# yum whatprovides “*/package_name”

Hãy giả sử rằng chúng tôi cần một tệp có tên sysdig. Để biết được gói chúng tôi sẽ cài đặt, hãy chạy.

# yum whatprovides “*/sysdig”
Check Package Description in Linux
Kiểm tra mô tả gói

whatprovides cho yum biết tìm kiếm gói sẽ cung cấp một tệp khớp với biểu thức chính quy trên.

# zypper refresh && zypper search package_name		[On openSUSE]

2. Cài đặt một gói từ kho lưu trữ

Khi cài đặt một gói, bạn có thể được yêu cầu xác nhận việc cài đặt sau khi quản lý gói đã giải quyết tất cả các phụ thuộc. Lưu ý rằng việc chạy cập nhật hoặc làm mới (tuỳ thuộc vào trình quản lý gói đang được sử dụng) không bắt buộc nhưng việc giữ các gói đã cài đặt lên đến ngày là một phong cách quản trị hệ thống tốt cho lý do bảo mật và phụ thuộc.

# aptitude update && aptitude install package_name 		[Debian and derivatives]
# yum update && yum install package_name 			[CentOS]
# zypper refresh && zypper install package_name 		[openSUSE]

3. Gỡ bỏ một gói

Tùy chọn gỡ bỏ sẽ gỡ cài đặt gói nhưng giữ nguyên các tệp cấu hình, trong khi xoá sẽ xóa mọi v trace ủa chương trình khỏi hệ thống của bạn.

---Notice the minus sign in front of the package that will be uninstalled, openSUSE ---

# zypper remove -package_name 

Hầu hết (nếu không phải tất cả) các trình quản lý gói sẽ yêu cầu bạn, theo mặc định, xác nhận xem bạn chắc chắn về việc tiếp tục việc gỡ cài đặt trước khi thực hiện nó. Vì vậy, hãy đọc cẩn thận các thông báo trên màn hình để tránh gặp phải rắc rối không cần thiết!

4. Hiển thị thông tin về một gói

Lệnh sau sẽ hiển thị thông tin về gói birthday.

# aptitude show birthday 
# yum info birthday
# zypper info birthday
Check Package Information in Linux
Kiểm tra thông tin gói

Quản lý gói là một điều bạn không thể bỏ qua như một quản trị viên hệ thống với Yum, RPM, Apt, Dpkg, Zypper và Aptitude command. Bạn nên sẵn sàng sử dụng các công cụ được mô tả trong bài viết này ngay lập tức. Hy vọng bạn tìm nó hữu ích trong quá trình chuẩn bị cho kỳ thi LFCS và các nhiệm vụ hàng ngày của bạn.