CyStack logo
  • Sản phẩm & Dịch vụ
  • Giải pháp
  • Bảng giá
  • Công ty
  • Tài liệu
Vi

vi

Trang chủHướng dẫnTổng quan về quản lý gói trong Linux: apt, yum, dnf, pkg

Tổng quan về quản lý gói trong Linux: apt, yum, dnf, pkg

CyStack blog 7 phút để đọc
CyStack blog11/09/2025
Locker Avatar

Chris Pham

Technical Writer

Locker logo social
Reading Time: 7 minutes

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 package, được lưu trữ trong các repository (kho lưu trữ). Việc xử lý các gói được gọi là quản lý gói (package management). Các gói cung cấp các thành phần cốt lõi của hệ điều hành, cùng với thư viện dùng chung, ứng dụng, dịch vụ và tài liệu.

quản lý gói trong Linux

Một hệ thống quản lý gói không chỉ thực hiện cài đặt phần mềm một lần mà còn cung cấp các công cụ để nâng cấp các gói đã được cài đặt. Các repository giúp đảm bảo mã nguồn đã được kiểm duyệt để sử dụng trên hệ thống của bạn và các phiên bản phần mềm đã đượ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 máy chủ hoặc môi trường phát triển, thường cần tìm kiếm ngoài các repository chính thức. Các gói trong bản phát hành ổn định của một bản phân phối có thể đã lỗi thời, đặc biệt là đối với 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 các quản trị viên hệ thống và nhà phát triển, và sự phong phú của các phần mềm được đóng gói cho các bản phân phối lớn là một nguồn tài nguyên quý giá.

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

Tổng quan về các hệ thống quản lý gói

Hầu hết các hệ thống package được xây dựng dựa trên các bộ sưu tập tệp package. Tệp package thường là một kho lưu trữ chứa các ứng dụng đã được biên dịch và các tài nguyên khác được phần mềm sử dụng, cùng với các tập lệnh cài đặt. Các package cũng chứa các metadata (siêu dữ liệu) có giá trị, bao gồm các dependency, một danh sách các package khác cần thiết để cài đặt và chạy chúng.

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

  • Đối với Debian / Ubuntu: các package .deb được cài đặt bởi aptdpkg.
  • Đối với Rocky / Fedora / RHEL: các package .rpm được cài đặt bởi yum.
  • Đối với FreeBSD: các package .txz được cài đặt bởi pkg.

Ở Debian và các hệ thống dựa trên nó, như Ubuntu, Linux Mint và Raspbian, định dạng package là tệp .deb , .apt, viết tắt của Advanced Packaging Tool, 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 package và dependencies của chúng, và quản lý các bản nâng cấp. Các lệnh apt hoạt động như một giao diện 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 tệp .deb riêng lẻ trên hệ thống cục bộ 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 dựa trên Debian bao gồm một lệnh apt duy nhất, 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à theo truyền thống đã được xử lý bởi các lệnh cụ thể hơn là apt-getapt-cache.

Rocky Linux, Fedora và các thành viên khác trong gia đình Red Hat sử dụng tệp RPM. Trước đây, chúng sử dụng một trình quản lý package có tên là yum. Trong các phiên bản gần đây của Fedora và các bản dẫn xuất của nó, yum đã được thay thế bằng dnf, một bản sao hiện đại hóa nhưng vẫn giữ lại hầu hết giao diện của yum.

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

Cập nhật danh sách Package

Hầu hết các hệ thống đều giữ một cơ sở dữ liệu cục bộ về các package có sẵn từ các repository từ xa. Tốt nhất là cập nhật cơ sở dữ liệu này trước khi cài đặt hoặc nâng cấp package. dnf là một trường hợp ngoại lệ một phần, nó sẽ kiểm tra các bản cập nhật trước khi thực hiện một số hoạt động, nhưng bạn có thể kiểm tra bất cứ lúc nào xem có bản cập nhật nào không.

  • Đối với Debian / Ubuntu: sudo apt update
  • Đối với Rocky / Fedora / RHEL: dnf check-update
  • Đối với FreeBSD Packages: sudo pkg update
  • Đối với FreeBSD Ports: sudo portsnap fetch update

Nâng cấp các Package đã được cài đặt

Đảm bảo rằng tất cả phần mềm được cài đặt trên một máy luôn được cập nhật sẽ là một công việc khổng lồ nếu không có hệ thống package. Bạn sẽ phải theo dõi các thay đổi từ nhà phát triển và các cảnh báo bảo mật cho hàng trăm package khác nhau. Mặc dù trình quản lý package không giải quyết mọi vấn đề bạn sẽ 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 chỉ với vài lệnh.

Trên FreeBSD, việc nâng cấp các ports đã cài đặt có thể gây ra những 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 bạn nên đọc /usr/ports/UPDATING trước khi nâng cấp bằng portmaster.

  • Đối với Debian / Ubuntu: sudo apt upgrade
  • Đối với Rocky / Fedora / RHEL: sudo dnf upgrade
  • Đối với FreeBSD Packages: sudo pkg upgrade

Tìm kiếm một Package

Hầu hết các bản phân phối đều cung cấp một giao diện đồ họa hoặc giao diện dựa trên menu cho các bộ sưu tập package. Đâ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ì cách nhanh nhất và hiệu quả nhất để tìm một package là tìm kiếm bằng các công cụ dòng lệnh.

  • Đối với Debian / Ubuntu: apt search search_string
  • Đối với Rocky / Fedora / RHEL: dnf search search_string
  • Đối với FreeBSD Packages: pkg search search_string

Lưu ý: Trên Rocky, Fedora hoặc RHEL, bạn có thể tìm kiếm cả tiêu đề và mô tả của package bằng cách sử dụng dnf search all. Trên FreeBSD, bạn có thể tìm kiếm mô tả bằng cách sử dụng pkg search -D.

Xem thông tin về một Package cụ thể

Khi quyết định cài đặt gì, việc đọc mô tả chi tiết của package thường rất hữu ích. Cùng với văn bản dễ đọc, những mô tả này thường bao gồm metadata như số phiên bản và danh sách các dependencies của package.

  • Đối với Debian / Ubuntu: apt show package
  • Đối với Rocky / Fedora / RHEL: dnf info package
  • Đối với FreeBSD Packages: pkg info package
  • Đối với FreeBSD Ports: cd /usr/ports/category/port && cat pkg-descr

Cài đặt một Package từ Repositories

Khi bạn đã biết tên của một package, bạn thường có thể cài đặt nó và các dependency của nó chỉ với một lệnh duy nhất. Nói chung, bạn có thể cung cấp nhiều package để cài đặt cùng một lúc bằng cách liệt kê tất cả chúng.

  • Đối với Debian / Ubuntu: sudo apt install package
  • Đối với Rocky / Fedora / RHEL: sudo dnf install package
  • Đối với FreeBSD Packages: sudo pkg install package

Cài đặt một Package từ hệ thống tệp tin cục bộ

Đôi khi, mặc dù 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, một nhà phát triển hoặc nhà cung cấp sẽ cung cấp các tệp package để tải xuống. Bạn thường có thể tải chúng về bằng trình duyệt web hoặc qua lệnh curl trên dòng lệnh. Khi một package đã có 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 dựa trên Debian, dpkg xử lý các tệp package riêng lẻ. Nếu một package có các dependencies chưa được đáp ứng, gdebi thường có thể được sử dụng để lấy chúng từ các repository chính thức.

Trên Rocky Linux, Fedora hoặc RHEL, dnf được sử dụng để cài đặt các tệp riêng lẻ, và cũng sẽ xử lý các dependencies cần thiết.

  • Đối với Debian / Ubuntu: sudo dpkg -i package.deb
  • Đối với Rocky / Fedora / RHEL: sudo dnf install package.rpm
  • Đối với FreeBSD Packages: sudo pkg add package.txz

Cài đặt một Package từ hệ thống tệp tin cục bộ

Đôi khi, mặc dù 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, một nhà phát triển hoặc nhà cung cấp sẽ cung cấp các tệp package để tải xuống. Bạn thường có thể tải chúng về bằng trình duyệt web hoặc qua lệnh curl trên dòng lệnh. Khi một package đã có 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 dựa trên Debian, dpkg xử lý các tệp package riêng lẻ. Nếu một package có các dependencies chưa được đáp ứng, gdebi thường có thể được sử dụng để lấy chúng từ các repository chính thức.

Trên Rocky Linux, Fedora hoặc RHEL, dnf được sử dụng để cài đặt các tệp riêng lẻ, và cũng sẽ xử lý các dependencies cần thiết.

  • Đối với Debian / Ubuntu: sudo dpkg -i package.deb
  • Đối với Rocky / Fedora / RHEL: sudo dnf install package.rpm
  • Đối với FreeBSD Packages: sudo pkg add package.txz

Tìm kiếm trợ 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 của Unix (thường được gọi là man pages) có sẵn cho hầu hết các lệnh từ shell. Để đọc một trang, hãy sử dụng lệnh man:

man page

Trong man, bạn có thể điều hướng 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.

  • Đối với Debian / Ubuntu: man apt
  • Đối với Rocky / Fedora / RHEL: man dnf
  • Đối với FreeBSD Packages: man pkg
  • Đối với FreeBSD Ports: man ports

Kết luận

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ó thể được tham khảo chéo giữa các hệ thống,

0 Bình luận

Đăng nhập để thảo luận

Chuyên mục Hướng dẫn

Tổng hợp các bài viết hướng dẫn, nghiên cứu và phân tích chi tiết về kỹ thuật, các xu hướng công nghệ mới nhất dành cho lập trình viên.

Đăng ký nhận bản tin của chúng tôi

Hãy trở thành người nhận được các nội dung hữu ích của CyStack sớm nhất

Xem chính sách của chúng tôi Chính sách bảo mật.

Đăng ký nhận Newsletter

Nhận các nội dung hữu ích mới nhất