サーバー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行がありますが、どのような違いがありますか?
答え1
yum listinstalledには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
答え2
違いは何ですか?
行数が異なる主な理由は、生成された出力のyum
形式が各フィールドが縦に並べられるように指定されるためです(パッケージ名および/またはバージョン番号の長さに関係なく)。 2行を使用してパッケージを一覧表示し、2行目にスペースを埋め、フィールドを適切に並べ替えることでこれを行います。次の出力(CentOS 6システムの場合)は、2行を使用してパッケージを一覧表示することを示していますdevice-mapper-persistent-data.x86_64
。
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
:
大文字で始まるパッケージが小文字の前に表示されるように並べ替えます。
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
結論として
rpm -qa
これには、パッケージ署名のための信頼できる公開鍵を含むパッケージのリストも含まれており、yum
これらのパッケージがコマンドによって無視されることを示します。
答え3
yum list installed
パッケージ名とパッケージバージョンが長い場合は、2行の出力を生成できます。
答え4
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ファイルをダウンロードできるよりスマートな管理システムである「yum」があります。
したがって、違いはyum
依存関係が解決されたが、rpm
すべての依存関係がインストールされ、より完全なリストを提供するということです。
yum
私が見たものとの実際の違いrpm
は次のとおりです。
最も顕著な問題rpm
は、ほとんどの人が一般的に国と呼ぶことです。依存性地獄。この問題は、他の多くのパッケージに依存するパッケージで発生し、そのいくつかは他の多くのパッケージにも依存しています。私たち全員が知っているように、プログラムが正しく機能するためには、すべての依存関係をインストールする必要があります。rpm
これを自動的に実行する方法はありません。必須パッケージをインストールする前に、すべての必須パッケージがインストールされていることを確認できます。最初に単一のパッケージのみをインストールしたいほとんどの人にとって、各依存関係を手動で追跡してインストールすることが重要です。
yum
ユーザーがインストールするパッケージをインストールする前に、パッケージの依存関係を追跡してインストールする機能。これにより、インストールするパッケージ名だけがわかり、必要なパッケージがすでにインストールされているかどうか心配する必要がなくなり、プロセス全体が簡素化されます。システムで見つからないパッケージのシステムで使用可能なストレージを検索します。
引用する
http://www.difference Between.net/technology/difference- Between-yum-and-rpm/