Làm thế nào để biết ứng dụng nào phụ thuộc vào gói X

Hướng dẫn nhỏ ngắn này nổi lên như phản hồi mối quan tâm của một trong những độc giả của chúng tôi, Felipe, người đã viết thư cho chúng tôi hỏi: «Làm cách nào để biết ứng dụng nào đang sử dụng Java?«. Tôi không nghĩ có cách nào để biết điều đó, nhưng có một cách đơn giản để biết gói nào (tức là ứng dụng) được liệt kê trong kho phụ thuộc vào gói JAVA. Phương pháp tương tự có thể được sử dụng cho bất kỳ gói nào khác, chẳng hạn như để tìm ra ứng dụng nào phụ thuộc vào MONO.


Phổ biến nhất là muốn tìm hiểu những gói khác phải được cài đặt để gói X hoạt động tốt. Các gói bắt buộc đó được gọi là gói phụ thuộc và có thể được tìm thấy như sau:

apt-cache phụ thuộc vào mypackage 

Bạn cũng có thể vào Synaptic, tìm gói, làm nhấp chuột phải vào nó> Thuộc tính> Phụ thuộc.

Tuy nhiên, mục tiêu của bài đăng này là tìm ra chính xác điều ngược lại: gói nào có gói X là gói phụ thuộc. Nói cách khác, trong trường hợp này chúng ta biết gói "mẹ" và chúng ta muốn biết những gói khác yêu cầu gói "mẹ" này phải được cài đặt để hoạt động.

Hãy chuyển sang ví dụ để hiểu rõ hơn vấn đề. Hãy xem cách phát hiện các gói phụ thuộc vào gói openjdk-6-jre. Đó là, làm thế nào để phát hiện những ứng dụng được liệt kê trong các kho lưu trữ phụ thuộc vào JAVA.

Tôi đã mở một thiết bị đầu cuối và viết:

apt-cache rdepends openjdk-6-jre 

Một danh sách dài các gói sẽ xuất hiện, bao gồm OpenOffice, FreeMind, OpenCol, v.v.

Làm thế nào để phát hiện đúng gói "mẹ"?

OK, cho đến nay thì rất dễ dàng, nhưng làm cách nào để tìm ra gói "mẹ" mà tôi nên tìm kiếm? Vâng, điều này đòi hỏi một số chuyên môn và phân tích trước.

Giả sử tôi muốn biết tất cả các ứng dụng dựa trên MONO. Trong trường hợp đó, những gì tôi đã làm là tìm kiếm các phụ thuộc của một ứng dụng (GBrainy) mà tôi biết sử dụng MONO và dựa trên đó, phát hiện gói "mẹ" và tìm kiếm các phụ thuộc nghịch đảo. Uff, nó có vẻ khó khăn nhưng nó là vô nghĩa.

Tôi đã mở một thiết bị đầu cuối và viết:

apt-cache phụ thuộc vào gbrainy

Kết quả là:

  Phụ thuộc: mono-runtime
 | Phụ thuộc: libc6
 | Phụ thuộc: libc6.1
  Phụ thuộc: libc0.1
  Phụ thuộc: libglib2.0-cil
  Phụ thuộc: libgtk2.0-0
  Phụ thuộc: libgtk2.0-cil
  Phụ thuộc: liblaunchpad-integration1.0-cil
  Phụ thuộc: libmono-addins-gui0.2-cil
  Phụ thuộc: libmono-addins0.2-cil
  Phụ thuộc: libmono-cairo2.0-cil
  Phụ thuộc: libmono-corlib2.0-cil
  Phụ thuộc: libmono-posix2.0-cil
  Phụ thuộc: libmono-system2.0-cil
  Phụ thuộc: librsvg2-2
  Phụ thuộc: mono-csharp-shell

Đối với tôi, dường như mono-runtime có thể là một ứng cử viên sáng giá, vì vậy tôi quyết định tìm kiếm tất cả các gói phụ thuộc vào mono-runtime:

apt-cache rdepends thời gian chạy đơn

Thì đấy! Tất cả các gói sử dụng MONO đều xuất hiện.

Để xem danh sách đầy đủ tất cả các gói phụ thuộc vào một số gói MONO, chúng tôi có thể viết:

apt-cache rdepends mono *
Lưu ý: phương pháp này chỉ hoạt động cho những ứng dụng được liệt kê trong kho APT.
Cảm ơn Feli!

Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: Miguel Ángel Gatón
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.

  1.   Philip Becerra dijo

    Cảm ơn vì đã trả lời Pablo, và cảm ơn vì bài đăng 🙂

  2.   Saito Mordraw dijo

    Pablo bạn là thần tượng của tôi!

    Bài xuất sắc.

  3.   Hãy sử dụng Linux dijo

    Tuyệt quá! Cảm ơn vì dữ liệu!

  4.   xảo trá dijo

    Đối với những người trong chúng ta, những người sử dụng phân phối thô ... trò đùa

    đối với những người sử dụng trình quản lý gói dựa trên RPM, lệnh này được sử dụng

    gói rpm -qR

    Ví dụ:

    linux @ dhcppc3: ~> rpm -qR xmms
    / Bin / sh
    / Bin / sh
    rpmlib (PayloadFilesHavePrefix) <= 4.0-1
    rpmlib (CompressedFileNames) <= 3.0.4-1
    libICE.so.6
    libSM.so.6
    libX11.so.6
    libXxf86vm.so.1
    libc.so.6
    libc.so.6 (GLIBC_2.0)
    libc.so.6 (GLIBC_2.1)
    libc.so.6 (GLIBC_2.3)
    libc.so.6 (GLIBC_2.3.4)
    libc.so.6 (GLIBC_2.4)
    libc.so.6 (GLIBC_2.7)
    libdl.so.2
    libdl.so.2 (GLIBC_2.0)
    libdl.so.2 (GLIBC_2.1)
    libgdk-1.2.so.0
    libglib-1.2.so.0
    libgthread-1.2.so.0
    libgtk-1.2.so.0
    libpthread.so.0
    libpthread.so.0 (GLIBC_2.0)
    libpthread.so.0 (GLIBC_2.1)
    libpthread.so.0 (GLIBC_2.3.2)
    libxmms.so.1
    rpmlib (PayloadIsLzma) <= 4.4.6-1