Daftar paket yang diinstal berbeda dilaporkan oleh rpm dibandingkan dengan yum

8

Saya ingin memiliki Server B untuk memiliki setup yang sama persis dengan Server A. Server A dan B memiliki Arch dan perangkat keras yang sama.

Rencana saya adalah memiliki daftar semua hal yang diinstal pada Server A dan menginstalnya dengan menggunakan daftar pada Server B seperti:

yum -y install $(cat installed.txt)

Di Server A, saya lebih suka menggunakan:

rpm -qa > installed.txt

atau:

yum list installed > installed.txt  

Daftarnya tampaknya berbeda dan saya tidak tahu mengapa.

yum list installedmemiliki 930 baris sementara rpm -qamemiliki 895 baris, apa bedanya?

John Smith
sumber
Sudahkah Anda diffmengedit output (mungkin setelah penyortiran)?
Anthon
Saya tidak tahu mengapa ada perbedaan antara yum dan output rpm. Mungkin Anda harus mencoba saran Anthon dan beri tahu kami apa hasilnya. Juga, bagi saya kedua perintah daftar jumlah baris yang sama dan sesuai rencana Anda, saya akan pergi dengan rpmdaftar karena memiliki daftar yang dapat digunakan dalam yumperintah server b Anda .
Ramesh
taruhan saya: juga karena paket diinstal oleh "rpm --install package.rpm"
Massimo

Jawaban:

4

apa bedanya?

Alasan utama untuk jumlah baris yang berbeda adalah bahwa output yang dihasilkan oleh yumdiformat sehingga setiap bidang berbaris secara vertikal (terlepas dari panjang nama paket dan / atau nomor versi). Itu melakukan ini dengan menggunakan dua baris untuk daftar paket-paket seperti itu dan melapisi baris kedua dengan karakter spasi untuk berbaris bidang dengan benar. Output berikut (dari kotak CentOS 6) menunjukkan bahwa dua baris digunakan untuk mendaftar device-mapper-persistent-data.x86_64paket:

device-mapper-libs.x86_64         1.02.95-3.el6_7.4    @clearos-verified-updates
device-mapper-persistent-data.x86_64
                                  0.3.2-1.el6          @clearos
dhclient.x86_64                   12:4.1.1-49.P1.v6    @clearos-verified-updates

Namun, ini bukan satu - satunya alasan dan itu dapat dilihat dengan memijat output dari dua perintah sebelum membandingkannya:

Untuk output dari rpmperintah:

  1. Sortir sedemikian sehingga paket yang dimulai dengan huruf besar muncul sebelum yang huruf kecil:

    rpm -qa | LC_ALL=C sort
    
  2. Gunakan sedperintah untuk menghapus nomor versi paket:

    rpm -qa | LC_ALL=C sort r | sed 's/-[^-]*-[^-]*$//' >| installed.rpm
    

Untuk output dari yumperintah:

  1. Hapus dua baris tajuk pertama ( Loaded pluginsdan Installed Packages):

    Loaded plugins: etckeeper, fastestmirror
    Installed Packages
    

    Kita dapat menggunakan sedini:

     yum list installed | sed '1,2d;'
    
  2. Kami juga dapat menggunakan seduntuk menghapus semua baris yang merupakan kelanjutan dari daftar paket (baris ini dimulai dengan sejumlah spasi sehingga semua versi paket berbaris).

    yum list installed | sed '1,2d;/^ /d;s/\..*//' >| installed.yum
    

Sekarang, kita dapat menggunakan diffperintah untuk membandingkan output dari dua file. Inilah hasil dari kotak CentOS 6:

# diff installed.{rpm,yum}
239,243d238
< gpg-pubkey
< gpg-pubkey
< gpg-pubkey
< gpg-pubkey
< gpg-pubkey

Kesimpulan

Ini menunjukkan bahwa itu rpm -qajuga termasuk daftar paket untuk kunci publik yang dipercaya untuk menandatangani paket sementara yumperintah menghilangkan paket-paket ini.

Anthony Geoghegan
sumber
beberapa waktu yang lalu tetapi tidak ada kata terlambat untuk banyak terima kasih atas analisis dan kesimpulan bermanfaat Anda !!
john Smith
@ johnSmith Lebih baik terlambat daripada tidak sama sekali! :) Saya ingat menghabiskan sedikit waktu untuk yang satu ini tapi saya pikir itu adalah pertanyaan yang menarik. Menjawab pertanyaan semacam itu bisa menjadi cara belajar yang baik dalam dirinya sendiri.
Anthony Geoghegan
6

Daftar yum yang terinstal memiliki 930 baris sedangkan rpm -qa memiliki 895 baris, apa bedanya?

Ini mungkin hanya memformat perbedaan. Daftar yum akan melakukan banyak pembungkus pintar untuk ukuran terminal Anda.

Apa yang mungkin ingin Anda lakukan adalah menggunakan:

# Run this on the master server
yum-debug-dump

# Run this on the new server, with the input from the above.
yum-debug-restore
James Antill
sumber
terima kasih atas balasan, setelah menginstal yum-utils di server baru dan menjalankan "yum-debug-restore master_out.gz" katanya untuk setiap paket yang tidak tersedia, apakah saya kehilangan sesuatu?
john Smith
Jika mereka bukan server yang identik (mis. Lengkung yang berbeda, atau yang baru memiliki paket yang lebih lama), Anda dapat menggunakan opsi --ignore-arch dan / atau --install-terbaru untuk mengembalikan.
James Antill
Saya akan menyarankan untuk menyalin konten master /etc/yum.repos.d/* ke server baru sebelum menjalankan yum-debug-restore
Sergey Vlasov
1

Saya tidak sepenuhnya yakin mengapa daftar ini berbeda, tetapi saya tahu itu rpm -qa > installed.txtadalah cara yang benar untuk menemukan semua paket yang diinstal. Ini akan mencari yum installedjuga rpm installed.

Selain itu, format rpm -qaoutput akan bekerja lebih baik dengan yum installperintah yang ingin Anda jalankan.

Jeight
sumber
0

yum list installed memberi saya output seperti di bawah ini.

pam_krb5.i386                        2.2.14-22.el5                     installed

Sekarang, rpm -qakatakan di bawah ini.

pam_krb5-2.2.14-22.el5

Kedua perintah memberi saya jumlah baris yang sama dengan output. Saya akan pergi dengan rpm -qadaftar.

Juga, dari jawaban ini , saya melihat informasi di bawah ini.

ada program, "rpm", yang memanipulasi secara khusus paket yang diminta untuk dimanipulasi, dan ada "yum", yang merupakan sistem manajemen yang lebih cerdas yang dapat menemukan dependensi dan mengunduh file .rpm bahkan jika mereka tidak ada dalam sistem.

Jadi perbedaannya mungkin yummenyelesaikan dependensi tetapi rpmtelah menginstal semua dependensi dan menyediakan daftar yang lebih lengkap.

Saya melihat perbedaan aktual antara yumdan rpmseperti di bawah ini.

Masalah yang paling menonjol rpmadalah keadaan yang sering disebut oleh kebanyakan orang sebagai neraka ketergantungan . Masalah ini terjadi pada paket yang bergantung pada banyak paket lain, beberapa paket juga bergantung pada banyak paket lainnya. Sudah menjadi rahasia umum bahwa Anda harus menginstal semua dependensi agar program dapat berfungsi dengan benar. rpmtidak dapat melakukan ini untuk Anda secara otomatis. Itu hanya dapat memeriksa apakah semua paket yang diperlukan sudah diinstal sebelum menginstal paket yang dibutuhkan. Secara manual melacak dan menginstal setiap ketergantungan adalah tugas utama bagi kebanyakan orang yang hanya ingin menginstal satu paket pada awalnya.

yummampu melacak dependensi suatu paket dan menginstalnya sebelum menginstal paket yang ingin diinstal oleh pengguna. Ini menyederhanakan seluruh proses karena Anda hanya perlu tahu nama paket yang ingin Anda instal dan tidak khawatir apakah paket yang diperlukan telah diinstal atau tidak. Paket yang tidak dapat ditemukan pada sistem dicari dalam repositori yang tersedia untuk sistem.

Referensi

http://www.differencebetween.net/technology/difference-between-yum-and-rpm/

Ramesh
sumber
terima kasih atas balasan, bagi saya daftar yum diinstal memiliki 940 baris sementara rpm -qa memiliki 895 baris, ada ide apa bedanya?
john Smith
@ johnSmith, Yummenangani dependensi dan mengambil paket untuk mengisinya. Yummenjalankan secara efektif perintah yang sama seperti rpmtetapi juga mencakup semua paket yang diperlukan untuk mencocokkan dependensi.
Ramesh
yumadalah anugerah untuk mengelola dependensi paket tetapi itu tidak relevan ketika itu hanya daftar paket yang diinstal pada sistem. Lihat James dan jawaban saya untuk alasan perbedaan.
Anthony Geoghegan
0

yum list installed dapat membuat output dua baris, jika nama paket dan versi paket panjang.

Jan Gerrit Kootstra
sumber
Jawaban ini mungkin pendek tetapi sudah benar (jadi upvoting).
Anthony Geoghegan