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