Bagaimana cara menginstal dependensi paket rpm tanpa menginstal paket itu sendiri? (rhel / fedora)

18

Saya punya satu set paket (* .rpm). Untuk setiap paket yang dapat saya lakukan rpm -qRp <package>untuk mendaftar memerlukan, tetapi saya ingin menginstalnya (yang memerlukan) tanpa menginstal paket itu sendiri. Semua membutuhkan repositori yang diaktifkan dalam hidup. Apakah ada beberapa cara mudah untuk melakukan ini tanpa menulis skrip saya sendiri yang akan mem-parsing output rpm -qRp ...misalnya.

Saya tahu saya bisa melakukannya dengan menginstal semuanya dengan memerlukan ( yum localinstall) dan kemudian menghapus paket-paket asli, tetapi masalahnya adalah set saya berisi paket-paket dengan kedua dependensi dan konflik di antaranya. Namun paket yang dibutuhkan tidak bertentangan. Saya harus melakukan beberapa yum localinstall <list>diikuti oleh yum remove <list>dan memastikan paket-paket dalam daftar tidak bertentangan.

Saya ada cara yang lebih baik? Saya pada dasarnya ingin sesuatu seperti yum-builddep, tetapi untuk membutuhkan, bukan membangun.

Distro saya adalah Fedora/RHEL

Miroslav Franc
sumber

Jawaban:

24

Anda dapat menggunakan yum deplistperintah untuk menghasilkan daftar dependensi paket:

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

Raih provider:garis dari ini untuk daftar paket:

$ 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

Kirim output ini ke yum installuntuk menginstal paket:

$ yum deplist bind | awk '/provider:/ {print $2}' | sort -u |
  xargs yum -y install
larsks
sumber
1
Terima kasih. Tampaknya berfungsi bahkan pada file rpm. Persis apa yang saya cari.
Miroslav Franc
1
Adakah yang mau memiliki hingga -1? Apakah ada sesuatu yang bisa saya perbaiki?
larsks
4

Cara terbaik adalah:

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

... menggunakan deplist / etc. sebagian besar akan berfungsi, tetapi tidak dijamin untuk mendapatkan hasil yang sama persis.

James Antill
sumber
yum -ymungkin dibutuhkan.
caot
-Y bukan default karena beberapa alasan, dan yang penting tidak berubah dengan cara di atas.
James Antill