Khác với Windows, macOS, và Android, phần mềm trên Ubuntu—và Linux nói chung—không được phân phối như một gói đơn lẻ. Thay vào đó, khi bạn cài ứng dụng, trình quản lý gói hệ thống tải xuống nhiều gói, bao gồm gói app chính và các phụ thuộc của nó. Tuy nhiên, điều này chỉ đúng cho cài đặt gói truyền thống trên Linux tức là dùng trình quản lý gói.
Biết những phụ thuộc bổ sung nào được tải trong quá trình cài đặt có thể có lợi cho cả người mới và nâng cao. Cách này, người ta có kiểm soát hoàn toàn các gói cài trên hệ thống.
Hãy xem cách kiểm tra phụ thuộc của gói trên Ubuntu.
Phụ Thuộc Gói Là Gì?
Phụ thuộc là gói hỗ trợ cần thiết cho việc hoạt động đúng của ứng dụng trong Linux. Ví dụ, nếu bạn muốn tải VLC media player trên Ubuntu, APT sẽ cài một số gói thêm như libc6 và gcc, ngoài gói chính "vlc". Một phụ thuộc cũng có thể có gói khác làm phụ thuộc, do đó, hình thành cấu trúc phân cấp.
Vì gói Linux liên thuộc lẫn nhau, gần như mọi phần mềm yêu cầu gói thêm mà bạn phải cài trên hệ thống.
Mặc dù trình quản lý gói như APT tự động hóa quản lý và cài đặt các phụ thuộc nói trên, lỗi xảy ra khi bạn thử build gói thủ công từ source. Tuy nhiên, bạn có thể giải quyết lỗi đó bằng cách đơn giản cài phụ thuộc cần thiết trên hệ thống dùng lệnh apt install.
Cách Kiểm Tra Phụ Thuộc Gói Trên Linux
May mắn thay, trên Ubuntu, có vài cách để lấy danh sách phụ thuộc của gói. APT, trình quản lý gói mặc định trong Ubuntu và distro dựa trên Debian, cung cấp nhiều lệnh để lấy thông tin phụ thuộc liên quan đến gói.
Dùng Trình Quản Lý Gói APT
Bạn có thể dùng APT trong Ubuntu để lấy danh sách phụ thuộc liên kết với gói. Cú pháp cơ bản của lệnh là:
sudo apt depends packagename
Ví dụ, để kiểm tra phụ thuộc cho gói rhythmbox:
sudo apt depends rhythmbox
Ngoài danh sách phụ thuộc, đầu ra cũng sẽ bao gồm gói recommended và suggested bạn có thể cài cùng rhythmbox.
Thay vào đó, bạn cũng có thể dùng lệnh apt-cache để lấy đầu ra giống nhau.
sudo apt-cache depends rhythmbox
Để lấy thông tin thêm liên quan đến gói cụ thể, dùng phương thức show thay vì depends.
sudo apt show rhythmbox
sudo apt-cache show rhythmbox
Liệt Kê Phụ Thuộc Dùng dpkg
Nếu bạn đã tải gói DEP trên hệ thống và muốn biết phụ thuộc nào sẽ cài cùng gói, bạn có thể dùng cờ -I (i in hoa, không phải L thường) hoặc --info với lệnh.
sudo dpkg -I /path/to/package.deb
sudo dpkg --info /path/to/package.deb
...trong đó /path/to/package.deb là đường dẫn tuyệt đối hoặc tương đối đến file DEB.
Đầu ra sẽ hiển thị kích thước gói, nguồn, và thông tin hữu ích khác cùng danh sách phụ thuộc.
Để lấy danh sách phụ thuộc cho gói đã cài, dùng cờ -s với dpkg. Ví dụ:
sudo dpkg -s firefox
Dùng apt-rdepends
Để lấy đầu ra chi tiết hơn, bạn có thể dùng tiện ích apt-rdepends. Vì nó không cài sẵn trên hầu hết distro Linux, bạn sẽ phải cài thủ công trên Ubuntu dùng APT.
sudo apt install apt-rdepends
Dùng định dạng lệnh sau để lấy cây phụ thuộc cho gói:
apt-rdepends packagename
Ví dụ:
apt-rdepends vlc
Đầu ra tạo ra thường dài vì apt-rdepends hiển thị cây phụ thuộc phân cấp hoàn chỉnh, nghĩa là bạn cũng lấy danh sách phụ thuộc của phụ thuộc.
Bạn cũng có thể lấy danh sách gói phụ thuộc vào gói cụ thể. Ví dụ, để kiểm tra gói nào yêu cầu libc làm phụ thuộc:
apt-rdepends -r libc
Tiện Ích reverse-depends
Mặc dù tính năng reverse dependency (cờ -r) của apt-rdepends hoạt động tốt hơn mong đợi, còn một tiện ích khác bạn có thể dùng để trích xuất reverse dependency của gói. Lệnh reverse-depends là một phần của gói ubuntu-dev-tools, và có thể tải dùng:
sudo apt install ubuntu-dev-tools
Cú pháp mặc định của lệnh là:
reverse-depends options packagename
...trong đó options là cờ bạn có thể dùng với lệnh và packagename là tên gói bạn muốn reverse check phụ thuộc.
Bạn cũng có thể thêm các cờ khác vào lệnh trên để sửa đổi đầu ra. Đây là danh sách tùy chọn hữu ích nhất:
- -R: Chỉ liệt kê phụ thuộc trực tiếp (không gói suggested hoặc recommended)
- -s: Bao gồm gói suggested
- -l: Trình bày đầu ra định dạng sạch, phù hợp dùng trong script
Trong trường hợp bạn không biết cách dùng công cụ và cần giúp dòng lệnh, dùng cờ --help hoặc -h.
reverse-depends -h
reverse-depends --help
Lấy Danh Sách Phụ Thuộc Dùng Mô Phỏng Cài Đặt/Xóa
Cho những ai muốn danh sách ngắn tất cả phụ thuộc hiện chưa cài trên hệ thống, bạn có thể chạy mô phỏng cài đặt (hoặc gỡ cài) của gói cụ thể.
Để kiểm tra phụ thuộc yêu cầu bởi gói PHP, ví dụ, chạy lệnh sau:
sudo apt install -s php
Đầu ra sẽ chứa phần "The following additional packages will be installed". Tất cả tên gói liệt kê thêm là phụ thuộc chưa tìm thấy trên hệ thống.
Nếu bạn muốn lấy danh sách phụ thuộc cho gói đã cài trên Ubuntu, bạn có thể thực hiện mô phỏng gỡ cài để kiểm tra gói thêm nào sẽ bị xóa cùng nó.
sudo apt remove -s packagename
Ví dụ:
sudo apt remove -s rhythmbox
Gói Linux Là Phụ Thuộc Lẫn Nhau
Như bạn có thể suy ra từ hướng dẫn này, gần như mọi gói Linux phụ thuộc vào gói khác. Nguyên tắc chính sau khái niệm này là trên OS dựa trên Linux, mỗi gói nên làm một việc đơn lẻ, và làm tốt nó.
Nếu gói được phát triển để quản lý dịch vụ audio, thì chương trình khác sẽ đơn giản liệt kê gói đó như phụ thuộc, và dùng nó để đáp ứng yêu cầu audio.
Cũng, trong trường hợp nhiều ứng dụng yêu cầu cùng gói, nó chỉ cài một lần trên hệ thống, ngăn chặn dư thừa dữ liệu và tiết kiệm dung lượng đĩa. Bạn cũng có thể lấy danh sách tất cả gói hiện cài trên hệ thống dùng APT.