"apt-get install"で他のアーキテクチャのパッケージアップグレードをスキップするには?

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 installedamd64i386libssl1.1 apt-getlibssl1.1apt-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

おすすめ記事