yumと比較してrpmによって報告されるインストール済みパッケージの異なるリスト


8

サーバーBのセットアップをサーバーAとまったく同じにしたいのですが、サーバーAとBのArchとハードウェアは同じです。

私の計画は、サーバーAにインストールされているすべてのもののリストを用意し、サーバーBのリストを使用して次のようにインストールすることです。

yum -y install $(cat installed.txt)

サーバーAでは、次を使用する必要があります。

rpm -qa > installed.txt

または:

yum list installed > installed.txt  

リストは異なっているようで、なぜかわかりません。

yum list installed930行とrpm -qa895行の違いは何ですか?


diff出力を編集しましたか(ソート後に可能)?
Anthon 2014

yumとrpmの出力に違いがある理由はわかりません。Anthonの提案を試して、出力結果を教えてください。また、私にとっては両方のコマンドが同じ行数を一覧表示し、計画に従ってrpm、サーバーbのyumコマンドで使用できるリストが含まれているため、listを使用します。
Ramesh 14

私の賭け: "rpm --install package.rpm"によってインストールされたパッケージも原因
Massimo

回答:


4

何が違うのでしょうか?

行数が異なる主な理由は、yum(パッケージ名の長さやバージョン番号に関係なく)各フィールドが縦に並ぶようにによって生成される出力がフォーマットされるためです。これは、このようなパッケージをリストするために2行を使用し、フィールドを正しく整列させるために2行目にスペース文字を埋め込むことによって行われます。次の出力(CentOS 6ボックスからの)は、device-mapper-persistent-data.x86_64パッケージのリストに2行が使用されていることを示しています。

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

ただし、これが唯一の理由ではなく、2つのコマンドの出力を比較してから比較することで確認できます。

rpmコマンドの出力について:

  1. 大文字で始まるパッケージが小文字のパッケージの前に表示されるように並べ替えます。

    rpm -qa | LC_ALL=C sort
    
  2. sedコマンドを使用して、パッケージのバージョン番号を削除します。

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

yumコマンドの出力について:

  1. 最初の2つのヘッダー行(Loaded pluginsおよびInstalled Packages)を削除します。

    Loaded plugins: etckeeper, fastestmirror
    Installed Packages
    

    sedこれに使用できます:

     yum list installed | sed '1,2d;'
    
  2. を使用sedして、パッケージリストの続きであるすべての行を削除することもできます(これらの行は、すべてのパッケージバージョンが揃うように、いくつかのスペースで始まります)。

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

これで、diffコマンドを使用して2つのファイルの出力を比較できます。これがCentOS 6ボックスの結果です。

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

結論

これはrpm -qayumコマンドがこれらのパッケージを省略している間、パッケージに署名することが信頼されている公開鍵のパッケージリストも含まれていることを示しています。


少し前ですが、有益な分析と結論に感謝します。
ジョンスミス

@johnSmith遅くなることはありません!:)私はこれに少し時間を費やしたことを覚えていますが、それは興味深い質問だと思いました。そのような質問に答えることは、それ自体を学ぶ良い方法です。
Anthony Geoghegan

6

インストールされているyumリストには930行ありますが、rpm -qaには895行ありますが、何が違うのでしょうか?

これはおそらくフォーマットの違いです。yum listは、端末サイズに合わせて巧妙に折り返します。

おそらくあなたがしたいことは次のことです:

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

# Run this on the new server, with the input from the above.
yum-debug-restore

新しいサーバーにyum-utilsをインストールして「yum-debug-restore master_out.gz」を実行した後の返信に感謝します。使用できないすべてのパッケージについて、何か不足していますか?
ジョンスミス

それらが同一のサーバーではない場合(たとえば、異なるアーチ、または新しいものに古いパッケージが含まれている場合)は、復元で--ignore-archおよび/または--install-latestオプションを使用できます。
James Antill

yum-debug-restoreを実行する前に、マスター/etc/yum.repos.d/*のコンテンツを新しいサーバーにコピーすることをお勧めします
Sergey Vlasov

1

リストが異なる理由は完全にはわかりませんrpm -qa > installed.txtが、それがインストール済みのパッケージをすべて見つけるための正しい方法であることは知っています。yum installed同様に探しますrpm installed

さらに、rpm -qa出力の形式はyum install、実行したいコマンドでよりよく機能します。


0

yum list installed 以下のような出力が得られます。

pam_krb5.i386                        2.2.14-22.el5                     installed

さて、rpm -qa以下のことを言います。

pam_krb5-2.2.14-22.el5

どちらのコマンドでも、出力と同じ数の行が表示されます。rpm -qaリストで行きます。

また、この回答から、以下の情報がわかります。

具体的に操作するように要求されたパッケージを操作するプログラム「rpm」と、依存関係を見つけて.rpmファイルをダウンロードできない.rpmファイルがあるよりインテリジェントな管理システムである「yum」があります。システム。

したがって、違いyumは依存関係を解決する可能性がrpmありますが、すべての依存関係がインストールされているため、より完全なリストが提供されます。

私は間の実際の違いを参照yumしてrpm以下のように。

で最も顕著な問題rpmは、ほとんどの人が依存性地獄と一般的に呼ぶ状態です。この問題は、他の多くのパッケージに依存しているパッケージで発生します。これらのパッケージの一部は、他の多くのパッケージにも依存しています。プログラムが正常に機能するためには、すべての依存関係をインストールする必要があることは一般的な知識です。rpmこれを自動的に行うことはできません。必要なパッケージをインストールする前に、必要なパッケージがすべてインストールされているかどうかを確認することしかできません。各依存関係を手動で追跡してインストールすることは、最初に単一のパッケージのみをインストールすることを望むほとんどの人にとって、主要な作業です。

yumユーザーがインストールしたいパッケージをインストールする前に、パッケージの依存関係を追跡してインストールできます。これにより、インストールするパッケージの名前を知るだけで済み、必要なパッケージがインストールされているかどうかを気にする必要がないため、プロセス全体が簡略化されます。システムで見つからないパッケージは、システムで利用可能なリポジトリで検索されます。

参考文献

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


返信ありがとう、インストールされているyumリストには940行ありますが、rpm -qaには895行ありますが、違いは何ですか?
ジョンスミス

@johnSmith、Yum依存関係を処理し、パッケージを取得してそれらを埋めます。Yumと同じコマンドを効果的に実行rpmしますが、依存関係の照合に必要なすべてのパッケージも含まれます。
Ramesh 14

yumは、パッケージの依存関係を管理するための天の恵みですが、システムにインストールされているパッケージを単に一覧表示するだけの場合は無関係です。違いの理由については、Jamesと私の回答を参照してください。
Anthony Geoghegan 2016

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.