GNU/Linux >> Linux の 問題 >  >> Linux

壊れたapt、欠落している依存関係、今は何ですか?

あなたが直面している問題は次のとおりです。 Linuxボックス、おそらくaptをパッケージマネージャーとして使用するUbuntuベースまたはDebianベースのシステムで定期的な更新を実行しようとしました。リポジトリの内容を更新した後、dist-upgradeコマンドを実行すると、すぐにエラーが発生しました。 Aptは、依存関係の欠落または破損について不平を言っていたため、-fix-brokenなどを使用してコマンドを再実行することを提案しました。ただし、これは役に立たないようです。

私は数週間前にKDEネオンでこの問題に遭遇しました。専門家の知識がなければ、逃げ道がないので、問題は本当に私を悩ませました。確実に更新できない使用できないシステムが残っています。これは非常に脆弱であり、ソフトウェアにある程度の堅牢性が期待される2020年になります。 LELZ。私は過去にネオンの弾力性を称賛しましたが、それから先に進んで自分の仕事を元に戻しました。とにかく、この問題を解決する方法をお見せしましょう。

問題の詳細

これは、コマンドラインに表示されるものです:

dpkg:アーカイブの処理中にエラーが発生しました/var/cache/apt/archives/calligraplan_1%3a3.2.2+p18.04+
git20191212.1837-0_amd64.deb(--unpack):
上書きしようとしています'/ usr / share / locale / ar / LC_MESSAGES / calligraplan.mo'、これもパッケージcalligra-data 1:3.1.0 + p18.04 + git20191222.0027-0
dpkg-deb:エラー:サブプロセスの貼り付けシグナルによって強制終了されました(パイプが壊れています)
処理中にエラーが発生しました:
/var/cache/apt/archives/calligraplan_1%3a3.2.2+p18.04+
git20191212.1837-0_amd64 .deb
E:サブプロセス/ usr / bin / dpkgがエラーコードを返しました(1)

私の場合、風変わりなパッケージはCalligraでした。そもそもなぜそこにあったのかはわかりませんが、これを修正する必要があります。したがって、標準的な手順は、-fix-brokenオプションを指定してaptを実行することです。または、別の有効なオプションである--ignore-missingを試してみることもできます。循環依存地獄にぶつかり、逃げ道がないことを除いて。

sudo apt --fix-brokeninstall
パッケージリストの読み取り...完了
依存関係ツリーの構築
状態情報の読み取り...完了
'apt-を実行することをお勧めしますこれらを修正するには、「インストールが壊れています」を修正します。
次のパッケージには満たされていない依存関係があります:
calligra:依存関係:calligraplan(> =1:3.1.0 + p18.04 + git20191222.0027-0)が1:3.1.0 + p18.04 + git20191119.0027-0がインストールされています
calligraplan:依存:calligra-libs(=1:3.1.0 + p18.04 + git20191119.0027-0)が、1:3.1.0 + p18.04 + git20191222.0027 -0がインストールされています
E:依存関係が満たされていません。パッケージなしで「apt--fix-brokeninstall」を試してください(または解決策を指定してください)。

この時点では、パッケージマネージャーがすでに不安定な状態になっているため、Calligraを実際に削除することはできません。論理的な手順は、-ignore-missingオプションなどを使用して、この特定のパッケージまたは壊れたパッケージを無視することです。残念ながら、これも機能しないようです。そのため、システムは中断されます。

解決策

この問題を回避する唯一の方法は、パッケージマネージャーのステータスファイルを実際に編集し、影響を受けるパッケージとその依存関係についての言及を手動でヤンクアウトして、aptが正常な部分を再開してインストールできるようにすることです。パッチが適用されていないソフトウェアが残るため、これは良いことではありません。場合によっては、これは重要なインターネット向けのものである可能性があります。動作します(重要なシステムライブラリの1つと言います)。ただし、作業を継続することはできますが、将来的には正常な更新のバッチを受け取る可能性があります。

この時点で必要なのは、テキストエディタでrootとして/ var / lib / dpkg/statusを開くことです。この時点で、私は別の愚かな問題にぶつかりました。それは、セキュリティの脆弱性が原因で、Kateをrootとして「おそらく」起動できないという事実です。完全でまったくナンセンス。

sudo kate / var / lib / dpkg / status
セキュリティの脆弱性が修正できないため、sudoを使用してKateを実行することはできません。

ただし、sudo su-を実行してから、Kateをrootとして実行することはできます。問題ありません。これは「解決策の問題を見つけよう」のケースの1つです。これは、実際の作業との実際の関係がゼロであり、ユーザーを煩わせることを除いて、まったく違いがないためです。ターミナルウィンドウを開いて、必要に応じてsudoで削除することはできないかのように。

ファイルを開きます。これは、インストールされるパッケージの長いリストです。各パッケージには、説明、バージョン、および依存関係が付属しています。私にとっての解決策は、calligraという単語の言及を探し、それらのパッケージブロックをステータスファイルから削除することでした。一般に、このファイルは混乱を非常によく示しており、さまざまな依存、推奨、中断、その他のセクションがあります。

パッケージ:libzxingcore1
ステータス:インストールOKインストール済み
優先度:オプション
...
バージョン:1.0.7-1 + 18.04 + bionic + build2
依存:libc6 (> =2.14)、libgcc1(> =1:3.4)、libstdc ++ 6(> =5.2)
...

パッケージ:mokutil
ステータス:インストールOKインストール済み
優先度:オプション
...
バージョン:0.3.0 + 1538810437.fb6250f-0ubuntu2〜18.04.1
依存:libc6(> =2.14)、libefivar1(> =34)、libssl1.1(> =1.1.0)
...

パッケージ:libkf5itemviews-dev
ステータス:インストールOKインストール済み
優先度:オプション
...
バージョン:5.65.0 + p18.04 + git20191222.0152-0
置換:libkf5itemviews-doc(<<5.61.90-0)
依存: libkf5itemviews5(=5.65.0 + p18.04 + git20191222.0152-0)、qtbase5-dev(> =5.8.0〜)
推奨:libkf5itemviews-doc(=5.65.0 + p18.04+git20191222。 0152-0)
ブレーク:kio-dev(<<5.28)、libkf5iconthemes-dev(<<5.51)、libkf5kcmutils-dev(<<5.51)、libkf5kio-dev(<<5.51)、libkf5xmlgui-dev(<<5.51)
...

しかし、私たちの目標は単純です。競合するエントリを削除して、システムを機能させることです。実際、これを完了すると、aptパッケージマネージャーを再実行して更新を完了することができました。仕事は終わりました。

結論

正しくパッケージ化されていない1つのコンポーネントがLinuxのシステム状態を完全に台無しにする可能性がある状態にあることに驚き、失望しました。そして、Linuxだけが製品として開発され、実際の使用法の全体像を見ない開発者による一連の断片化された機能として開発されなかった場合、これを防ぐ方法はたくさんあります。たとえば、インストールを実行する前に、すべてのパッケージが正常であることを確認してください。不良パッケージが特定された場合は、それらを自動削除します。ユーザーにプロンプ​​トを表示します。不良コンポーネントをブラックリストに登録します。何でも、何か。

しかし、これは2000年の問題であり、2020年の問題でもあります。これが、苦しみが私のミドルネームではないため、本番環境のセットアップで主にWindowsを使用している理由です。コマンドラインに慣れていて、事態が悪化した場合は、ステータスファイルを確認することをお勧めします。壊れた依存関係や欠落している依存関係を回避し、ボックスを更新できるようにします。悲しいけれど幸せなことに、ここで終わりです。


Linux
  1. Linux上のAPTパッケージマネージャーの説明

  2. Dpkg -iまたはAptでDebファイルをインストールする方法は?

  3. /etc/apt/apt.confに何が起こったのですか?

  1. build-essential と build-dep とは何ですか?

  2. cd ` (バックティック) の目的は何ですか?

  3. 再起動またはシャットダウン -r now:どの再起動コマンドがより安全ですか?

  1. Linuxパッケージマネージャー:dnf vs apt

  2. aptによるLinuxパッケージ管理

  3. お気に入りのLinuxパッケージマネージャーは何ですか?