サーバー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行ありますが、何が違うのでしょうか?
何が違うのでしょうか?
行数が異なる主な理由は、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
コマンドの出力の場合:
大文字で始まるパッケージが小文字の前に表示されるように並べ替えます。
rpm -qa | LC_ALL=C sort
sed
コマンドを使用して、パッケージのバージョン番号を削除します。
rpm -qa | LC_ALL=C sort r | sed 's/-[^-]*-[^-]*$//' >| installed.rpm
yum
コマンドの出力:
最初の2つのヘッダー行(Loaded plugins
およびInstalled Packages
)を削除します。
Loaded plugins: etckeeper, fastestmirror
Installed Packages
これにはsed
を使用できます。
yum list installed | sed '1,2d;'
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
には、パッケージへの署名が信頼されている公開鍵のパッケージリストも含まれていることを示しています。
インストールされている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
リストが異なる理由は完全にはわかりませんが、rpm -qa > installed.txt
が、インストールされているすべてのパッケージを見つける正しい方法であることは知っています。 yum installed
およびrpm installed
を検索します。
さらに、rpm -qa
出力の形式は、実行するyum install
コマンドでより適切に機能します。
yum list installed
は、パッケージ名とパッケージバージョンが長い場合、2行の出力を作成できます。
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
はすべての依存関係をインストールしているため、より完全なリストが提供されます。
yum
とrpm
の実際の違いは以下のとおりです。
rpm
の最も顕著な問題は、ほとんどの人がdependency hellと一般的に呼ぶ状態です。この問題は、他の多くのパッケージに依存しているパッケージで発生します。これらのパッケージの一部は、他の多くのパッケージに依存しています。プログラムが正常に機能するためには、すべての依存関係をインストールする必要があることは一般的な知識です。 rpm
が自動的にこれを行うことはできません。必要なパッケージをインストールする前に、必要なパッケージがすべてインストールされているかどうかを確認することしかできません。各依存関係を手動で追跡してインストールすることは、最初に単一のパッケージのみをインストールすることを望むほとんどの人にとって、主要な作業です。
yum
は、ユーザーがインストールしたいパッケージをインストールする前に、パッケージの依存関係を追跡してインストールすることができます。これにより、インストールするパッケージの名前を知るだけで済み、必要なパッケージがインストールされているかどうかを気にする必要がないため、プロセス全体が簡略化されます。システムで見つからないパッケージは、システムで利用可能なリポジトリで検索されます。
参照
http://www.differencebetween.net/technology/difference-between-yum-and-rpm/