سؤال كيف تعرف من أي مستودع yum تم تثبيت حزمة؟


بعد أن قمت بتثبيت حزمة بواسطة yum (مع تكوين مستودعات متعددة) ، كيف يمكنني العثور على أي مستودع تم تثبيته؟

إذا قمت بتشغيل yum info package-name (أو yum list package-name) ، أستطيع أن أرى فقط أن الحزمة "مثبتة".


138
2017-09-03 15:15


الأصل


سؤال عظيم! لقد قمت بتركيب yum-utils وحاولت أن يكون واحدًا من اسم utous يُسمى repoquery ، لكن لا حظ. - Sean Staats
أنظر أيضا serverfault.com/questions/90409/... :) - warren
warren الرابط الخاص بك ليست مفيدة لأن الرابط الخاص بك هو سؤال حول "ما هو ريبو هو rpm المخزنة في" ولكن هذا السؤال يسأل "ما هو الريبو هو تثبيت دورة في الدقيقة من". أسئلة مختلفة. - Trevor Boyd Smith
إذا كنت معتادًا على القيام بذلك rpm -qa|grep NAME إذا تستطيع فعل yum list installed|grep NAME للعثور على ما هو repo rpm من. - Trevor Boyd Smith
TrevorBoydSmith - قبل 7 سنوات ، كانت قريبة. اليوم هو ما يزال مماثل. لم يقل ابدا انه كان نفسه. فقط أنه كان ذات صلة. - warren


الأجوبة:


مع تثبيت yum-utils ، سيوفر repoquery المعلومات التي تبحث عنها (هنا "epel" هو المستودع).

└─[$]> repoquery -i cherokee

Name        : cherokee
Version     : 0.99.49
Release     : 1.el5
Architecture: i386
Size        : 8495964
Packager    : Fedora Project
Group       : Applications/Internet
URL         : http://www.cherokee-project.com/
Repository  : epel
Summary     : Flexible and Fast Webserver
Description :
Cherokee is a very fast, flexible and easy to configure Web Server. It supports
the widespread technologies nowadays: FastCGI, SCGI, PHP, CGI, TLS and SSL
encrypted connections, Virtual hosts, Authentication, on the fly encoding,
Apache compatible log files, and much more.

77
2018-06-21 19:16



لا يبدو repoquery للعمل الصحيح ، وأنا أحصل على إصدارات حزمة مختلفة ثم yum info package_name، لا يبدو أن الاستعلام عن المستودعات في نفس الترتيب كما yum. - Mike Miller
نفس الشيء هنا على بعض الخوادم. yum info package_name يعطينا نتائج أكثر من الندوة على ما يبدو. هذا هو السبب في أن تبادل المكدس لا ينبغي أن يقفل في الأصوات. - reflexiv
لقد وجدت أن إجابة شيونغ شياماي لم تكن صحيحة. repoquery -i $pkg يعطي الريبو منها $pkg متاح ، وليس الريبو الذي منه $pkg تم تثبيتها. أنا فعلت هذا الأمر و rpm -qi $pkg وحصلت على أرقام الإصدارات المختلفة. rpm نتج رقم إصدار سابق عن رقم repoquery.
من الممكن أن تكون نسختك المحلية قديمة ، أو تم تثبيتها بأوامر إضافية إلى yum (على سبيل المثال ، --use-mirror). لا أعتقد أنه من الممكن دائما احصل على الجواب الصحيح. - Xiong Chiamiov


ما هو إصدار yum؟

في الإصدار الحالي إذا كانت الحزمة المثبتة هي نفس الإصدار الموجود في أحدث إصدار متاح ، يتم عرض repo الذي تم تثبيته منه.

$ yum info irssi
Installed Packages
Name       : irssi
Arch       : i586
Version    : 0.8.14
Release    : 1.fc11
Size       : 2.3 M
Repo       : installed
From repo  : updates
Summary    : Modular text mode IRC client with Perl scripting
URL        : http://irssi.org/
License    : GPLv2+
Description: Irssi is a modular IRC client with Perl scripting. Only text-mode
           : frontend is currently supported. The GTK/GNOME frontend is no
           : longer being maintained.

$ yum --version
3.2.23

إذا كانت هناك حزمة أحدث متوفرة ، فسيتم عرضها بشكل منفصل ، مع الإصدار الجديد الذي يعرض الريبو الذي تتوفر منه.


38
2017-09-03 16:25



أستخدم yum 3.2.19 في CentOs 5.3 ولا يوجد صف "من الريبو". - lg.
أجل ... كنت أختبره في 3.2.21 ، والذي لا يحتوي على هذه المعلومات في أي مكان. عندما فعلت ذلك على مربع بلدي يحتوي على 3.2.23 ، عملت. - Alex
الآن هذا هو الحل الأفضل ، ولكن لا ينطبق على RHEL / Centos 5.3. أوافق على هذا الحل ، ولكني على استعداد لاختيار إجابة أخرى إذا كنت ستطبق أيضًا على RHEL / Centos 5.3. - lg.
هذا هو عدم الذهاب في CentOS 5.5 سواء. - Mike Miller
"من مندوب" غير متوفر حتى في سنتوس 5.8 - sepehr


الطريق إلى وقت متأخر ولكن (على الأقل في Fedora 15) يمكن استخدام yumdb لطلبات بحث مشابهة:

yumdb info 'python*'

وما احتاجه بالفعل لإدراج الحزم من repo (s) معين:

yumdb search from_repo 'my-*-repo'

20
2017-10-26 09:01



وهو يعمل أيضا على فيدورا 14 - lg.
يعمل على RHEL 6.2 - pixelbeat


إذا فشل كل شيء آخر ، يمكنك فحص yumdb يدوياً. انها تقع في /var/lib/yum/yumdb ويحتوي على معلومات مفصلة عن كل حزمة مثبتة. ستكون مهتمًا بشكل خاص from_repo. على سبيل المثال ، ل bind-utils صفقة:

# for i in /var/lib/yum/yumdb/b/*bind-utils*/*; do echo $i: `cat $i`; done
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/checksum_data: 39f7840f93d3d76825a9e8da79cfe0366f7fad68f018a273477aee62cccfa3f4
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/checksum_type: sha256
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/command_line: install bind-utils
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo: updates
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo_revision: 1397654451
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo_timestamp: 1397654759
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/installed_by: 0
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/reason: user
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/releasever: 6

للحصول على المعلومات التي تريدها فقط:

# cat /var/lib/yum/yumdb/b/*bind-utils*/from_repo
updates

توفر الإصدارات اللاحقة المزيد من البيانات ؛ على سبيل المثال في EL 7 يتم تخزين المرآة الدقيقة وعنوان URL الذي تم تنزيل الحزمة منه هنا.


8
2018-05-25 04:19



+1. لكن من الأفضل أن تفعل شيئًا مثل: for i in /var/lib/yum/yumdb/b/*bind-utils*/*; do echo $i: `cat $i` | grep -oP 'from_repo:\ \K.*'; done، والتي في المثال أعلاه ترجع: updates - أكثر قابلية للقراءة! - Greg Dubicki
GregDubicki كانت نقطة الأمر إظهار المزيد من سياق ما يجري وكيفية تخزين الأشياء. يبدو أنها فشلت في القيام بذلك: ليس هناك حاجة لذلك grep أي شيء هنا ، ويمكنك حتى إسقاط الحلقة. بسيط جدا cat /var/lib/yum/yumdb/b/*bind-utils*/from_repo هو كل ما تحتاجه. - Michael Hampton♦


rpm -qi packagename

سوف اقول لكم البائع ومعبئ


6
2018-02-09 14:48





إذا تم تثبيت الحزمة مؤخرًا ، يمكنك البحث في / var / cache / yum.

ضمن هذا الدليل ، هناك دليل لكل repo ، وفي ذلك دليل الحزم. لذا ، ستفعل شيئًا مثل:

find /var/cache/yum -name [package-name]*

ومع ذلك ، يجب تمكين ذاكرة التخزين المؤقت في ملف /etc/yum.conf الخاص بك:

cachedir=/var/cache/yum
keepcache=1

لاحظ أن أ yum clean [packages|all] سوف مسح خارج دليل ذاكرة التخزين المؤقت.

إذا كان دليل ذاكرة التخزين المؤقت فارغًا ، فهناك طريقة بديلة. المعلومات التي تقرأ من قبل yum info [package] يأتي من /var/cache/yum/[repo]/primary.xml.gz

يمكنك البحث في الملف عن طريق إدخال:

gunzip -d -c /var/cache/yum/[repo]/primary.xml.gz | grep '<name>[package]'

ومع ذلك ، على الآلات حيث yum info [package] لا يعرض "من repo:" ، كما هو مشار إليه بـ "theotherreceive" ، لأنه لا يوجد في ملف primary.xml ، لذلك لن تكون هناك طريقة لاسترداد تلك المعلومات. لذلك ، إذا كانت الحزمة في ملفين أساسيين أو أكثر من ملفات primary.xml ، فسيتعين عليك تحديد أولوية repo على نظامك.


4
2017-09-03 16:36



قد يكون هذا الحل خيارًا (أنا أصوته) ، لكنني أبحث عن إجابة محددة. - lg.


لمعرفة ما تم تثبيته من Epel repo: (يجب أن تعمل تحت Centos 5.5) ، إذا لم يكن لديك repo مسمى epel ، فإنه يبصقون كل شيء مثبت.

repoquery --repoid = epel -a | xargs قائمة yum المثبتة


4
2018-04-07 21:20



يبدو أن هذا يعمل طالما أنه لا يوجد حزمة محدثة في المستودع. لذلك تحتاج إلى تشغيل تحديث yum فقط قبل استخدامه. - codewaggle


بناء على والإجابة من قبل Swoogan
على RedHat و CentOS يمكن للمرء القيام به

sudo grep -ir PACKAGE_NAME /var/cache/yum/

يجب أن تبدو النتائج شيء من هذا القبيل

Binary file /var/cache/yum/REPOSITORY_NAME/primary.xml.gz.sqlite matches

أين repository_name  هو المستودع حيث يمكن العثور على الحزمة الخاصة بك ، وربما تم تثبيته من القائمة الأولى في قائمة (انظر yum repolist)


3
2018-05-30 00:19





هل يتم التقاط هذه المعلومات في أي مكان؟ لا تحتوي الحزمة على هذه المعلومات ، ولا يهمها yum بعد أن تعثر على الحزمة. ربما يمكنك تجميعها معًا من خلال معرفة ما هي رزمة repos ومن ثم تحديد أي منها له الأولوية.


1
2017-09-03 16:19



قد يكون هذا الحل خيارًا (أنا أصوته) ، ولكن فقط للحزمة المثبتة حديثًا ، لأنه يمكنني تغيير المستودع وأولويته. - lg.


ليس حلاً رائعًا ، ولكنني اكتشفت أن قائمة yum المتاحة ستعرض لك مكان توفر أحدث إصدار من كل حزمة ، على سبيل المثال:

قائمة yum المتاحة grep gstreamer

PackageKit-gstreamer-plugin.x86_64 0.3.16-1.fc10          updates               

تحديثات bluez-gstreamer.i386 4.30-2.fc10
gstreamer.i386 0.10.21-2.fc10 fedora
gstreamer-devel.i386 0.10.21-2.fc10 fedora
gstreamer-devel.x86_64 0.10.21-2.fc10 fedora
gstreamer-plugins-bad-devel.i386 0.10.9-1.fc10 rpmfusion-free
gstreamer-plugins-bad-devel.x86_64 0.10.9-1.fc10 rpmfusion-free

حتى تتمكن من عمل قائمة yum متاحة على الحزمة الخاصة بك ، ثم قارن الإصدار المثبت الخاص بك باستخدام yum list installed ، ولديك فكرة جيدة عن تلك التي تأتي من repo إذا كانت الإصدارات متطابقة.


1
2017-09-03 16:37



هذا صحيح فقط هو لم يتم تثبيت الحزمة حتى الآن. - lg.
في حين أنه لا يجيب على مكتب خدمات المشاريع ويتساءل بالضبط، كان من المفيد جدا بالنسبة لي لأنه يعمل في Centoss 5.5 فقط مع يم ولا تيلس أخرى، ويمكنك: 1. إلغاء تثبيت حزمة ثم الاستعلام لنرى أين الريبو هو إعادة تثبيت ثم ، أو 2. الاستعلام على جهاز آخر دون تثبيت الحزمة. - lreeder


يمكنك إضافة علامة verbose إلى "معلومات yum":

yum info -v <package_name>

سيكون مستودع التثبيت تحت إخراج "من الريبو".


1
2017-08-19 22:42



يبدو أن هذا هو الحل الوحيد الذي لا يتطلب تركيب yum-utils. - Mark Edington