無害な「dpkg --force-contributes」パッチワークを許可するようにapt-getオプションを設定しますか?

無害な「dpkg --force-contributes」パッチワークを許可するようにapt-getオプションを設定しますか?

マイナークラッシュパッケージ金持ちとともにバー、実行してdpkg --force-conflicts -i foo。しかし、最終的にオブジェクトをアップグレードして「apt-get」する時間です。

% apt-get upgrade
Reading package lists... Done
Building dependency tree       
Reading state information... Done
You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
 foo : Conflicts: bar but 0.2-1 is installed
E: Unmet dependencies. Try using -f.

できる適切(ほぼ固定された)紛争を容認し拡大するように調整/強制されていますか?

(迅速な存在証明:削除金持ちを押してアップグレードして再インストールします。金持ち以前のように。したがって、はい問題は、可能であれば最も面倒なメカニズムを見つけることです。 )


しかし、例えば、質問は次のようになります。いいえ二つくらい特別なバッグ。

数年間牛に似た一種の栄養平行線誰かとマイナーな紛争を経験したモルトール;それぞれ提供/usr/bin/パラレル包装袋強制的に共存できます。

# assume 'moreutils' is already installed, and 'parallel' is in
# apt's cache directory.
dpkg --force-conflicts -i /var/cache/apt/archives/parallel_20141022+ds1-1_all.deb

転送が生成され、名前が変更されます。その他のユーティリティバージョンは/usr/bin/parallel.moreutils。どちらのプログラムもユーザーがアップグレードするまで機能します。

私は試した- モールド選択、しかしそれは平和をもたらさなかった。

apt-get -o Dpkg::Options::="--force-conflicts" install parallel moreutils

可能- モールド何百ものオプションがありますが…

答え1

OPは、Gillesの回答に対するコメントでコマンドリスト(パッケージの関連メタデータを変更するため)を要求したため、次のようになります。

# download .deb
apt download parallel
# alternatively: aptitude download parallel

# unpack
dpkg-deb -R parallel_*.deb tmp/

# make changes to the package metadata
sed -i \
  -e '/^Version:/s/$/~nomoreutconfl/' \
  -e '/^Conflicts: moreutils/d' \
  tmp/DEBIAN/control

# pack anew
dpkg-deb -b tmp parallel_custom.deb

# install
dpkg -i parallel_custom.deb

これはmoreutils、私のインストールの場合のように、競合する行が1つのエントリとしてのみ存在し、バージョン制限がないと仮定します。それ以外の場合は、'/^Conflicts:/s/\(, \)\?moreutils\( [^,]\+\)\?//'2番目のスクリプトとして使用すると、その行sedの関連部分のみが削除され、バージョン制限がサポートされます。

インストールしたパッケージはリポジトリの最新バージョンで上書きされず、パッケージを最新の状態に保つには、GNUパラレルパッケージを更新するたびにこのプロセスを手動で繰り返す必要があります。

答え2

パッケージ間の衝突は本質的に有害です。dpkg競合するパッケージを強制的にインストールしても問題は発生しない可能性があります。その他競合を宣言する妥当な理由がないにもかかわらず、パッケージが依然として競合している場合はダメージを与える可能性があります。 APT はパッケージのインストール時に競合を解決しようとし、無視する競合のリストはありません。他のオプションを渡すことでこの問題を解決することはできませんdpkg。問題は、このような競合によってAPT自体の操作が不可能になることです。

APTの競合状態から離れるために一時的な状態以外の競合するパッケージをインストールしないでください。dpkg紛争の状況から抜け出すために一生懸命働くまでAPTを実行しないでください。

競合するパッケージをインストールする場合は、まずそのパッケージを修正して宣言を削除し、Conflict:競合する宣言を引き起こした問題も解決してください。

関連情報