Quản lý Gói Linux Toàn Tập: Từ RPM, DPKG đến APT & Tối Ưu Hệ Thống

·

8 min read

Cover Image for Quản lý Gói Linux Toàn Tập: Từ RPM, DPKG đến APT & Tối Ưu Hệ Thống

Việc cài đặt, cập nhật và gỡ bỏ phần mềm là một phần không thể thiếu khi làm việc với bất kỳ hệ điều hành nào, và Linux cũng không ngoại lệ. Tuy nhiên, cách Linux xử lý các tác vụ này thông qua trình quản lý gói (Package Manager) lại vô cùng mạnh mẽ và linh hoạt. Hiểu rõ về quản lý gói không chỉ giúp bạn dễ dàng cài đặt ứng dụng mà còn là chìa khóa để duy trì một hệ thống Linux ổn định và an toàn.

Trình quản lý gói là gì? Tại sao lại quan trọng?

Trình quản lý gói là một bộ công cụ phần mềm tự động hóa quá trình cài đặt, cấu hình, cập nhật và gỡ bỏ các gói phần mềm trên hệ điều hành Linux. Mỗi bản phân phối (distro) Linux thường có trình quản lý gói riêng, vì vậy việc hiểu rõ bạn đang làm việc với hệ thống nào là rất quan trọng.

Hai hệ thống quản lý gói chính trên Linux là RPM (RedHat Package Manager)Debian (DEB). Thậm chí, bạn có thể chuyển đổi giữa các định dạng này bằng công cụ như alien.

Khám phá RPM (RedHat Package Manager)

Ban đầu được phát triển bởi RedHat, RPM sau đó đã được phát hành dưới giấy phép GPL, cho phép sử dụng rộng rãi trong nhiều bản phân phối khác. RPM hỗ trợ cài đặt, nâng cấp, gỡ bỏ và cấu hình gói, nhưng có một hạn chế là không tự động tải về và cài đặt các gói phụ thuộc (dependencies) còn thiếu từ internet.

Quy ước đặt tên gói RPM: packagename-a.b.c-x.arch.rpm

  • packagename: Tên gói (ví dụ: firefox).

  • a.b.c: Số phiên bản của gói (ví dụ: 84.0.2).

  • x: Số bản vá hoặc thay đổi nhỏ từ người bảo trì gói (ví dụ: fc34).

  • arch: Kiến trúc của gói (ví dụ: x86_64 cho Intel 64bit).

Các lệnh rpm cơ bản: Cấu trúc: rpm [operation] [option] [package file].

  • -i: Cài đặt một gói mới.

  • -U: Cài đặt gói mới hoặc nâng cấp gói đã có.

  • -F: Chỉ nâng cấp nếu phiên bản cũ hơn đã tồn tại.

  • -q: Truy vấn thông tin gói.

  • -v: Xác minh gói.

  • -e: Gỡ cài đặt gói.

  • --rebuilddb: Xây dựng lại cơ sở dữ liệu RPM để sửa lỗi.

Tìm hiểu DPKG (Debian Package Manager)

dpkg là trình quản lý gói cấp thấp, nền tảng cho các hệ thống Debian và các bản phân phối dựa trên Debian (như Ubuntu). Nó dùng để cài đặt, gỡ bỏ và cung cấp thông tin về các gói .deb. Tương tự RPM, dpkg yêu cầu tệp gói phải có sẵn cục bộ và không tự động xử lý các gói phụ thuộc từ internet.

Cấu trúc lệnh dpkg: dpkg [option] [action] [packagefile | packagename].

Các action chính của dpkg:

  • -i: Cài đặt một gói.

  • -r: Xóa một gói (giữ lại file cấu hình).

  • -P: Xóa hoàn toàn một gói (bao gồm cả file cấu hình).

  • --configure: Cấu hình lại gói đã cài đặt.

  • -I (hoặc --info): Hiển thị thông tin về một gói (tệp .deb).

  • -p (hoặc --print-avail thường đi với tên gói đã cài): Hiển thị thông tin về một gói đã cài đặt. (Lưu ý: tài liệu gốc ghi -I cho gói đã gỡ và -p cho gói đã cài, nhưng thực tế -I dùng cho file .deb và dpkg -s hoặc dpkg --status thường dùng cho gói đã cài.)

APT (Advanced Package Tool): Sức mạnh quản lý gói hiện đại

APT là trình quản lý gói phổ biến trên Ubuntu, Debian và các dẫn xuất. Nó được xây dựng dựa trên dpkg nhưng thông minh hơn nhiều, đặc biệt là khả năng tự động tải và cài đặt các gói phụ thuộc từ internet. APT bao gồm hai công cụ chính: apt-get (hoặc apt hiện đại hơn) và apt-cache.

  • apt-get / apt: Dùng để cài đặt, xóa, nâng cấp phần mềm và thậm chí nâng cấp toàn bộ hệ điều hành.

  • apt-cache: Dùng để tìm kiếm gói, thu thập thông tin và kiểm tra các gói có sẵn.

Truy vấn thông tin gói đã cài đặt

Với RPM:

  • rpm -qa: Liệt kê tất cả các gói đã cài đặt.

  • rpm -qa --last: Hiển thị các gói cài đặt gần đây nhất.

  • rpm -qi packagename: Hiển thị thông tin chi tiết của một gói.

  • rpm -q packagename: Kiểm tra nhanh một gói đã cài đặt chưa và phiên bản.

Với DPKG:

  • dpkg -l: Liệt kê tất cả các gói đã cài đặt.

  • dpkg -l packagename: Hiển thị thông tin của một gói cụ thể.

  • dpkg --status packagename (hoặc dpkg -s packagename): Hiển thị thông tin chi tiết về một gói đã cài (tên, trạng thái, dung lượng, kiến trúc, mô tả). (Lưu ý: Tài liệu ghi dpkg –search packagename, nhưng –search dùng để tìm gói sở hữu một file, –status hoặc -s chính xác hơn cho việc hiển thị thông tin gói đã cài.)

Với APT:

  • apt-cache pkgnames: Liệt kê tên tất cả các gói có sẵn (không chỉ đã cài đặt). Để liệt kê gói đã cài dùng apt list --installed.

  • apt-cache search keyword: Tìm kiếm gói dựa trên từ khóa trong tên và mô tả.

  • apt-cache pkgnames prefix: Tìm các gói có tên bắt đầu bằng một tiền tố (ví dụ: apt-cache pkgnames vsftpd).

  • apt-cache show packagename: Hiển thị thông tin chi tiết về một gói (tên, kiến trúc, phiên bản, dung lượng,...).

Hướng dẫn cài đặt gói phần mềm

Cài đặt gói RPM:

  1. Tải tệp .rpm về máy cục bộ. Nếu không có trình duyệt, dùng wget linkdownload.rpm. Nếu wget chưa có, cài bằng sudo yum install wget (trên CentOS/RHEL).

  2. Cài đặt: sudo rpm -i packagename.rpm.

  3. Hiển thị quá trình cài đặt chi tiết: sudo rpm -ivh packagename.rpm (-h hiển thị dấu #, -v hiển thị phần trăm).

  4. Sử dụng -U để cài mới hoặc nâng cấp: sudo rpm -Uvh packagename.rpm.

Cài đặt gói DPKG:

  • Lệnh: sudo dpkg -i packagefile.deb. Gói phải có sẵn trên máy cục bộ.

Cài đặt gói với APT:

  • Lệnh cơ bản: sudo apt install packagename.

  • Tự động chấp nhận: sudo apt install -y packagename.

  • Cài nhiều gói: sudo apt install <package1> <package2>.

  • Cài phiên bản cụ thể: sudo apt install packagename=version.

Nâng cấp gói phần mềm

Nâng cấp gói RPM:

  • Lệnh: sudo rpm -U packagefile.rpm. Gói phải có sẵn cục bộ. (Lưu ý: Nguồn [45] nói về cài đặt nhiều package với apt, nguồn [46] mới chính xác về update RPM).

Nâng cấp gói DPKG:

  • Lệnh: sudo dpkg -i packagefile.deb. Nếu gói là phiên bản mới hơn, dpkg sẽ thực hiện nâng cấp. Nếu lỗi, có thể gói đó không phải là gói nâng cấp chuẩn.

Nâng cấp với APT:

  1. Cập nhật danh sách gói từ kho lưu trữ: sudo apt-get update (hoặc sudo apt update).

    • Hit: Không có cập nhật mới cho gói đó từ repository.

    • Ign: Gói bị bỏ qua (có thể do lỗi hoặc không còn hỗ trợ).

    • Get: Có phiên bản mới, dung lượng được ghi sau cùng.

  2. Liệt kê các gói có thể nâng cấp: sudo apt list --upgradable.

  3. Kiểm tra cập nhật cho gói cụ thể: apt list --upgradable | grep packagename (Lưu ý: Tài liệu ghi egrep, grep cũng hoạt động).

  4. Nâng cấp tất cả các gói: sudo apt-get upgrade (hoặc sudo apt upgrade).

  5. Chỉ nâng cấp một gói cụ thể: sudo apt-get --only-upgrade install packagename (hoặc sudo apt install --only-upgrade packagename).

Tầm quan trọng của /etc/apt/sources.list:

💡
Kho lưu trữ của Ubuntu được chuyển sang lưu trữ tại: /etc/apt/sources.list.d/ubuntu.sources nhằm mục đích giúp nó trở nên mạnh mẽ, linh hoạt và dễ bảo trì hơn cho cả người dùng và nhà phát triển. Tệp sources.list cũ vẫn được hỗ trợ để đảm bảo tính tương thích ngược, nhưng định dạng .sources mới là phương pháp được khuyến nghị cho các phiên bản Ubuntu mới hơn.
  • Đây là tệp chứa danh sách các kho lưu trữ (repositories) mà APT sử dụng để tải và cập nhật gói trên hệ thống Debian/Ubuntu.

  • Chỉ nên thêm các nguồn đáng tin cậy, vì nguồn không an toàn có thể gây rủi ro bảo mật cho hệ thống.

  • Cú pháp một dòng trong sources.list: deb uri distribution [component1] [component2] ... hoặc deb-src uri distribution [component1] [component2] ....

    • deb: Nguồn cho gói nhị phân (binary).

    • deb-src: Nguồn cho mã nguồn (source code).

    • uri: Địa chỉ web của kho lưu trữ (ví dụ: http://archive.ubuntu.com/ubuntu/).

    • distribution: Tên mã của phiên bản HĐH (ví dụ: bionic cho Ubuntu 18.04, xenial cho Ubuntu 16.04).

    • component: Thành phần của kho lưu trữ (ví dụ: main, universe, restricted, multiverse).

Gỡ bỏ gói phần mềm

Gỡ bỏ gói RPM:

  • Lệnh cơ bản: rpm -e packagename.

  • Gỡ bỏ không kiểm tra gói phụ thuộc: rpm -e --nodeps packagename.

  • Kiểm tra trước khi gỡ (không thực hiện): rpm -e --test packagename.

Gỡ bỏ gói DPKG:

  • Gỡ bỏ gói (giữ lại file cấu hình): sudo dpkg -r packagename.

  • Gỡ bỏ hoàn toàn (bao gồm file cấu hình): sudo dpkg -P packagename (hoặc sudo dpkg --purge packagename).

Gỡ bỏ gói với APT:

  • Gỡ bỏ gói (giữ lại file cấu hình): sudo apt-get remove packagename (hoặc sudo apt remove packagename).

  • Gỡ bỏ nhiều gói: sudo apt-get remove pkg1 pkg2.

  • Gỡ bỏ hoàn toàn (bao gồm file cấu hình): sudo apt-get purge packagename (hoặc sudo apt purge packagename).

  • Gỡ bỏ các gói phụ thuộc không còn sử dụng: sudo apt-get autoremove (hoặc sudo apt autoremove).

Kết luận

Quản lý gói là một khía cạnh cốt lõi của việc sử dụng và quản trị Linux. Việc hiểu rõ sự khác biệt giữa RPM, DPKG và sức mạnh của APT, cùng với việc nắm vững các lệnh truy vấn, cài đặt, nâng cấp và gỡ bỏ sẽ giúp bạn kiểm soát hoàn toàn phần mềm trên hệ thống. Hãy luôn cẩn trọng với các nguồn cài đặt và thường xuyên cập nhật để đảm bảo hệ thống của bạn luôn an toàn và hoạt động ở hiệu suất tối ưu.