HỌC BẰNG THỰC HÀNH
← Lộ trình học
01 · Linux Administration

Quản lý phần mềm: dnf, repository và Flatpak

Thực hiện trên server của bạn, rồi kiểm tra từng tiêu chí.

Cốt lõi

Vì sao cần học

Cài phần mềm bằng cách tải file về rồi chép tay thì không cập nhật được, không biết file nào thuộc về đâu và không gỡ sạch được. Package manager giữ danh sách file, phụ thuộc, phiên bản và chữ ký. Trong doanh nghiệp, server thường chỉ được dùng repository nội bộ đã kiểm duyệt. RHCSA trên RHEL 10 yêu cầu cả repository lẫn Flatpak.

Mục tiêu

  • Tìm, cài, nâng cấp, gỡ package và xem lịch sử giao dịch bằng dnf.
  • Tra cứu package sở hữu một file, file thuộc một package bằng rpm.
  • Tạo và cấu hình một repository local có kiểm tra chữ ký.
  • Thêm remote Flatpak, cài và gỡ ứng dụng Flatpak.

Điều kiện tiên quyết

  • Bài Shell, biến môi trường và script đầu tiên.

Mental model

RPM là định dạng gói và cơ sở dữ liệu các package đã cài. dnf đứng trên RPM: đọc metadata từ các repository, giải quyết phụ thuộc, tải và kiểm tra chữ ký GPG trước khi cài. Mỗi repository được khai báo bằng một file .repo trong /etc/yum.repos.d/.

Flatpak cài ứng dụng (thường là ứng dụng desktop) kèm runtime riêng, tách khỏi thư viện hệ thống. Nó không thay thế dnf cho phần mềm hệ thống, nhưng cho phép cài phiên bản ứng dụng mới mà không ảnh hưởng hệ điều hành.

Việcdnf / rpmFlatpak
NguồnRepository .repoRemote (flatpak remote-add)
Càidnf installflatpak install
Danh sáchdnf list --installed, rpm -qaflatpak list
Gỡdnf removeflatpak uninstall

Thực hành (Guided Lab)

1. Tra cứu và cài đặt

dnf search jq
dnf info jq
sudo dnf install -y jq
rpm -qi jq | head -5
rpm -ql jq | head
rpm -qf /usr/bin/jq
dnf history | head -5
Giải thích lệnh và tham số
Lệnh / tùy chọnÝ nghĩa
dnf search jq, dnf info jqTìm package và xem mô tả trước khi cài.
rpm -qi jq-q truy vấn package đã cài, -i xem thông tin.
rpm -ql jq-l liệt kê file do package đã cài cung cấp.
rpm -qf /usr/bin/jq-f truy vấn package sở hữu đường dẫn này.
dnf historyXem lịch sử giao dịch cài, cập nhật, gỡ package.
headMặc định chỉ in 10 dòng đầu; head -5 lấy 5 dòng.

dnf list --installed liệt kê package đã cài; rpm -qa truy vấn tất cả (-a) package trong cơ sở dữ liệu RPM. Đây là lệnh RPM trên VM RHEL-family, không chạy trực tiếp trên macOS.

rpm -qf trả lời câu hỏi "file này đến từ package nào?". Lệnh này rất hữu ích khi điều tra một file lạ trên server.

2. Repository local

Tải một package vào thư mục, tạo metadata, rồi khai báo repository:

sudo dnf install -y createrepo_c dnf-plugins-core
sudo install -d /srv/kdc-repo
sudo dnf download --destdir /srv/kdc-repo tree
sudo createrepo_c /srv/kdc-repo

sudo tee /etc/yum.repos.d/kdc-local.repo <<'EOF'
[kdc-local]
name=KDC local lab repository
baseurl=file:///srv/kdc-repo
enabled=1
gpgcheck=1
EOF

dnf repolist
sudo dnf install -y --disablerepo='*' --enablerepo=kdc-local tree
dnf info tree | grep -i '^From repo'
Giải thích lệnh và tham số

dnf download --destdir /srv/kdc-repo tree tải RPM của tree vào thư mục chỉ định, chưa cài nó. createrepo_c sinh metadata để thư mục trở thành repository. dnf repolist liệt kê repository đang bật. --disablerepo='*' tắt mọi repo trong lần gọi này, --enablerepo=kdc-local chỉ bật repo lab; nháy đơn giữ * khỏi bị shell mở rộng thành tên file. grep -i tìm không phân biệt chữ hoa/thường.

Trong file .repo, baseurl=file:///srv/kdc-repo là địa chỉ repo local, enabled=1 bật repo, gpgcheck=1 yêu cầu kiểm tra chữ ký package. Đây là cấu hình, không phải các lệnh shell. Khi bổ sung RPM, dùng createrepo_c --update /srv/kdc-repo để cập nhật metadata; dnf clean metadata xóa cache metadata để DNF tải lại.

gpgcheck=1 buộc dnf kiểm tra chữ ký của package bằng các khóa đã có trong hệ thống. Package tree được ký bởi bản phân phối nên vẫn cài được. Đừng tắt gpgcheck để "cho nhanh".

3. Flatpak

sudo dnf install -y flatpak
sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
flatpak remotes --system
flatpak search calculator
sudo flatpak install -y --system flathub org.gnome.Calculator
flatpak list --app
flatpak info org.gnome.Calculator | head
Giải thích lệnh và tham số

flatpak remote-add thêm nguồn ứng dụng; --if-not-exists bỏ qua nếu remote đã có. --system chọn cài đặt cấp toàn hệ thống (khác cài riêng user). flatpak search tìm ứng dụng, install -y cài và tự xác nhận, list --app chỉ liệt kê ứng dụng, info xem metadata. flathub là tên remote; org.gnome.Calculator là ID ứng dụng, không phải đường dẫn file.

Lần cài đầu tải cả runtime org.gnome.Platform: khoảng 420 MB tải về, 1,2 GB sau khi cài (đo tháng 10/2026), nên mất vài phút. Ứng dụng có giao diện đồ họa; trên server không có màn hình, bạn chỉ cần cài và kiểm tra được.

Tự kiểm tra (Verification)

rpm -q jq tree
cat /etc/yum.repos.d/kdc-local.repo
flatpak remotes --system
flatpak list --app
Giải thích lệnh và tham số

rpm -q jq tree truy vấn (-q) hai package đã cài. flatpak remotes --system xem remote ở phạm vi toàn hệ thống; flatpak list --app chỉ liệt kê ứng dụng, bỏ runtime. cat đọc cấu hình repo.

Chọn server và bấm Kiểm tra kết quả.

Lỗi thường gặp

  • dnf download báo không có lệnh: thiếu dnf-plugins-core.
  • Quên createrepo_c hoặc thêm package mà không chạy lại: dnf không thấy package mới. Chạy createrepo_c --update rồi dnf clean metadata.
  • baseurl=/srv/kdc-repo thiếu file://: dnf không hiểu đó là đường dẫn local.
  • flatpak install không có --system khi chạy bằng user thường: ứng dụng được cài vào tài khoản của bạn, không phải toàn hệ thống.

Ghi chú production

  • Server production thường dùng repository nội bộ (mirror có kiểm duyệt). Quy trình là: thử bản cập nhật trên staging, rồi mới đồng bộ vào repository production.
  • dnf history undo <ID> hoàn tác một giao dịch, rất hữu ích khi một bản cập nhật làm hỏng dịch vụ.
  • Vá bảo mật định kỳ: dnf updateinfo list --security cho biết bản vá nào đang chờ.

Ghi chú Ubuntu

Dùng apt và dpkg: apt install, dpkg -S /usr/bin/jq (tương đương rpm -qf), dpkg -L jq. Repository khai báo trong /etc/apt/sources.list.d/. Phần repository local và tiêu chí kdc-local.repo chỉ áp dụng cho RHEL-family.

Dọn dẹp

sudo flatpak uninstall -y --system org.gnome.Calculator
sudo flatpak uninstall -y --unused
sudo dnf remove -y tree
sudo rm -f /etc/yum.repos.d/kdc-local.repo
sudo rm -rf /srv/kdc-repo
Giải thích lệnh và tham số

flatpak uninstall gỡ ứng dụng; --unused gỡ runtime không còn ứng dụng nào cần. dnf remove -y tree gỡ package RPM và tự xác nhận. Đọc danh sách package/runtime sẽ bị gỡ trước khi áp dụng các lệnh này ngoài bài lab.

Tài liệu chính thức