it-swarm-vi.tech

Làm thế nào để biết từ kho lưu trữ yum mà một gói đã được cài đặt?

Sau khi tôi đã cài đặt một gói bởi yum (với nhiều kho được cấu hình), làm thế nào tôi có thể tìm thấy từ kho lưu trữ đã được cài đặt?

Nếu tôi chạy yum info package-name (hoặc là yum list package-name), Tôi chỉ có thể thấy rằng gói được "cài đặt".

159
lg.

Với yum-utils được cài đặt, repoquery sẽ cung cấp thông tin bạn tìm kiếm (ở đây 'epel' là kho lưu trữ).

└─[$]> 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.

Phiên bản nào của yum?

Trên phiên bản hiện tại nếu gói đã cài đặt giống với phiên bản mới nhất hiện có thì repo nó đã được cài đặt sẽ được hiển thị.

$ 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

Nếu có một gói mới hơn có sẵn, thì nó sẽ được hiển thị riêng, với phiên bản mới hiển thị repo mà nó có sẵn từ đó.

45
theotherreceive

Đến muộn nhưng (ít nhất là trên Fedora 15) người ta có thể sử dụng yumdb cho các truy vấn tương tự:

yumdb info 'python*'

Và những gì tôi thực sự cần để liệt kê các gói từ repo (s) đã cho:

yumdb search from_repo 'my-*-repo'
22
Martian

Nếu vẫn thất bại, bạn có thể kiểm tra yumdb bằng tay. Nó nằm ở /var/lib/yum/yumdb và chứa thông tin chi tiết trên mỗi gói được cài đặt. Bạn sẽ đặc biệt thích thú với from_repo. Ví dụ: đối với bind-utils gói:

# 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

Để có được thông tin bạn muốn:

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

Các phiên bản sau này sẽ cung cấp nhiều dữ liệu hơn; ví dụ trong EL 7, máy nhân bản và URL chính xác mà gói được tải xuống được lưu trữ ở đây.

11
Michael Hampton
rpm -qi packagename

Sẽ cho bạn biết nhà cung cấp và đóng gói

6
Esmail

Để xem những gì được cài đặt từ repo epel: (Nên hoạt động theo Centos 5.5), nếu bạn không có repo có tên epel, nó sẽ nhổ ra mọi thứ được cài đặt.

repoquery --repoid = epel -a | danh sách xargs yum được cài đặt

5
David A.

Dựa trên và trả lời bởi Swoogan
[.__.] Trên RedHat và CentOS, người ta có thể làm

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

Các kết quả sẽ trông giống như

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

Trong đó repository_name là kho lưu trữ nơi gói của bạn có thể được tìm thấy và có thể nó đã được cài đặt từ gói đầu tiên trong danh sách (xem yum repolist)

4
iddqd

Nếu gói được cài đặt gần đây, bạn có thể xem trong/var/cache/yum.

Trong thư mục đó, có một thư mục cho mỗi repo và trong đó là một thư mục gói. Vì vậy, bạn sẽ làm một cái gì đó như:

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

Tuy nhiên, bộ đệm phải được bật trong tệp /etc/yum.conf của bạn:

cachedir=/var/cache/yum
keepcache=1

Lưu ý rằng một yum clean [packages|all] sẽ xóa thư mục bộ đệm.

Nếu thư mục bộ đệm trống, có một cách khác. Thông tin được đọc bởi yum info [package] đến từ /var/cache/yum/[repo[/primary.xml.gz

Bạn có thể xem qua tệp bằng cách nhập:

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

Tuy nhiên, trên các máy có yum info [package] không hiển thị "Từ repo:", như được biểu thị bởi 'thetherreceive', đó là vì nó không có trong tệp sơ cấp, vì vậy sẽ không có cách nào để lấy thông tin đó. Do đó, nếu gói nằm trong hai hoặc nhiều tệp sơ cấp, bạn sẽ phải xác định mức ưu tiên repo trên hệ thống của mình.

4
Swoogan

Cách tiếp cận đơn giản và đơn giản nhất mà không cần cài đặt bất kỳ công cụ bổ sung nào, greping hoặc xuất thông tin không liên quan chỉ đơn giản là:

yum list installed [package name]

Cột thứ ba sẽ cung cấp ID của kho lưu trữ mà gói đã được cài đặt từ đó.

Điều này đã được đề cập trong một nhận xét về câu hỏi ban đầu bằng grep, nhưng điều đó không cần thiết. Bạn chỉ có thể chuyển tên gói trực tiếp đến yum để lọc.

1
Scott Buchanan

Bạn có thể thêm cờ verbose vào "thông tin yum":

yum info -v <package_name>

Kho lưu trữ cài đặt sẽ nằm dưới đầu ra "Từ repo".

1
smw

Thông tin đó có được nắm bắt ở bất cứ đâu không? Gói không có thông tin đó và yum không quan tâm sau khi tìm thấy gói. Bạn có thể ghép nó lại với nhau bằng cách tìm ra repos nào có gói và sau đó xác định cái nào được ưu tiên.

1
Alex

Không phải là một giải pháp tuyệt vời, nhưng tôi thấy rằng danh sách yum có sẵn sẽ cho bạn thấy nơi có phiên bản cập nhật nhất của mỗi gói, ví dụ:

danh sách yum có sẵn | greper

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

cập nhật bluez-gstreamer.i386 4.30-2.fc10
[.__.] guxer.i386 0.10.21-2.fc10 Fedora
[.__.] guxer-devel.i386 0.10.21-2.fc10 Fedora
[.__.] guxer-devel.x86_64 0.10.21-2.fc10 Fedora
[.__.] guxer-plugins-bad-devel.i386 0.10.9-1.fc10 vòng/phút miễn phí
[.__.] guxer-plugins-bad-devel.x86_64 0.10.9-1.fc10 vòng/phút miễn phí

Vì vậy, bạn có thể thực hiện một danh sách yum có sẵn trên gói của mình, sau đó so sánh phiên bản đã cài đặt của bạn bằng cách sử dụng danh sách yum đã cài đặt và có ý tưởng hay về việc repo nó đến từ đâu nếu các phiên bản khớp.

1
gareth_bowles

Không có lệnh nào ở trên làm việc cho tôi. Đây là những gì tôi đã phải làm.

yum provides "*compat-libstdc*"

Một tài liệu tham khảo tốt là ở đây.

https://access.redhat.com/sites/default/files/attachments/rh_yum_chcoateet_1214_jcs_print-1.pdf

1
cokedude

Vì vậy, tôi biết đây là một câu hỏi hơi cũ - nhưng nó xuất hiện trên tìm kiếm google cho những gì tôi đang tìm kiếm.

Ngoài ra còn có một phương pháp để có được một danh sách repos duy nhất được sử dụng:

# repoquery -ai | grep 'Repository  : ' | sort | uniq

Điều này sẽ liệt kê các kho lưu trữ đã có các gói được cài đặt từ đó.

1
Steven Haigh