Thay thế Package Fedora “không vết sẹo” với dnf swap và dnf shell

Fedora tutorial - IT technology blog
Fedora tutorial - IT technology blog

Sau 2 năm dùng Fedora làm “cần câu cơm” chính, mình cực kỳ thích tốc độ cập nhật package của distro này. Tuy nhiên, Fedora cũng nổi tiếng là cực kỳ “khó tính” về tính nhất quán. Đã bao giờ bạn muốn đổi từ MariaDB sang MySQL, hay chuyển sang bản FFmpeg đầy đủ trên RPM Fusion chưa? Thật ức chế khi dnf báo lỗi xung đột hoặc tệ hơn là đòi gỡ sạch cả giao diện Desktop của bạn.

Lúc bế tắc đó, các lệnh install hay remove thông thường gần như vô dụng. Bí quyết nằm ở hai công cụ ít người để ý: dnf swapdnf shell. Đây là những kỹ thuật thay thế linh kiện hệ thống tận gốc mà không làm sập cả ngôi nhà bạn đang ở.

Quick start: Thay thế nhanh trong 3 nốt nhạc

Nếu bạn đang cần giải quyết công việc ngay, đây là hai kịch bản giúp tiết kiệm ít nhất 15 phút mò mẫm lỗi dependency.

1. Hoán đổi gói phần mềm với dnf swap

Đừng chạy lệnh gỡ rồi mới cài, rất dễ làm gãy các chuỗi phụ thuộc. Hãy gộp chúng lại. Ví dụ, để đổi từ MariaDB sang MySQL mà vẫn giữ nguyên các gói liên quan:

sudo dnf swap mariadb-server community-mysql-server

DNF sẽ tính toán để tráo đổi hai gói này trong cùng một transaction. Các thư viện dùng chung sẽ được giữ lại thay vì bị xóa oan.

2. Xử lý đa tác vụ với dnf shell

Khi bạn cần thực hiện một chuỗi thao tác phức tạp như gỡ A, cài B, nâng cấp C và muốn hệ thống chỉ khởi động đúng một lần duy nhất:

sudo dnf shell
# Bạn sẽ vào môi trường tương tác:
> remove firefox
> install google-chrome-stable
> run
> quit

Mọi thứ chỉ bắt đầu khi bạn gõ run. DNF sẽ tổng hợp toàn bộ yêu cầu để tìm ra phương án tối ưu nhất.

Tại sao dnf install truyền thống lại dễ thất bại?

Thông thường, DNF hoạt động theo cơ chế an toàn: nếu package-B xung đột với package-A, nó sẽ dừng lại ngay. Nếu bạn gỡ package-A trước, hàng tá phần mềm quan trọng khác có thể bị kéo theo vào “hố đen” gỡ bỏ.

Thực tế mình từng gặp ca khó khi thay đổi driver âm thanh. Nếu gỡ bộ cũ, Fedora đòi xóa luôn GNOME Desktop vì sự phụ thuộc chồng chéo. dnf swap giải quyết vấn đề này bằng cơ chế “Atomic Transaction”. Hệ thống sẽ hiểu rằng: “Tôi lấy linh kiện A ra và nhét ngay linh kiện B vào”. Không có khoảng thời gian trống nào khiến hệ thống bị hổng.

Cú pháp swap linh hoạt hơn

Bạn có thể chỉ định rõ ràng hành động để tránh nhầm lẫn khi tên gói quá khác nhau:

sudo dnf swap --install package-moi --remove package-cu

Làm chủ dnf shell cho những ca “đại phẫu”

Hãy coi dnf shell là một môi trường lập trình giao dịch. Mọi lệnh bạn nhập vào đều nằm trong danh sách chờ. Điều này cực kỳ hữu ích khi việc cài B đòi hỏi A phải mất đi, nhưng gỡ A lại yêu cầu phải có C thay thế trước. Nếu chạy lệnh rời rạc, bạn sẽ rơi vào vòng lặp lỗi bất tận.

Các lệnh “vàng” trong shell:

  • config: Thay đổi thiết lập DNF (như tắt kiểm tra GPG) ngay trong phiên làm việc.
  • repo enable [reponame]: Bật kho phần mềm tạm thời chỉ cho lần giao dịch này.
  • transaction list: Kiểm kê lại danh sách các việc sắp thực hiện.

Ví dụ điển hình: Chuyển từ ffmpeg-free (bản cắt giảm của Fedora) sang bản full từ RPM Fusion để xử lý video mượt hơn:

sudo dnf shell
> --setopt=strict=0
> remove ffmpeg-free
> install ffmpeg
> run

Lưu ý: --setopt=strict=0 giúp DNF linh hoạt hơn khi xử lý các library xung đột như libavcodec-free.

Kinh nghiệm thực chiến từ máy cá nhân

Dưới đây là vài lưu ý giúp bạn tránh phải cài lại máy sau khi “vọc” sâu vào hệ thống:

1. Luôn có phương án dự phòng với dnf history

Nếu sau khi swap mà ứng dụng chạy chập chờn, đừng hoảng. DNF có khả năng “xuyên không” cực tốt:

sudo dnf history
sudo dnf history undo [ID]

Lệnh này sẽ đưa máy bạn về trạng thái y hệt như trước khi thực hiện cú tráo đổi.

2. Tránh chạm vào các thư viện cốt lõi

Mặc dù dnf swap rất mạnh, nhưng đừng bao giờ dại dột hoán đổi các gói như glibc hay kernel. Những thành phần này là xương sống của hệ thống, chỉ một sơ suất nhỏ cũng có thể làm máy bị treo ngay lập tức.

3. Dọn dẹp tàn dư

Sau khi tráo đổi, đôi khi các gói phụ thuộc cũ vẫn nằm lại máy dưới dạng “mồ côi” (orphan). Hãy chạy lệnh sau để máy luôn nhẹ nhõm:

sudo dnf autoremove

Hy vọng qua bài này, bạn sẽ tự tin hơn khi cần can thiệp sâu vào Fedora. Thay vì lo sợ những dòng báo lỗi “Conflict” đỏ rực, hãy dùng swapshell để xử lý chúng như một chuyên gia thực thụ!

Share: