يظهر هذا البرنامج التعليمي القصير باسم استجابة لقلق أحد قرائنا ، فيليبيالذي كتب إلينا يسأل: «كيف يمكنني معرفة التطبيقات التي تستخدم Java؟«. حسنًا ، لا أعتقد أن هناك طريقة لمعرفة ذلك ، ولكن هناك طريقة بسيطة لمعرفة ذلك تعتمد الحزم (أي التطبيقات) المدرجة في المستودعات على حزم JAVA. يمكن استخدام نفس الطريقة مع أي حزمة أخرى ، على سبيل المثال لمعرفة التطبيقات التي تعتمد عليها MONO. |
الأكثر شيوعًا هو الرغبة في معرفة الحزم الأخرى التي يجب تثبيتها حتى تعمل الحزمة X بشكل جيد. تسمى هذه الحزم المطلوبة التبعيات ويمكن العثور عليها على النحو التالي:
يعتمد apt-cache على mypackage
يمكنك أيضًا الانتقال إلى Synaptic ، والعثور على الحزمة ، والقيام بذلك انقر بزر الماوس الأيمن فوقه> خصائص> التبعيات.
ومع ذلك ، فإن الهدف من هذا المنشور هو اكتشاف العكس تمامًا: أي الحزم تحتوي على حزمة X باعتبارها تبعية. بمعنى آخر ، في هذه الحالة نعرف الحزمة "الأم" ونريد أن نعرف الحزم الأخرى التي تتطلب تثبيت الحزمة "الأم" للعمل.
دعنا ننتقل إلى المثال لفهم الأمر بشكل أفضل. دعونا نرى كيفية اكتشاف الحزم التي تعتمد على حزمة openjdk-6-jre. أي ، كيفية اكتشاف تلك التطبيقات المدرجة في المستودعات ، والتي تعتمد على JAVA.
فتحت المحطة وكتبت:
apt-cache rdepends openjdk-6-jre
ستظهر قائمة طويلة من الحزم ، بما في ذلك OpenOffice و FreeMind و OpenCol وما إلى ذلك.
كيف تكتشف حزمة "الأم" الصحيحة؟
حسنًا ، من السهل جدًا حتى الآن ، ولكن كيف يمكنني معرفة الحزمة "الأم" التي يجب أن أبحث عنها؟ حسنًا ، هذا يتطلب بعض الخبرة والتحليل المسبق.
لنفترض أنني أريد معرفة جميع التطبيقات القائمة على MONO. في هذه الحالة ، ما فعلته هو البحث عن تبعيات تطبيق (GBrainy) أعرف أنه يستخدم MONO ، وبناءً على ذلك ، اكتشف الحزمة "الأم" وابحث عن التبعيات العكسية. Uff ، يبدو الأمر صعبًا ولكنه هراء.
فتحت المحطة وكتبت:
يعتمد apt-cache على gbrainy
النتائج هي كالتالي:
يعتمد على: وقت تشغيل أحادي
| يعتمد على: libc6
| يعتمد على: libc6.1
يعتمد على: libc0.1
يعتمد على: libglib2.0-cil
يعتمد على: libgtk2.0-0
يعتمد على: libgtk2.0-cil
يعتمد على: liblaunchpad-insert1.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
يعتمد على: أحادي csharp-shell
بدا لي أن وقت التشغيل الأحادي قد يكون مرشحًا جيدًا ، لذلك قررت البحث عن جميع الحزم التي تعتمد على وقت التشغيل الأحادي:
apt-cache rdepends أحادية التشغيل
هاهو! تظهر جميع الحزم التي تستخدم MONO.
للاطلاع على قائمة كاملة بجميع الحزم التي تعتمد على بعض حزم MONO ، كان من الممكن أن نكتب:
apt-cache rdepends mono *
شكرا على الرد على بابلو ، وشكرا على المنشور 🙂
بابلو أنت مثلي الأعلى!
منشور ممتاز.
عظيم! شكرا على البيانات!
لأولئك منا الذين يستخدمون التوزيعات الإجمالية ... نكتة
بالنسبة لأولئك الذين يستخدمون مديري الحزم المستندة إلى RPM ، يتم استخدام هذا الأمر
حزم rpm -qR
على سبيل المثال:
لينكس @ dhcppc3: ~> rpm -qR xmms
/ بن / ش
/ بن / ش
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