Một trong những điểm mạnh nhất của Linux là cách nó xử lý việc cài đặt và cập nhật phần mềm thông qua hệ thống quản lý gói. Không giống như Windows hoặc macOS, nơi bạn thường tải xuống trình cài đặt từ các trang web, bản phân phối Linux sử dụng kho lưu trữ gói tập trung chứa hàng nghìn gói phần mềm được định cấu hình sẵn.
Trong phần này, chúng ta sẽ khám phá cách quản lý gói hoạt động và cách sử dụng các trình quản lý gói phổ biến nhất.
Khái niệm quản lý gói
Trước khi đi sâu vào các trình quản lý gói cụ thể, hãy hiểu một số khái niệm chính:
Gói là gì?
Một gói là một kho lưu trữ nén có chứa:
- Các tập tin của phần mềm (nhị phân, thư viện, tài liệu)
- Siêu dữ liệu (tên, phiên bản, mô tả)
- Phụ thuộc (yêu cầu các gói khác)
- Kịch bản cài đặt (cấu hình phần mềm trong khi cài đặt)
- Tệp cấu hình
Kho gói
Kho lưu trữ (hoặc "repos") là các máy chủ lưu trữ các bộ sưu tập gói. Các bản phân phối duy trì các kho lưu trữ chính thức, nhưng các kho lưu trữ của bên thứ ba có thể được thêm vào cho phần mềm bổ sung.
Phụ thuộc
Hầu hết phần mềm đều dựa vào các thành phần phần mềm khác (thư viện, khung, v.v.). Trình quản lý gói tự động giải quyết các phụ thuộc này, cài đặt mọi gói cần thiết.
Hoạt động chung
Tất cả các trình quản lý gói đều cung cấp các lệnh để:
- Cài đặt gói
- Xóa gói
- Cập nhật gói
- Tìm kiếm các gói
- Liệt kê các gói đã cài đặt
- Hiển thị thông tin gói
Hệ thống quản lý gói chính
Các bản phân phối Linux sử dụng các hệ thống quản lý gói khác nhau:
| Định dạng gói | Trình quản lý gói | Được sử dụng bởi |
|---|---|---|
| .deb | apt, apt-get, dpkg | Debian, Ubuntu, Linux Mint |
| .rpm | ừm, dnf, vòng/phút | Fedora, RHEL, CentOS, Rocky Linux |
| .pkg.tar.zst | Pacman | Arch Linux, Manjaro |
| .xbps | xbps | Linux trống |
| (khác nhau) | bến cảng | gentoo |
| .apk | apk | Linux Linux |
Chúng ta sẽ tập trung vào các trình quản lý gói được sử dụng rộng rãi nhất: apt, dnf/yum và pacman.
Trình quản lý gói APT (Debian/Ubuntu)
Công cụ gói nâng cao (APT) được sử dụng bởi các bản phân phối dựa trên Debian như Ubuntu và Linux Mint.
Cấu hình
Nguồn kho lưu trữ của APT được xác định trong /etc/apt/sources.list và các tệp trong thư mục /etc/apt/sources.list.d/.
Một mục điển hình trông giống như:
deb http://archive.ubuntu.com/ubuntu/ jammy main restricted universe multiverse
Điều này chỉ định:
- Loại kho lưu trữ (
debcho gói nhị phân) - URL kho lưu trữ
- Tên mã phân phối (
jammycho Ubuntu 22.04) - Các thành phần kho lưu trữ (chính, bị hạn chế, vũ trụ, đa vũ trụ)
Các lệnh APT cơ bản
Đầu tiên, cập nhật chỉ mục gói:
sudo apt update
Thao tác này sẽ làm mới danh sách các gói có sẵn nhưng không cài đặt bất cứ thứ gì.
Cài đặt gói
Cài đặt một gói:
sudo apt install package_name
Cài đặt nhiều gói:
sudo apt install package1 package2 package3
Xóa gói
Xóa một gói:
sudo apt remove package_name
Xóa gói và các tệp cấu hình của nó:
sudo apt purge package_name
Xóa các phụ thuộc không sử dụng:
sudo apt autoremove
Gói nâng cấp
Nâng cấp tất cả các gói đã cài đặt:
sudo apt upgrade
Nâng cấp và gỡ bỏ các gói lỗi thời:
sudo apt full-upgrade
Cập nhật và nâng cấp trong một lệnh:
sudo apt update && sudo apt upgrade
Tìm kiếm gói
Tìm kiếm các gói:
apt search keyword
Hiển thị chi tiết gói:
apt show package_name
Liệt kê các gói đã cài đặt:
apt list --installed
Kiểm tra xem một gói cụ thể đã được cài đặt chưa:
apt list --installed | grep package_name
Làm việc với tệp .deb
Đôi khi bạn có thể cần cài đặt trực tiếp tệp .deb:
sudo apt install ./package.deb
Hoặc sử dụng dpkg (công cụ cấp thấp hơn):
sudo dpkg -i package.deb
sudo apt install -f # Fix dependencies if needed
Giữ gói (Ngăn chặn cập nhật)
Ngăn chặn gói được nâng cấp:
sudo apt-mark hold package_name
Loại bỏ khoản giữ:
sudo apt-mark unhold package_name
Thêm kho lưu trữ
Thêm kho lưu trữ bằng cách sử dụng add-apt-repository:
sudo add-apt-repository ppa:team/repository
sudo apt update
Ví dụ APT thực tế
Hãy cài đặt và định cấu hình máy chủ web Nginx:
# Update package lists
sudo apt update
# Install Nginx
sudo apt install nginx
# Check the status
sudo systemctl status nginx
# Install some common Nginx add-ons
sudo apt install nginx-extras
# View package information
apt show nginx
Trình quản lý gói DNF/YUM (Fedora/RHEL/CentOS)
Fedora sử dụng DNF (Dandified YUM), trong khi các phiên bản RHEL và CentOS cũ hơn sử dụng YUM. DNF là phiên bản mới hơn với độ phân giải phụ thuộc được cải thiện. Các lệnh rất giống nhau.
Cấu hình
Cấu hình kho lưu trữ được lưu trữ trong /etc/yum.repos.d/ dưới dạng tệp .repo.
Một tệp repo điển hình chứa:
[repository-name]
name=Repository Description
baseurl=http://repo.url/path
enabled=1
gpgcheck=1
gpgkey=http://repo.url/key.asc
Các lệnh DNF/YUM cơ bản
Kiểm tra các bản cập nhật:
sudo dnf check-update # DNF
sudo yum check-update # YUM
Cài đặt gói
Cài đặt một gói:
sudo dnf install package_name
sudo yum install package_name
Xóa gói
Xóa một gói:
sudo dnf remove package_name
sudo yum remove package_name
Gói nâng cấp
Cập nhật tất cả các gói:
sudo dnf upgrade
sudo yum update
Tìm kiếm gói
Tìm kiếm các gói:
dnf search keyword
yum search keyword
Hiển thị thông tin gói:
dnf info package_name
yum info package_name
Liệt kê các gói đã cài đặt:
dnf list installed
yum list installed
Làm việc với nhóm
DNF/YUM hỗ trợ các nhóm gói cài đặt nhiều gói liên quan:
# List available groups
dnf group list
yum groups list
# Install a group
sudo dnf group install "Development Tools"
sudo yum groupinstall "Development Tools"
Quản lý kho lưu trữ
Kích hoạt kho lưu trữ:
sudo dnf config-manager --enable repository
sudo yum-config-manager --enable repository
Thêm một kho lưu trữ:
sudo dnf config-manager --add-repo=https://repo.url/repo.repo
sudo yum-config-manager --add-repo=https://repo.url/repo.repo
Làm việc với tệp RPM
Cài đặt trực tiếp tệp RPM:
sudo dnf install ./package.rpm
sudo yum install ./package.rpm
Hoặc sử dụng lệnh vòng/phút cấp thấp hơn:
sudo rpm -i package.rpm
Ví dụ DNF thực tế
Hãy cài đặt và kiểm tra máy chủ web Apache:
# Check for updates
sudo dnf check-update
# Install Apache
sudo dnf install httpd
# Check information about the package
dnf info httpd
# List installed packages related to Apache
dnf list installed | grep httpd
# Start and enable the service
sudo systemctl start httpd
sudo systemctl enable httpd
Trình quản lý gói Pacman (Arch Linux)
Arch Linux và các phiên bản phái sinh của nó sử dụng trình quản lý gói pacman, được biết đến với tính đơn giản và tốc độ.
Cấu hình
Cấu hình của Pacman là /etc/pacman.conf và thông tin kho lưu trữ là /etc/pacman.d/mirrorlist.
Các lệnh Pacman cơ bản
Đồng bộ hóa cơ sở dữ liệu gói:
sudo pacman -Sy
Cài đặt gói
Cài đặt một gói:
sudo pacman -S package_name
Cài đặt nhiều gói:
sudo pacman -S package1 package2 package3
Xóa gói
Xóa một gói:
sudo pacman -R package_name
Xóa gói và các phần phụ thuộc của nó:
sudo pacman -Rs package_name
Xóa gói, phần phụ thuộc và tệp cấu hình của nó:
sudo pacman -Rns package_name
Gói nâng cấp
Cập nhật tất cả các gói:
sudo pacman -Syu
Các cờ -Syu kết hợp:
-S: Đồng bộ hóa các gói-y: Làm mới cơ sở dữ liệu gói-u: Nâng cấp các gói đã cài đặt
Tìm kiếm gói
Tìm kiếm các gói:
pacman -Ss keyword
Hiển thị thông tin gói:
pacman -Si package_name
Liệt kê các gói đã cài đặt:
pacman -Q
Liệt kê các gói đã cài đặt với chi tiết:
pacman -Qi package_name
Ví dụ về Pacman thực tế
Hãy cài đặt một trình soạn thảo văn bản và kiểm tra thông tin của nó:
# Update package database
sudo pacman -Sy
# Install neovim
sudo pacman -S neovim
# Check detailed information
pacman -Qi neovim
# List files installed by the package
pacman -Ql neovim | head
Định dạng gói phổ quát
Trình quản lý gói truyền thống có tính phân phối cụ thể. Các định dạng gói phổ quát nhằm mục đích hoạt động trên nhiều bản phân phối.
Chụp nhanh
Được phát triển bởi Canonical, snaps là các ứng dụng độc lập bao gồm các phần phụ thuộc:
# Install snapd
sudo apt install snapd # On Debian/Ubuntu
sudo dnf install snapd # On Fedora
# List available snaps
snap find keyword
# Install a snap
sudo snap install package_name
# List installed snaps
snap list
# Update all snaps
sudo snap refresh
# Remove a snap
sudo snap remove package_name
Flatpak
Flatpak nhằm mục đích cung cấp cùng một ứng dụng trên các bản phân phối Linux khác nhau:
# Install Flatpak
sudo apt install flatpak # On Debian/Ubuntu
sudo dnf install flatpak # On Fedora
# Add the Flathub repository
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
# Install an application
flatpak install flathub org.application.Name
# Run an application
flatpak run org.application.Name
# List installed applications
flatpak list
# Update all applications
flatpak update
# Remove an application
flatpak uninstall org.application.Name
Hình ảnh ứng dụng
AppImage cung cấp các ứng dụng di động không cần cài đặt:
- Tải xuống tệp .AppImage
- Làm cho nó có thể thực thi được:
chmod +x application.AppImage - Chạy nó:
./application.AppImage
Biên dịch phần mềm từ nguồn
Đôi khi phần mềm không có sẵn thông qua trình quản lý gói và bạn cần biên dịch phần mềm từ nguồn:
Quá trình biên soạn cơ bản
# Install compilation tools
sudo apt install build-essential # On Debian/Ubuntu
sudo dnf groupinstall "Development Tools" # On Fedora/RHEL/CentOS
# Download and extract source
wget https://example.com/software-1.0.tar.gz
tar -xzf software-1.0.tar.gz
cd software-1.0
# Configure, build, and install
./configure
make
sudo make install
Ví dụ: Biên dịch một chương trình C đơn giản
Hãy tạo một chương trình "Hello World" đơn giản và biên dịch nó:
# Create a file named hello.c
echo '#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}' > hello.c
# Compile with gcc
gcc -o hello hello.c
# Run the program
./hello
Ví dụ cơ bản này không sử dụng quy trình ./configure và make nhưng thể hiện các nguyên tắc biên dịch.
Quản lý thư viện
Ứng dụng phụ thuộc vào thư viện (mã chia sẻ). Dưới đây là một số lệnh để quản lý chúng:
# List shared library dependencies of a binary
ldd /bin/ls
# Configure dynamic linker run-time bindings
sudo ldconfig
# Find which package provides a specific file
# On Debian/Ubuntu:
apt-file search filename
# On Fedora/RHEL/CentOS:
dnf provides */filename
Thực tiễn tốt nhất về quản lý gói
Luôn cập nhật hệ thống của bạn
Thường xuyên cập nhật hệ thống của bạn để nhận các bản vá bảo mật và sửa lỗi:
# On Debian/Ubuntu
sudo apt update && sudo apt upgrade
# On Fedora/RHEL/CentOS
sudo dnf upgrade
# On Arch Linux
sudo pacman -Syu
Dọn dẹp hệ thống của bạn
Xóa các gói không sử dụng và làm sạch bộ đệm gói:
# On Debian/Ubuntu
sudo apt autoremove
sudo apt clean
# On Fedora/RHEL/CentOS
sudo dnf autoremove
sudo dnf clean all
# On Arch Linux
sudo pacman -Rns $(pacman -Qtdq) # Remove orphaned packages
sudo pacman -Sc # Clean package cache
Tạo danh sách các gói đã cài đặt
Hữu ích cho việc sao chép thiết lập của bạn trên hệ thống khác:
# On Debian/Ubuntu
dpkg --get-selections > installed_packages.txt
# On Fedora/RHEL/CentOS
dnf list installed > installed_packages.txt
# On Arch Linux
pacman -Q > installed_packages.txt
Sử dụng ghim phiên bản để ổn định
Ghim các phiên bản gói khi bạn cần sự ổn định:
# On Debian/Ubuntu
echo "package_name hold" | sudo dpkg --set-selections
# On Fedora/RHEL/CentOS
sudo dnf install package_name-specific_version
sudo dnf versionlock add package_name
Khắc phục sự cố quản lý gói
Xử lý các gói bị hỏng (Debian/Ubuntu)
Sửa các gói bị hỏng:
sudo apt --fix-broken install
Buộc cấu hình lại gói:
sudo dpkg-reconfigure package_name
Khắc phục sự cố về kho lưu trữ
Nếu bạn gặp lỗi khóa GPG:
# On Debian/Ubuntu
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys KEY_ID
# On Fedora/RHEL/CentOS
sudo rpm --import https://repo.url/key.asc
Xử lý xung đột gói
Nếu các gói xung đột:
# See what would happen without actually installing
apt --simulate install package_name
# Force a specific version
apt install package=version
Thiết lập kho lưu trữ cục bộ
Đối với các môi trường có nhiều hệ thống Linux, việc thiết lập kho lưu trữ cục bộ có thể tiết kiệm băng thông và mang lại khả năng kiểm soát tốt hơn.
Sử dụng apt-mirror (Debian/Ubuntu)
# Install apt-mirror
sudo apt install apt-mirror
# Configure in /etc/apt/mirror.list
# Run the mirror process
sudo apt-mirror
Sử dụng createrepo (Fedora/RHEL/CentOS)
# Install createrepo
sudo dnf install createrepo
# Create the repository structure
sudo mkdir -p /var/www/html/local_repo
sudo cp *.rpm /var/www/html/local_repo/
# Create the repository metadata
sudo createrepo /var/www/html/local_repo
Làm việc với cơ sở hạ tầng đám mây
Khi làm việc với máy chủ đám mây, bạn sẽ thường sử dụng tính năng quản lý gói để thiết lập và bảo trì hệ thống của mình. Nhiều nhà cung cấp đám mây cung cấp image với các gói cài đặt sẵn nhưng bạn sẽ cần cập nhật và cài đặt phần mềm bổ sung.
Ví dụ về DigitalOcean
DigitalOcean giúp dễ dàng tạo một máy chủ Linux với nhiều bản phân phối khác nhau. Đây là một cách nhanh chóng để bắt đầu:
- Đăng ký tài khoản DigitalOcean (sử dụng liên kết này để nhận tín dụng $200 trong 60 ngày)
- Tạo một Droplet (máy chủ ảo) với bản phân phối Linux ưa thích của bạn
- Kết nối qua SSH và cập nhật hệ thống của bạn:
# On Ubuntu
sudo apt update && sudo apt upgrade
# On Fedora
sudo dnf upgrade
- Cài đặt các gói cần thiết của bạn:
# Install a LAMP stack on Ubuntu
sudo apt install apache2 mysql-server php libapache2-mod-php
# Or on Fedora
sudo dnf install httpd mariadb-server php
Lợi ích của việc sử dụng cơ sở hạ tầng đám mây là bạn có thể nhanh chóng tạo, sửa đổi và hủy các máy chủ khi cần, sử dụng tính năng quản lý gói để đảm bảo chúng có phần mềm bạn yêu cầu.
Tiến về phía trước
Bây giờ bạn đã hiểu cách quản lý phần mềm trên các bản phân phối Linux khác nhau. Kiến thức này rất cần thiết để bảo trì hệ thống Linux và cài đặt phần mềm bạn cần.
Trong phần tiếp theo, chúng ta sẽ khám phá cách quản lý người dùng và nhóm, tìm hiểu cách tạo và quản lý tài khoản người dùng, đặt quyền và hiểu các tệp cấu hình liên quan đến người dùng.
Quản lý gói là một kỹ năng cơ bản của Linux giúp nó khác biệt với các hệ điều hành khác. Bằng cách tìm hiểu những công cụ này, bạn đã có được khả năng cài đặt, cập nhật và bảo trì phần mềm một cách hiệu quả trên các bản phân phối Linux khác nhau.