web-dev-qa-db-ja.com

2つの異なるLinuxインストールの差分を取得するツールまたはテクニック

アルバートアインシュタイン 引用

狂気:同じことを何度も繰り返し、異なる結果を期待する

Linuxは、同じことを何度も繰り返し、ボックスごとに異なる結果を取得するため、私を怒らせます。 ( 私の前の質問 を参照してください)。

私にとって、最大の混乱の領域は、他の誰かがインストールしたマシンを引き継ぐことです(Webホスティング会社にサインアップするときのように)。何を扱っているのか分からないだけです。

ある種の巧妙なdiffツールを使用して、Linux(Ubuntu)のインストールで実行し、そのマシンはデフォルトのインストールから移行しましたか?

つまり、驚くべき動作をするコマンドのリストを表示できるため、試行錯誤のアプローチを回避できます。

10
JW01

優れたリファレンスシステムと動作に問題のあるリファレンスシステムがあるときはいつでも、それらをvimdiffと比較しようとします。私が比較するものは、問題などによって異なります。

1)パッケージレベルでサーバーを比較するとき、各サーバーでパッケージのソートされたリストを作成し、結果をファイルに送信して、それらを比較します。

Server1:

dpkg --get-selections|sort > server1_packages

Server2の場合:

dpkg --get-selections|sort > server2_packages

両方のファイルを同じマシンにコピーし、それらを差分(またはvimdiff)します。

2)例1のように実行中のサービスのリストを作成します

sysv-rc-conf --list|sort > server1_services

sysv-rc-conf --list|sort > server2_services

...など、それらをvimdiff。

3)たとえば、Apacheを使用して矛盾する構成をトラブルシューティングする場合は、構成ファイルのコピーを作成し、それらをvimdiffなどします。

10
Karl

同じディストリビューションの2つのインストールの違いのほとんどは、/etcにあります。 /etcの内容を1台のマシンから別のマシンの一時ディレクトリにコピーして実行します

diff -ru /etc /copy/of/other/etc

マシンをデフォルトのインストールと比較する場合は、新規のデフォルトのインストール(おそらく仮想マシン)からコピーを取得します。

マシンを最初から制御できる場合は、必ず etckeeper をインストールして、/etcをバージョン管理下に置いてください。次に、変更点を正確に確認できます。

もちろん、多くの違いがあります。どこを見ればよいかわからない場合、これは特定の動作の違いを調査するための間違ったアプローチです。たとえば、コマンドadduserの動作が2台のマシンで異なるとします。次に、adduserが何をしているかを確認するのが最善の方法です。両方のマシンで実行して比較します。より冗長になるように指示するオプションがある場合(adduserはそうではありません)、それを使用します。より根本的に、プログラムを strace の下で実行します。

strace -s9999 -efile adduser …

adduserがアクセスするファイルを確認します。

以前の質問に戻るために、私には良い考えのように聞こえるが、私はそのような獣が存在することを聞いたことがない気の利いたツールが、ファイルシステムのタイプやサイズなどをチェックする必要があります。

2002年に私に起こった実際の例:2人がSuSE 7.3システムを2つの隣接するラックマウント型サーバーにインストールしました。彼らは両方のサーバーでパッケージをまったく同じにするために多くの努力をしました。しばらくして、開発中のソフトウェアに問題が発生しました。 1つのサーバーではext3ファイルシステム、もう1つのサーバーではReiserfsに到達しました。 Reiserfsの単純な "ls"は、ファイル名を字句順に与えますが、ext3では与えません。 1つのプログラムで、ファイル名の順序が正しくなかった。

2
Bruce Ediger

ファイル、ユーザー、グループ、パッケージ、サービスなどに使用した http://www.scriptrock.com ;一部のサーバーは無料で、サーバー間の違いを視覚的に比較できます。ドリフトに非常に便利です。

1
mike