アップデートをプライマリシステムに適用する前に、テストするために仮想マシンにステージング環境を設定しようとしています。
これを行うには、VM(メインシステムと同じ)にDebian Wheezyのデフォルトインストールを実行し、VMからrootとして実行しました。
# dpkg --clear-selections
# dpkg --add-architecture i386
# apt-get update
# ssh me@main-system 'dpkg --get-selections | grep -v deinstall' | \
dpkg --set-selections
残念ながら、私の場合はi386アーキテクチャが必要です。システムはamd64ベースです。
問題はdpkg --set-selections
仮想マシンで実行中です。特別な処理を必要とするいくつかのパッケージがあります(実際にこれが私が最初にステージング環境を望む主な理由です)、上記の最後のコマンドを実行すると、次のような無限の出力行が表示されます。
dpkg: warning: package not in database at line NNN: package-name
基本システムで実際に使用できる必要があるパッケージの場合。例えばxterm
、yelp
と がありますzip
。
今私の質問は次のとおりです。
パッケージ選択リストをある Debian システムから別の Debian システムに移動する具体的なプロセスは何ですか?(Wheezy で同じ Debian バージョンレベルを想定)その後、その変更を後で適用しますか?目標は両方とも同じインストール済みパッケージのリストを持つことであり、理想的には両方とも出力間またはdiff
出力後にdpkg --get-selections
違いは表示されません。dpkg --list
このgrep -v deinstall
部分は以下から借りたものです。完了後のパッケージ削除の防止dpkg --set-selections
Ubuntuに関する質問で仕上げました。
仮想マシンのソースを基本システムと同じように変更し、次のようにインストールしました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
単にエラーを認識しないようです(dpkg-query: no packages found matching ...
)。ローカルにインストールされたパッケージがいくつかあることを知っていますが、それほど多くはありません。i386
~までgcc-4.7-base:i386 install
たくさんリストを下にしてください(--get-selections出力の342行目)。
答え1
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
私はあなたがdpkgの互換性のない変更のために最初に息を止めるのに十分な影響を受けたと思います。バラよりバグ #703092背景。
つまり、dpkg --set-selections
ファイル/var/lib/dpkg/status
や/var/lib/dpkg/available
。/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
答え2
どうしたの?
存在する源泉マスター:
apt-get update && apt-get dist-upgrade dpkg --get-selections >/tmp/source.sel cat /etc/apt/sources.list
使用に悩む
/etc/apt/sources.list.d
...その後、コピー
source.sel
ファイルを宛先ホストに送信します。存在する目的地マスター:
vi /etc/apt/sources.list
適応するソース、リスト鏡は違っても同じです。要素リスト。
apt-get update
dselect update
dselect upgrade
dpkg --set-selections </tmp/source.sel
dselect install
そして今、私ターゲットホスト現在インストールされているものが多く、投稿に時間がかかりそうです。