apt-get install --download-only --assume-yes libssl-dev
今日、私はdpkgステータスファイルが空である(debファイルが多い)など、依存関係がダウンロードされたDebianパッケージセットをインストールしようとしたときに一度(今日再度)インストールしたときにインストールできない理由をついに推測しapt-get install path/*.deb
ましたThe following additional packages will be installed: libssl1.1:i386
。 (結果を説明するのに役立つことを試みましたが、問題は私が知っているエラーの原因に関するものです。)aptはBUILD(ソース)依存関係をどのように追跡しますか?そしてhttps://stackoverflow.com/questions/70491862/how-to-list-download-the-recursive-build-dependent-of-a-debian-package
私の考えでは、i386アーキテクチャ用のパッケージがここにインストールされているようです(状態ファイルを確認しました。forとlibssl1.1
です)。したがって、インストール時にパッケージのインストール済みのすべてのアーキテクチャをアップグレードしようとします。ただし、あるシステムにダウンロードすると、コマンドラインから要求されたものに加えて他のアーキテクチャのパッケージがないため、1つのアーキテクチャのみがダウンロードされます。Status: install ok installed
amd64
i386
libssl1.1
apt-get
libssl1.1
apt-get
1つのアーキテクチャにのみパッケージと依存関係をインストールするオプションはありますか?アーキテクチャが1つだけ変更された場合、システムがどのように損傷する可能性があるのかわかりません。 (または利用可能なすべてのアーキテクチャの依存関係をダウンロードしますか?)
man apt-get:
--arch-only
Only process architecture-dependent build-dependencies. Configuration Item:
APT::Get::Arch-Only.
しかし:
sudo apt-get install --download-only --assume-yes --arch-only libssl-dev
E: Command line option --arch-only is not understood in combination with the other options
答え1
アーキテクチャが1つだけ変更された場合、システムがどのように損傷する可能性があるのかわかりません。
複数のアーキテクチャ用にインストールされているパッケージはファイルを共有できますが、ファイルは厳密に同じである必要があります。この要件による問題を回避するには、そのパッケージを同期状態に保つ必要があります。したがって、複数のアーキテクチャにパッケージがインストールされている場合は、1つのアーキテクチャに対してのみパッケージをアップグレードできません。
最初にダウンロードしたパッケージから不要なパッケージをインストールしたくない場合は、インストールするパッケージのリストをより具体的に提供できます。例えば
apt install path/*_{amd64,all}.deb
amd64
アーキテクチャに依存しないパッケージのみがインストールされます。
アクティブなすべてのアーキテクチャのパッケージをダウンロードするには、そのパッケージを繰り返します。
for arch in $(dpkg --print-architecture) $(dpkg --print-foreign-architectures); do
sudo apt install --download-only --assume-yes libssl-dev:"$arch"
done