Tải xuống các gói RPM cho lệnh đã được cài đặt


11

Tôi có một máy CentOS mà tôi đã cài đặt openssl-devel bằng cách sử dụng

$ yum install openssl-devel 

Nó tải về và cài đặt tất cả các gói phụ thuộc. Bây giờ tôi cần tất cả các gói RPM. Có thể tải xuống chỉ các gói RPM không? Khi tôi làm điều này:

 $ yum install  openssl-devel -y --downloadonly 

Nó nói rằng

Package 1:openssl-devel-1.0.1e-4.fc18.x86_64 already installed and latest version

vì nó đã được cài đặt.

Có ai biết cách tải xuống các gói RPM đó trên cùng một hệ thống không?

Câu trả lời:


12

Có thể tải xuống các gói RPM đã được cài đặt bằng công --downloadonlytắc. Tôi không chắc tại sao yum không kiểm tra cài đặt này trước khi kiểm tra xem gói đã được cài đặt chưa, nhưng tôi đoán nó có thể được gây ra bởi kiến ​​trúc cơ bản của công cụ.

Dù sao, tất cả những gì bạn cần làm là bảo yum cài đặt lại gói:

yum --downloadonly --downloaddir=/tmp/rpm_files/ reinstall package_name

Tất nhiên, yum sẽ không biết phụ thuộc nào đã được cài đặt chỉ cho gói này, vì vậy nếu bạn lấy RPM và thử cài đặt chúng trên một hệ thống khác, một số phụ thuộc có thể bị thiếu. Có nhiều cách để khám phá toàn bộ biểu đồ phụ thuộc và tôi chắc chắn rằng điều này đã được mô tả ở nơi khác trên SE.


7

yumdownloadertrong yum-utilssẽ tải xuống bất kỳ gói nào bạn chuyển đến nó hoặc tùy ý tạo các URL mà các gói có thể được tải xuống từ đó.


Nó không giải quyết được các phụ thuộc, nó chỉ tải xuống openssl-devel.x86_64.rpm
abubacker

Không, nó không giải quyết phụ thuộc. Nhưng bạn muốn công cụ giải quyết các phụ thuộc bao xa? glibc? filesystem?
Ignacio Vazquez-Abrams

1
Yêu cầu của tôi rất đơn giản, tôi cần lấy danh sách các rpms, để cài đặt nó trên một máy khác đang ở chế độ ngoại tuyến
abubacker

Bạn nói "đơn giản", nhưng thực ra nó không đơn giản như bạn nghĩ. Không có công cụ nào sẽ giải quyết các phụ thuộc được đưa ra chỉ là một danh sách các gói đã được cài đặt.
Ignacio Vazquez-Abrams

1
Thật ra nó rất đơn giản, yum install openssl-devel -y --doadonly nếu tôi thực hiện lệnh này trên một máy khác, nó sẽ giải quyết tất cả các phụ thuộc, nhưng câu hỏi của tôi là liệu có thể thực hiện tương tự trong một máy mà chúng tôi đã cài đặt lệnh đó không đã
abubacker

3

Bạn có thể sử dụng lệnh repotrack từ gói yum-utils. Nó sẽ tải xuống toàn bộ cây phụ thuộc - ngay cả khi nó đã được cài đặt .

Thí dụ:

sudo yum install yum-utils      # Install yum-utils
sudo repotrack openssl-devel    # Download all dependencies for openssl-devel


Đầu ra mẫu:

[sbadra@rhel6 ~]$ sudo yum install openssl-devel
Loaded plugins: product-id, search-disabled-repos, subscription-manager
Setting up Install Process
Package openssl-devel-1.0.1e-57.el6.x86_64 already installed and latest version
Nothing to do

[sbadra@rhel6 ~]$ sudo repotrack openssl-devel
Downloading audit-libs-2.4.5-6.el6.x86_64.rpm
Downloading audit-libs-2.4.5-6.el6.i686.rpm
Downloading basesystem-10.0-4.el6.noarch.rpm
Downloading bash-4.1.2-48.el6.x86_64.rpm
Downloading ca-certificates-2017.2.14-65.0.1.el6_9.noarch.rpm
Downloading chkconfig-1.3.49.5-1.el6.x86_64.rpm
Downloading coreutils-8.4-46.el6.x86_64.rpm
Downloading coreutils-libs-8.4-46.el6.x86_64.rpm
.... more packages ....
Downloading openssl-1.0.1e-57.el6.i686.rpm
Downloading openssl-1.0.1e-57.el6.x86_64.rpm
Downloading openssl-devel-1.0.1e-57.el6.i686.rpm
Downloading openssl-devel-1.0.1e-57.el6.x86_64.rpm
.... more packages ....
Downloading sed-4.2.1-10.el6.x86_64.rpm
Downloading setup-2.8.14-23.el6.noarch.rpm
Downloading tzdata-2018c-1.el6.noarch.rpm
Downloading zlib-1.2.3-29.el6.x86_64.rpm
Downloading zlib-1.2.3-29.el6.i686.rpm
Downloading zlib-devel-1.2.3-29.el6.i686.rpm
Downloading zlib-devel-1.2.3-29.el6.x86_64.rpm

1
Tôi rút lại ghi chú về lỗi kiến ​​trúc vì nó thực sự là hành vi dự kiến. (x86_64 là một superset của i686, đó là lý do các lệnh còn có thể tải i686 gói) Xem nàynày bài viết để biết thêm.
Sami Badra

2

Về lâu dài, một khả năng có thể là chỉ định một máy để tải xuống từ internet, sau đó chạy NFS (hoặc máy chủ web) trên đó để hiển thị / var / cache / yum cho các máy chủ nội bộ.

Sau đó, bạn sẽ cần cập nhật cấu hình yum của mình, để thêm:

[main]
keepcache = 1

Mỗi https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/sec-Working_with_Yum_Cache.html :

Khi bạn đã bật bộ đệm, mọi thao tác yum có thể tải xuống dữ liệu gói từ kho được cấu hình.

Trong điều kiện thực tế hơn:

$ sudo yum install -y nginx
$ sudo find /var/cache/yum/ -type f -name '*.rpm'
<...snip....>
/var/cache/yum/x86_64/7/epel/packages/nginx-1.10.2-1.el7.x86_64.rpm

Các câu trả lời khác sẽ thực sự giải quyết vấn đề tức thời của bạn, nơi điều này sẽ chỉ hữu ích nếu bạn chạy yum reinstallcho các gói bạn đã có và muốn RPM cho.


0

Đây là những gì tôi làm:

sudo yum install --config =. / yum.conf --installroot = / tmp / f541Sdex --doadonly --doaddir / tmp / DL-e25xds $ (danh sách các gói của mèo)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.