Làm thế nào để cài đặt các phụ thuộc của gói vòng / phút mà không cần cài đặt gói đó? (rrc / fedora)


17

Tôi có một bộ các gói (* .rpm). Đối với mỗi gói tôi có thể làm rpm -qRp <package>để liệt kê các yêu cầu, nhưng tôi muốn cài đặt chúng (những yêu cầu đó) mà không cần tự cài đặt các gói. Các yêu cầu tất cả sống trong kho được kích hoạt. Có một số cách dễ dàng để làm điều này mà không cần viết kịch bản của riêng tôi mà sẽ phân tích đầu ra rpm -qRp ...chẳng hạn.

Tôi biết tôi có thể làm điều đó bằng cách cài đặt mọi thứ có yêu cầu ( yum localinstall) và sau đó gỡ cài đặt các gói ban đầu, nhưng vấn đề là bộ của tôi chứa các gói có cả phụ thuộc và xung đột ở giữa chúng. Các gói yêu cầu tuy nhiên không xung đột. Tôi sẽ phải thực hiện nhiều lần yum localinstall <list>theo sau yum remove <list>và đảm bảo các gói trong danh sách không xung đột.

Tôi có cách nào tốt hơn? Về cơ bản tôi sẽ thích một cái gì đó như thế yum-builddep, nhưng đối với yêu cầu, không phải là xây dựng.

Bản phân phối của tôi là Fedora/RHEL

Câu trả lời:


23

Bạn có thể sử dụng yum deplistlệnh để tạo danh sách các phụ thuộc gói:

$ yum deplist bind
  dependency: /bin/bash
   provider: bash.x86_64 4.3.39-5.fc21
  dependency: /bin/sh
   provider: bash.x86_64 4.3.39-5.fc21
  dependency: bind-libs(x86-64) = 32:9.9.6-10.P1.fc21
   provider: bind-libs.x86_64 32:9.9.6-10.P1.fc21
  dependency: coreutils
   provider: coreutils.x86_64 8.22-22.fc21
[...]

Lấy các provider:dòng từ đây cho một danh sách các gói:

$ yum deplist bind | awk '/provider:/ {print $2}' | sort -u
bash.x86_64
bind-libs.x86_64
coreutils.x86_64
glibc.i686
glibc.x86_64
grep.x86_64
krb5-libs.x86_64
libcap.x86_64
libcom_err.x86_64
libxml2.x86_64
openssl-libs.x86_64
shadow-utils.x86_64
systemd.x86_64
zlib.x86_64

Gửi đầu ra này yum installđể cài đặt các gói:

$ yum deplist bind | awk '/provider:/ {print $2}' | sort -u |
  xargs yum -y install

1
Cảm ơn. Có vẻ như đang làm việc ngay cả trên các tập tin vòng / phút. Chính xác những gì tôi đang tìm kiếm.
Miroslav Franc

1
Bất cứ ai cũng muốn sở hữu đến -1? Có cái gì tôi có thể sửa chữa?
larsks

4

Cách tốt nhất là:

yum shell <<EOF
install foo
ts solve
remove foo
run
EOF

... sử dụng deplist / v.v. sẽ chủ yếu hoạt động, nhưng không được đảm bảo để có được kết quả chính xác như vậy.


yum -ycó thể cần thiết
caot

-y không phải là mặc định vì một vài lý do và những lý do quan trọng không thay đổi bởi những điều trên.
James Antill
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.