削除したいコマンドを無視するようにapt-getコマンドをどのように設定できますか?

削除したいコマンドを無視するようにapt-getコマンドをどのように設定できますか?

削除する特定のパッケージを無視するようにapt-getコマンドを設定できますか?私は32ビットと64ビットの開発パッケージとその上で生成されたプログラムを実行します。つまり、システムにxxx:i386とそれに対応する64ビットが必要であることを意味します。たとえば、このシステムでは、関連するすべての32ビット開発パッケージが削除対象としてマークされている64ビット開発パッケージをインストールする必要があります。

root@ac02:/usr/src/packages/lazarus# apt-get -f install
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Correcting dependencies... Done
The following packages were automatically installed and are no longer required:
  gir1.2-freedesktop:i386 gir1.2-glib-2.0:i386 gir1.2-pango-1.0:i386 libcairo-gobject2:i386 libcairo-script-interpreter2:i386 libexpat1-dev:i386 libgirepository-1.0-1:i386
  libharfbuzz-gobject0:i386 libharfbuzz-icu0:i386 libice-dev:i386 liblzo2-2:i386 libpcre3-dev:i386 libpcrecpp0:i386 libpng12-dev:i386 libpthread-stubs0-dev:i386 libsm-dev:i386
  libx11-dev:i386 libxau-dev:i386 libxcb-render0-dev:i386 libxcb-shm0-dev:i386 libxcb1-dev:i386 libxcursor-dev:i386 libxdamage-dev:i386 libxdmcp-dev:i386 libxext-dev:i386
  libxfixes-dev:i386 libxinerama-dev:i386 libxrandr-dev:i386 libxrender-dev:i386 zlib1g-dev:i386
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  gir1.2-atk-1.0 gir1.2-gdkpixbuf-2.0 gir1.2-gtk-2.0 libatk1.0-dev libcairo-script-interpreter2 libcairo2-dev libexpat1-dev libfontconfig1-dev libfreetype6-dev libgdk-pixbuf2.0-dev
  libglib2.0-dev libgtk2.0-dev libharfbuzz-dev libharfbuzz-gobject0 libice-dev libpango1.0-dev libpcre3-dev libpcrecpp0 libpixman-1-dev libpng12-dev libpthread-stubs0-dev libsm-dev
  libx11-dev libxau-dev libxcb-render0-dev libxcb-shm0-dev libxcb1-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxft-dev libxi-dev
  libxinerama-dev libxrandr-dev libxrender-dev
Suggested packages:
  libcairo2-doc libglib2.0-doc libgtk2.0-doc libice-doc libpango1.0-doc libsm-doc libxcb-doc libxext-doc
The following packages will be REMOVED:
  gir1.2-atk-1.0:i386 gir1.2-gdkpixbuf-2.0:i386 gir1.2-gtk-2.0:i386 libatk1.0-dev:i386 libcairo2-dev:i386 libfontconfig1-dev:i386 libfreetype6-dev:i386 libgdk-pixbuf2.0-dev:i386
  libglib2.0-dev:i386 libgtk2.0-dev:i386 libharfbuzz-dev:i386 libpango1.0-dev:i386 libpixman-1-dev:i386 libxcomposite-dev:i386 libxft-dev:i386 libxi-dev:i386
The following NEW packages will be installed:
  gir1.2-atk-1.0 gir1.2-gdkpixbuf-2.0 gir1.2-gtk-2.0 libatk1.0-dev libcairo-script-interpreter2 libcairo2-dev libexpat1-dev libfontconfig1-dev libfreetype6-dev libgdk-pixbuf2.0-dev
  libglib2.0-dev libgtk2.0-dev libharfbuzz-dev libharfbuzz-gobject0 libice-dev libpango1.0-dev libpcre3-dev libpcrecpp0 libpixman-1-dev libpng12-dev libpthread-stubs0-dev libsm-dev
  libx11-dev libxau-dev libxcb-render0-dev libxcb-shm0-dev libxcb1-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxft-dev libxi-dev
  libxinerama-dev libxrandr-dev libxrender-dev
0 upgraded, 38 newly installed, 16 to remove and 33 not upgraded.
1 not fully installed or removed.
Need to get 14.0 MB of archives.
After this operation, 13.4 MB of additional disk space will be used.
Do you want to continue? [Y/n] 

パッケージが削除対象としてマークされている場合、apt-getはそのパッケージが他のパッケージと競合すると思うという意味ですか?ほとんどの開発システムは64ビットパッケージとは別に32ビット開発パッケージを検索するため、これは非常に予期しないことです。

ベストアンサー1

apt-get他のパッケージのインストール中にパッケージを削除することにした場合、これは宣言された競合(実際の競合を反映しない可能性がある)があるためです。回答で説明されているように、非マルチアーキテクチャパッケージは他のアーキテクチャの同じパッケージと競合します。aptを介して64ビットライブラリをインストールしようとすると、必要な多くの32ビットライブラリが削除される危険性があるのはなぜですか?これは開発キットで頻繁に発生します。

ただし、競合するパッケージの強制インストールを使用できますdpkg --force-conflicts。影響を受けるパッケージをダウンロードして手動でインストールする必要があり、競合apt-getが解決されるまでそのパッケージは使用できません(またはapt-get競合解決は中断されます)。競合に関連するパッケージを壊す可能性がありますが、少なくとも試してみることはできます...

apt-get競合処理を無効にするオプションがわかりません。

代替案は、影響を受けたパッケージを修復することです。ほとんどの場合、これは簡単で、その後の問題を回避できますapt。たとえば、harfbuzzDebian 8の場合:

  • ソースコードをダウンロードして解凍しました:

    dget http://httpredir.debian.org/debian/pool/main/h/harfbuzz/harfbuzz_0.9.35-2.dsc
    cd harfbuzz-0.9.35
    
  • debian/control下の行Multi-Arch: sameの後に編集して追加してください。ArchitecturePackage: libharfbuzz-dev

  • カスタムパッケージがアーカイブの現在のバージョンに置き換えられないように、変更ログエントリを追加します。

    dch -n "Enable Multi-Arch on the -dev package."
    
  • パッケージをビルドします(amd64ビルダーとi386ビルダーでこれを行う必要があります。ここでpbuilder便利です)。sbuild

    dpkg-buildpackage -us -uc
    

これにより、共同インストール可能なlibharfbuzz-devパッケージが作成されます。パッケージはすでに共同インストール可能であるため動作しますが、必要なメタデータがありません。harfbuzzこの問題はDebian 9で修正されました。

おすすめ記事