メインシステムに適用する前に更新をテストするために、VMにステージング環境をセットアップしようとしています。
そのために、VMにDebian Wheezy(メインシステムと同じ)を基本的にインストールし、VM内からrootとして実行しました。
# dpkg --clear-selections
# dpkg --add-architecture i386
# apt-get update
# ssh [email protected] 'dpkg --get-selections | grep -v deinstall' |
dpkg --set-selections
私の場合、残念ながらi386アーキテクチャが必要です。システムはamd64ネイティブです。
問題はdpkg--set-selections
にあります VMで実行します。特別な処理が必要なパッケージがいくつかありますが(実際には、これらがステージング環境が必要な主な理由です)、上記の最後のコマンドを実行すると、次のような膨大な数の出力が得られます。
dpkg: warning: package not in database at line NNN: package-name
基本システムで実際に利用できるはずのパッケージの場合。例には、 xterm
が含まれます 、 yelp
およびzip
。
さて、私の質問です:
あるDebianシステムから別のDebianシステムにパッケージ選択リストを転送するための具体的なプロセスは何ですか (Wheezyで同じDebianリリースレベルを想定)その後、それらの変更を適用しますか? 目標は、両方にインストールされたパッケージの同じリストがあり、理想的には diff
を実行することです。 dpkg --get-selections
の出力間 またはdpkg--list
2つで違いがないことを示して戻ってきます。
grep -v deinstall
dpkg --set-selections
を実行した後、パッケージが削除されないようにするために一部が借用されています AskUbuntuで終わります。
VMのソースをメインシステムと同じになるように変更し、 apt-transport-https
もインストールしました :
deb https://ftp-stud.hs-esslingen.de/debian/ wheezy main non-free
deb-src https://ftp-stud.hs-esslingen.de/debian/ wheezy main non-free
deb https://ftp-stud.hs-esslingen.de/debian/ wheezy-updates main non-free
deb-src https://ftp-stud.hs-esslingen.de/debian/ wheezy-updates main non-free
deb [arch=amd64] http://archive.zfsonlinux.org/debian wheezy main
–set-selectionsの出力を見ると、次のようになっています。
dpkg: warning: package not in database at line 1: a2ps
dpkg: warning: package not in database at line 1: abiword
dpkg: warning: package not in database at line 1: abiword-common
dpkg: warning: package not in database at line 1: abiword-plugin-grammar
dpkg: warning: package not in database at line 1: abiword-plugin-mathview
dpkg: warning: package not in database at line 1: accountsservice
dpkg: warning: package not in database at line 1: acl
dpkg: warning: package not in database at line 4: aglfn
dpkg: warning: package not in database at line 4: aisleriot
dpkg: warning: package not in database at line 4: alacarte
dpkg: warning: package not in database at line 4: alien
...
行番号は奇妙に見え、–get-selectionsの出力の対応する部分は次のとおりです。
a2ps install
abiword install
abiword-common install
abiword-plugin-grammar install
abiword-plugin-mathview install
accountsservice install
acl install
acpi-support-base install
acpid install
adduser install
aglfn install
aisleriot install
alacarte install
alien install
acl
の間にあることに注意してください およびaglfn
acpi-support-base
です 、 acpid
およびadduser
エラーが報告されていない 。エラーが報告されているパッケージはun
のようです dpkg -l
によると 、または dpkg -l </ code> それらについてはまったくわかりません(
dpkg-query:一致するパッケージが見つかりません...
)。ローカルにインストールされたパッケージがいくつかあることは知っていますが、多くはありません。 i386
gcc-4.7-base:i386 install
まではわかりません 多く リストのさらに下(–get-selections出力の342行目)。
承認された回答:
Debianインストールのクローンを作成するには、 apt-clone
を使用します 効用。 wheezy以降はDebianで、12.04以降はUbuntuで(デフォルトのインストールの一部ではなく、個別のパッケージとして)利用できます。既存のマシンで、
apt-clone clone foo
これにより、ファイル foo.apt-clone.tar.gz
が作成されます。 。宛先マシンにコピーして実行します
apt-get install apt-clone
apt-clone restore foo.apt-clone.tar.gz
apt-clone
がある古いシステムで作業している場合 が利用できない場合、またはインストールされているパッケージのリストを複製したいだけで構成ファイルを複製したくない場合は、手動の手順を次に示します。
-
ソースマシンの場合:
cat /etc/apt/sources.list /etc/apt/sources.list.d >sources.list dpkg --get-selections >selections.list apt-mark showauto >auto.list
-
ターゲットマシン上:
cp sources.list /etc/apt/ apt-get update /usr/lib/dpkg/methods/apt/update /var/lib/dpkg/ dpkg --set-selections <selections.list apt-get dselect-upgrade xargs apt-mark auto <auto.list
最初にwheezyになったdpkgの互換性のない変更の影響を受けていると思います。背景についてはバグ#703092を参照してください。
簡単に言うと、 dpkg --set-selections
/ var / lib / dpkg / status
ファイルに存在するパッケージ名のみを受け入れるようになりました または/var / lib / dpkg / available
。ほとんどの人のように、パッケージの管理にAPTのみを使用する場合は、 / var / lib / dpkg / available
最新の状態に保たれていません。
apt-get update
を実行した後 dpkg --set-selections
を実行する前に およびapt-get-u dselect-upgrade
、次のコマンドを実行します:
apt-cache dumpavail >/tmp/apt.avail
dpkg --merge-avail /tmp/apt.avail
jessie以降、これを単純化して
apt-cache dumpavail | dpkg --merge-avail
または、実行
/usr/lib/dpkg/methods/apt/update /var/lib/dpkg/
またはさらに簡単
apt-get install dctrl-tools
sync-available
追加のパッケージをインストールする必要はないが、パッケージリストを再度ダウンロードするもう1つの簡単な方法は、
です。dselect update
詳細については、dpkgのFAQを参照してください。 (これはdpkgのマニュアルページに記載されていますが、問題の解決方法を説明する方法ではなく、すでに認識している場合は問題を思い出させる方法で説明されています!)
dpkg --set-selections
を使用してパッケージインストールのクローンを作成することに注意してください。 APTの自動/手動マークは復元されません。詳細については、dpkg –set-selections‘*’からのすべてのデータと依存関係の復元を参照してください。
apt-mark showauto >auto.list
を使用してターゲットシステムに復元します
xargs apt-mark auto <auto.list