Ubuntuイメージを設定し、それをハードドライブを介してオフラインシステムに転送する準備が整いました。画像に必要なすべてのパッケージがあることを確認し、欠落しているパッケージを画像に追加したいと思います。画像の/var/spool/apt-mirror
サイズは120GBで、何百もの.debファイルが含まれています。これら2つのタスクをどのように実行しますか?
(1)パッケージが存在するかどうかを確認するには、パッケージを使って自分のミラーをdpkg
指し、パッケージがミラーのどこかにあるかどうかを尋ねる必要があるとします。どうすればいいですか?私が試してみましたが、失敗したものは次のとおりです。
dpkg --info /var/spool/apt-mirror/ astyle
dpkg-deb: error: error reading archive magic version number from file /var/spool/apt-mirror/: Is a directory
たぶんそのコマンドを何とか使うべきですかapt-cache
?
(2)パッケージが紛失したと仮定すると、ミラーにどのように配置されますか? debファイルを見つけて、画像「プール」のどこにでもコピーできますか?たとえば、次のパッケージが欲しいとします。
apt-cache showpkg astyle
Package: astyle
Versions:
2.01-1 (/var/lib/apt/lists/us.archive.ubuntu.com_ubuntu_dists_precise_universe_binary-amd64_Packages)
パッケージは明らかに私のローカルキャッシュで利用可能です(しかし私の準備されたコンピュータにはインストールされていません)。ミラーにどのように移動しますか?
ベストアンサー1
パッケージがディレクトリツリーのどこかにあるかどうかを確認するために使用する必要はありませんdpkg
。 find
ファイルがあることを確認するだけです。.deb
ファイルという事実はほとんど関係ありません。
例えば
find /var/spool/apt-mirror/ -name 'astyle*.deb'
多くのファイルに対してこの操作を繰り返し実行する場合は、出力をファイルにfind /var/spool/apt-mirror/ -type f
リダイレクトしてからそのファイルの検索を使用することをお勧めします。これは、grep
毎回検索を一度実行するよりもはるかに高速です。find
イメージからパッケージが欠落している場合(ミラーリングしているリポジトリにある場合)、設定を確認してapt-mirror
再実行してくださいapt-mirror
。
パッケージがイメージに存在することを確認するには、grep
関連Packages
ファイルを見てください。たとえば、jessie の zfsonlinux アーカイブ ミラーがあるので、spl
パッケージがそのリポジトリに存在する必要があるかどうかを知りたい場合は、次のようにします。
# grep 'Package: spl$' /var/spool/apt-mirror/mirror/archive.zfsonlinux.org/debian/dists/jessie/main/binary-amd64/Packages
Package: spl
または
# find /var/spool/apt-mirror/mirror/archive.zfsonlinux.org/ -name 'Packages' -exec grep 'Package:\ spl$' {} +
/var/spool/apt-mirror/mirror/archive.zfsonlinux.org/debian/dists/jessie-daily/main/binary-amd64/Packages:Package: spl
/var/spool/apt-mirror/mirror/archive.zfsonlinux.org/debian/dists/jessie/main/binary-amd64/Packages:Package: spl