web-dev-qa-db-ja.com

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

サーバー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 installedには930行ありますが、rpm -qaには895行ありますが、何が違うのでしょうか?

8
john Smith

何が違うのでしょうか?

行数が異なる主な理由は、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

ただし、これはonlyの理由ではなく、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

結論

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

4

インストールされている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
6
James Antill

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

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

1
Jeight

yum list installedは、パッケージ名とパッケージバージョンが長い場合、2行の出力を作成できます。

0

yum list installedは、以下のような出力を提供します。

pam_krb5.i386                        2.2.14-22.el5                     installed

さて、rpm -qaには以下のことが言えます。

pam_krb5-2.2.14-22.el5

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

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

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

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

yumrpmの実際の違いは以下のとおりです。

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

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

参照

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

0
Ramesh