Αυτό το σύντομο mini-tutorial εμφανίζεται ως απάντηση στην ανησυχία ενός από τους αναγνώστες μας, Felipe, που μας έγραψε ρωτώντας: «Πώς μπορώ να ξέρω ποιες εφαρμογές χρησιμοποιούν Java;«. Λοιπόν, δεν νομίζω ότι υπάρχει τρόπος να το ξέρεις, αλλά υπάρχει ένας απλός τρόπος να το ξέρεις ποια πακέτα (δηλαδή ποιες εφαρμογές) παρατίθενται στα αποθετήρια εξαρτώνται από τα πακέτα JAVA. Η ίδια μέθοδος μπορεί να χρησιμοποιηθεί για οποιοδήποτε άλλο πακέτο, για παράδειγμα για να μάθετε από ποιες εφαρμογές εξαρτώνται MONO. |
Το πιο συνηθισμένο είναι να μάθετε ποια άλλα πακέτα πρέπει να εγκατασταθούν για να λειτουργήσει καλά το πακέτο X. Αυτά τα απαιτούμενα πακέτα ονομάζονται εξαρτήσεις και μπορούν να βρεθούν ως εξής:
Το apt-cache εξαρτάται από το mypackage
Μπορείτε επίσης να μεταβείτε στο Synaptic, να βρείτε το πακέτο, να το κάνετε κάντε δεξί κλικ πάνω του> Ιδιότητες> Εξαρτήσεις.
Ωστόσο, ο στόχος αυτής της ανάρτησης είναι να μάθετε ακριβώς το αντίστροφο: ποια πακέτα έχουν πακέτο X ως εξάρτηση. Με άλλα λόγια, σε αυτήν την περίπτωση γνωρίζουμε το πακέτο "μητέρα" και θέλουμε να μάθουμε τι άλλα πακέτα απαιτούν να εγκατασταθεί αυτό το πακέτο "μητέρα" για να λειτουργήσει.
Ας προχωρήσουμε στο παράδειγμα για να κατανοήσουμε καλύτερα το θέμα. Ας δούμε πώς να εντοπίσουμε πακέτα που εξαρτώνται από το πακέτο openjdk-6-jre. Δηλαδή, πώς να εντοπίζετε αυτές τις εφαρμογές που αναφέρονται στα αποθετήρια, οι οποίες εξαρτώνται από το JAVA.
Άνοιξα ένα τερματικό και έγραψα:
apt-cache rdependens openjdk-6-jre
Θα εμφανιστεί μια μεγάλη λίστα πακέτων, συμπεριλαμβανομένων των OpenOffice, FreeMind, OpenCol κ.λπ.
Πώς να βρείτε το σωστό πακέτο "μητέρα";
Εντάξει, τόσο εύκολο, αλλά πώς μπορώ να μάθω ποιο είναι το πακέτο "μητέρα" με βάση το οποίο πρέπει να αναζητήσω; Λοιπόν, αυτό απαιτεί κάποια εμπειρία και προηγούμενη ανάλυση.
Ας υποθέσουμε ότι θέλω να μάθω όλες τις εφαρμογές που βασίζονται στο MONO. Σε αυτήν την περίπτωση, αυτό που έκανα ήταν να αναζητήσω τις εξαρτήσεις μιας εφαρμογής (GBrainy) που γνωρίζω ότι χρησιμοποιεί το MONO και, βάσει αυτού, εντοπίζει το πακέτο "μητέρα" και αναζητήστε τις αντίστροφες εξαρτήσεις. Φαίνεται δύσκολο, αλλά είναι ανοησία.
Άνοιξα ένα τερματικό και έγραψα:
Το apt-cache εξαρτάται από τον εγκέφαλο
Τα αποτελέσματα είναι τα εξής:
Εξαρτάται: μονο-χρόνος εκτέλεσης
Εξαρτάται: libc6
Εξαρτάται: libc6.1
Εξαρτάται: libc0.1
Εξαρτάται: libglib2.0-cil
Εξαρτάται: libgtk2.0-0
Εξαρτάται: libgtk2.0-cil
Εξαρτάται: liblaunchpad-integration1.0-cil
Εξαρτάται: libmono-addins-gui0.2-cil
Εξαρτάται: libmono-addins0.2-cil
Εξαρτάται: libmono-cairo2.0-cil
Εξαρτάται: libmono-corlib2.0-cil
Εξαρτάται: libmono-posix2.0-cil
Εξαρτάται: libmono-system2.0-cil
Εξαρτάται: librsvg2-2
Εξαρτάται: mono-csharp-shell
Μου φάνηκε ότι το μονο-runtime θα μπορούσε να είναι καλός υποψήφιος, γι 'αυτό αποφάσισα να ψάξω για όλα τα πακέτα που εξαρτώνται από το μονο-runtime:
Το apt-cache εξαρτάται από το μονο-χρόνο εκτέλεσης
Βόιλα! Εμφανίζονται όλα τα πακέτα που χρησιμοποιούν το MONO.
Για να δείτε μια πλήρη λίστα όλων των πακέτων που εξαρτώνται από κάποιο πακέτο MONO, θα μπορούσαμε να γράψουμε:
apt-cache rdepends mono *
Ευχαριστώ που απαντήσατε στον Pablo και ευχαριστώ για την ανάρτηση 🙂
Πάμπλο είσαι το είδωλό μου!
Εξαιρετική θέση.
Μεγάλος! Ευχαριστώ για τα δεδομένα!
Για όσους από εμάς χρησιμοποιούν ακαθάριστες διανομές ………… αστείο
Για όσους χρησιμοποιούν διαχειριστές πακέτων με βάση το RPM χρησιμοποιείται αυτή η εντολή
πακέτα rpm -qR
Παράδειγμα:
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