Cách liệt kê phần phụ thuộc (dependencies) của gói trong Ubuntu | Học trực tuyến CNTT, học lập trình từ cơ bản đến nâng cao

Cách liệt kê phần phụ thuộc (dependencies) của gói trong Ubuntu

Chia sẻ kiến thức 21/03/2022

Hầu hết mọi gói Linux đều yêu cầu có các phần phụ thuộc (dependencies) để có thể hoạt động bình thường. Đây là cách bạn có thể kiểm tra các phần phụ thuộc của một gói trong Ubuntu.


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ách 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 (package managers).

Việc biết những phần phụ thuộc 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, bạn có toàn quyền kiểm soát các gói được cài đặt trên hệ thống của mình.

Hãy cùng FUNiX xem cách bạn có thể kiểm tra các phần phụ thuộc của một gói trên Ubuntu.

Phần phụ thuộc của gói là gì?

Các phần 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, ngoài gói chính ” vlc “, APT sẽ cài đặt một số gói bổ sung như libc6 và gcc. Một phần phụ thuộc cũng có thể có các gói khác làm phần phụ thuộc của nó, do đó, tạo thành một 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, 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 cài đặt phần phụ thuộc cần thiết vào hệ thống của mình bằng lệnh apt install.

Cách kiểm tra phần phụ thuộc của gói trong Linux

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 các phụ thuộc cho gói rhythmbox:

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 rhythmbox.

Ngoài ra, bạn cũng có thể sử dụng lệnh apt-cache để 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 phương pháp (method) show thay vì depends.

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 gói phụ thuộc nào sẽ được cài đặt cùng với gói, bạn có thể sử dụng cờ (flag) -I (i viết hoa, không phải L viết thường) hoặc –info bằng 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 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.

Để lấy danh sách các phần phụ thuộc cho một gói đã cài đặt, hãy sử dụng cờ -s 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 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 (dependency tree) cho một gói:

apt-rdepends packagename

Ví dụ:

apt-rdepends vlc

Đầu ra:

Đầu ra được tạo ra thường khá dài do 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 làm phần phụ thuộc của nó:

apt-rdepends -r libc

Đầu ra:

Tiện ích reverse-depends

Mặc dù tính năng phụ thuộc ngược (cờ -r) của apt-rdepends hoạt động tốt hơn mong đợi, vẫn 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 (reverse dependencies) của một gói. Lệnh reverse-depends là một phần của gói ubuntu-dev-tools và có thể được tải xuống bằng cách sử 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ác cờ bạn có thể sử dụng với lệnh và packagename là tên của gói 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:

  1. -R: Chỉ liệt kê các phần phụ thuộc trực tiếp (không có gói được đề xuất hoặc khuyến nghị)
  2. -s: Bao gồm các gói được đề xuất
  3. -l: Trình bày đầu ra ở định dạng rõ ràng hơn, thích hợp để sử dụng trong các 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 từ dòng lệnh, hãy sử dụng cờ –help hoặc -h.

reverse-depends -h
reverse-depends --help

Nhận danh sách phụ thuộc bằng cách sử dụng cài đặt/gỡ 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 được yêu cầu bởi gói PHP, 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” ( “The following additional packages will be installed”). Tất cả các tên gói được liệt kê thêm là các 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

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 đó là gói phụ thuộc của chúng và sử dụng nó để đáp ứng các yêu cầu về âm thanh.

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.

Nguyễn Nam

Dịch từ: https://www.makeuseof.com/how-to-check-package-dependencies-in-ubuntu/

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        
Chat Button
Chat với FUNiX GPT ×

yêu cầu gọi lại

error: Content is protected !!