سؤال

أعرف كيفية استخدام rpm لسرد محتويات الحزمة (rpm -qpil package.rpm).ومع ذلك، يتطلب هذا معرفة موقع الملف .rpm على نظام الملفات.الحل الأكثر أناقة هو استخدام مدير الحزم، وهو في حالتي YUM.كيف يمكن استخدام YUM لتحقيق ذلك؟

هل كانت مفيدة؟

المحلول

هناك حزمة تسمى yum-utils الذي يعتمد على YUM ويحتوي على أداة تسمى repoquery يمكنها أن تفعل هذا.

$ repoquery --help | grep -E "list\ files" 
  -l, --list            list files in this package/group

مجتمعة في مثال واحد:

$ repoquery -l time
/usr/bin/time
/usr/share/doc/time-1.7
/usr/share/doc/time-1.7/COPYING
/usr/share/doc/time-1.7/NEWS
/usr/share/doc/time-1.7/README
/usr/share/info/time.info.gz

في نظام RH واحد على الأقل، مع rpm v4.8.0، وyum v3.2.29، وrepoquery v0.0.11، repoquery -l rpm لا يطبع شيئا.

إذا كنت تواجه هذه المشكلة، حاول إضافة --installed علَم: repoquery --installed -l rpm.


DNF تحديث:

ليستخدم dnf بدلاً من yum-utils, ، استخدم الأمر التالي:

$ dnf repoquery -l time
/usr/bin/time
/usr/share/doc/time-1.7
/usr/share/doc/time-1.7/COPYING
/usr/share/doc/time-1.7/NEWS
/usr/share/doc/time-1.7/README
/usr/share/info/time.info.gz

نصائح أخرى

rpm -ql [packageName]

مثال

# rpm -ql php-fpm

/etc/php-fpm.conf
/etc/php-fpm.d
/etc/php-fpm.d/www.conf
/etc/sysconfig/php-fpm
...
/run/php-fpm
/usr/lib/systemd/system/php-fpm.service
/usr/sbin/php-fpm
/usr/share/doc/php-fpm-5.6.0
/usr/share/man/man8/php-fpm.8.gz
...
/var/lib/php/sessions
/var/log/php-fpm

لا حاجة لتثبيت yum-utils، أو معرفة موقع ملف rpm.

$ yum install -y yum-utils

$ repoquery -l packagename

لا أعتقد أنه يمكنك إدراج محتويات الحزمة باستخدام yum، ولكن إذا كان لديك ملف .rpm على نظامك المحلي (كما هو الحال على الأرجح بالنسبة لجميع الحزم المثبتة)، فيمكنك استخدام الأمر rpm لسرد محتويات تلك الحزمة مثل ذلك:

rpm -qlp /path/to/fileToList.rpm

إذا لم يكن لديك ملف الحزمة (.rpm)، ولكن الحزمة مثبتة لديك، فجرّب ما يلي:

rpm -ql packageName

هناك العديد من الإجابات الجيدة هنا، لذا اسمحوا لي أن أقدم إجابة سيئة:

: you can type in anything below, doesnt have to match anything

yum whatprovides "me with a life"

: result of the above (some liberties taken with spacing):

Loaded plugins: fastestmirror
base | 3.6 kB 00:00 
extras | 3.4 kB 00:00 
updates | 3.4 kB 00:00 
(1/4): extras/7/x86_64/primary_db | 166 kB 00:00 
(2/4): base/7/x86_64/group_gz | 155 kB 00:00 
(3/4): updates/7/x86_64/primary_db | 9.1 MB 00:04 
(4/4): base/7/x86_64/primary_db | 5.3 MB 00:05 
Determining fastest mirrors
 * base: mirrors.xmission.com
 * extras: mirrors.xmission.com
 * updates: mirrors.xmission.com
base/7/x86_64/filelists_db | 6.2 MB 00:02 
extras/7/x86_64/filelists_db | 468 kB 00:00 
updates/7/x86_64/filelists_db | 5.3 MB 00:01 
No matches found

: the key result above is that "primary_db" files were downloaded

: filelists are downloaded EVEN IF you have keepcache=0 in your yum.conf

: note you can limit this to "primary_db.sqlite" if you really want

find /var/cache/yum -name '*.sqlite'

: if you download/install a new repo, run the exact same command again
: to get the databases for the new repo

: if you know sqlite you can stop reading here

: if not heres a sample command to dump the contents

echo 'SELECT packages.name, GROUP_CONCAT(files.name, ", ") AS files FROM files JOIN packages ON (files.pkgKey = packages.pkgKey) GROUP BY packages.name LIMIT 10;' | sqlite3 -line /var/cache/yum/x86_64/7/base/gen/primary_db.sqlite 

: remove "LIMIT 10" above for the whole list

: format chosen for proof-of-concept purposes, probably can be improved a lot

Yum ليس لديه نوع الحزمة الخاص به.يعمل Yum ويساعد في إدارة عدد الدورات في الدقيقة.لذلك، يمكنك استخدام yum لسرد RPMs المتاحة ثم تشغيل الأمر rpm -qlp لرؤية محتويات تلك الحزمة.

حالياً reopquery تم دمجها في dnf و yum, ، لذا اكتب:

dnf repoquery -l <pkg-name>

سوف يسرد محتويات الحزمة من مستودع بعيد (حتى بالنسبة للحزم التي لم يتم تثبيتها بعد)

يعني تركيب منفصل dnf-utils أو yum-utils لم تعد الحزمة مطلوبة للوظيفة حيث يتم الآن دعمها محليًا.


للإدراج المثبتة أو محلي (*.rpm الملفات) محتويات الحزم موجودة rpm -ql

لا أعتقد أنه من الممكن مع yum ORG dnf (لا repoquery أمر فرعي)

يرجى تصحيح لي إذا كنت مخطئا

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top