Debian-11-amd64を実行している低コストのデバイスでは、一部のRAM(と呼ばれるdpkg --add-architecture i386
)を節約するために32ビット版のChromeブラウザをインストールすることをお勧めします。
apt install chromium:i386
うまくいきます。さて、アーチに依存しない言語パックもインストールしたいと思います。
$ apt install chromium-l10n
The following additional packages will be installed:
chromium chromium-common chromium-sandbox
Suggested packages:
chromium-shell chromium-driver
The following packages will be REMOVED:
chromium:i386 chromium-common:i386 chromium-driver:i386 chromium-sandbox:i386
The following NEW packages will be installed:
chromium chromium-common chromium-l10n chromium-sandbox
0 upgraded, 4 newly installed, 4 to remove and 5 not upgraded.
したがって、aptは64ビットパッケージのバージョンをインストールし、32ビットバージョンを削除しようとします。あまり良くない。
頑張った
$ apt install chromium-l10n:i386
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package chromium-l10n:i386 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'chromium-l10n:i386' has no installation candidate
いくつかの固定変形/etc/apt/preferences.d/mychrome-i386
Package: chromium-l10n
Pin: release o=security.debian.org_debian-security_dists_bullseye-security_non-free_binary-i386_Packages
Pin-Priority: 900
これらのどれも機能しません。 (合理的な努力で)これはどのように達成できますか?
ありがとう
、太鼓
ベストアンサー1
OPよりも一般的なアプローチを使用して、バージョンを再インストールしないようにするなど、Pin優先順位のあるバリアントの再インストールを防ぐことができますamd64
。/etc/apt/preferences.d/local-chromium.pref
amd64
Package: chromium:amd64
Pin: origin *
Pin-Priority: -1
amd64
バリアントがインストールされるのを防ぎ、バリアントのみをオプションとして残すことi386
を除いて、インストール可能なコンテンツの優先順位は変更されません。
以下の変更では発生しないため、これはオプションです。新しいバージョンが見つかった場合、標準アップグレードは使用されませんapt upgrade
(ただし使用することができますapt full-upgrade
)。とにかく、後で実際にDebian nからDebian n + 1にアップグレードすると、これらの設定はどんな方法でもクラッシュします。競合するパッケージを削除し、Debian バージョンの変更後に再インストールすることをお勧めします。
Multi-Arch: foreign
重要な要素は、依存関係システムが他の(外部)アーキテクチャのパッケージを基本パッケージとして扱うことです。明らかに、実際のパッケージの動作またはAPIが許可する場合にのみこれを行う必要があります。
Debian ウィキペディアマルチアーキテクチャHOWTOの説明:
- パッケージが「Multi-Arch:foreign」と表示されている場合は、さまざまなアーキテクチャのパッケージの依存関係を満たすことができます(たとえば、「debhelper:amd64」は、すべてのアーキテクチャのdebhelperのパッケージの依存関係を満たします)。
Ubuntuの追加参考資料マルチアーキテクチャ仕様(以前のリンクから引用したDebian):
Multi-Arch: foreign
- パッケージはいいえとともに設置可能しなければならない他のアーキテクチャに対するパッケージの依存関係を満たすことはできますが、独自のアーキテクチャは許可しません。
[...]
私は同じ理由でOPがしたことをFirefoxにしました。つまり、低仕様システムでメモリを節約することでした。変更は、依存パッケージではなく「デフォルト」バイナリパッケージで行う必要があります。また、パッケージが変更されると、依存関係アルゴリズムは同じバージョンを維持するときにインストールされたソースよりもストレージソースを優先しますが、依存関係のためにそうしません。常にパッケージが予約されていると記録され、パッケージが予約されている場合は新しいバージョンを使用できますが、インストールできないか、同じバージョンが可能です。この問題は、パッケージのバージョンを少し上げると解決される可能性があります。
chromium
このアプローチは一部のパッケージ(、firefox-esr
および含むthunderbird
)ではうまく機能しますが、他のパッケージでは失敗する可能性があります。特に、それ自体が同じタイプの問題がある場合、またはMultiarchのライブラリに正しく適用されていない非ライブラリパッケージに依存している場合(おそらくバグの可能性があります):1)、ランタイムライブラリが一緒にインストールされることを期待する必要がMulti-Arch: same
あります。
目標は次のとおりです。
Multi-Arch: foreign
そのパッケージに依存する他のパッケージがデフォルトパッケージとして処理され、別のスキーマをインポートしようとする試みがもはや行われないようにパッケージを設定します。オプション:バージョン番号を増やします。
これは、新しい実際のバージョンがいつリリースされるのかを知るのに役立ちます。これをやり直す必要があります。
前のステップが完了した場合、このステップは必須です。パッケージが独自に提供されるように設定し、以前の(実際の)バージョンにバージョンを指定します。
...非アーキテクチャバージョンによって依存関係の問題が繰り返されるのを防ぎます。
これらの変更を行う簡単なツールはありません。/var/lib/dpkg/status
インストールされているすべてのパッケージのデータベースであるこのファイルを個人的に直接編集しました。誤って、システム全体のインストールが損なわれる可能性があります。より長いがより安全な方法は次のとおりです。バイナリパッケージをダウンロードして解凍し、必要に応じて編集し、代替バイナリパッケージに再パッケージしてインストールします。
すべての作業はユーザーとして実行する必要があります。根(しかしfakeroot
人々が使用方法を理解する限り、部品を再梱包するために使用できます(一度)。
mkdir /tmp/repack
cd /tmp/repack
apt-get download chromium:i386
dpkg-deb --raw-extract chromium_*_i386.deb chromium
ファイルの編集chromium/DEBIAN/control
:
項目を追加します(例:
Architecture: i386
以下の項目)。Multi-Arch:
Multi-Arch: foreign
Version:
アイテムの修正バージョンにを追加してバージョンを変更します
.0
。たとえば、今日のDebian 12では、次のようになります。Version: 119.0.6045.123-1~deb12u1.0
アイテムを編集します
Provides:
(該当するアイテムがないパッケージの場合は追加)。最後にACTUALBERSIONを追加すると、追加されていない
, chromium (= ACTUALVERSION)
実際のバージョンに置き換えられます.0
。たとえば、今日のDebian 12では、次の行が表示されます。Provides: gnome-www-browser, www-browser, chromium (= 119.0.6045.123-1~deb12u1)
変更されたパッケージを新しい.deb
ファイルに再パッケージします。
dpkg-deb --build chromium/ chromium.deb
そして、他のパッケージ(将来のアップグレード時に自動的にインポートする必要があります)と一緒に(実際の)ユーザーroot
として再インストールします。
apt-get install ./chromium.deb chromium-l10n
バージョンがアップグレードされていない場合は--reinstall
必要になる場合があります。
Debian が新しいバージョンをリリースするたびに、この操作をやり直す必要があります。これは、将来のapt upgrade
コマンドでアップグレードではなくメンテナンスを指示するときに検出するchromium:i386
必要があります。
実際のテストはDebian 12で書かれています。