Linux
 Computer >> コンピューター >  >> システム >> Linux

Linuxで壊れたパッケージを修正する方法

Linuxで壊れたパッケージを修正する方法

AptやDNFなどのLinuxパッケージマネージャーは非常に強力で直感的ですが、それは問題が発生しないという意味ではありません。ときどき、パッケージのインストールがうまくいかず、ピースを手に入れる必要があります。パッケージマネージャーには、壊れたパッケージを修正し、壊れた更新をスキップして、システムを再び機能させ、将来のトラブルを回避する機能があります。この記事では、Linuxで壊れたパッケージを修正する方法について説明します。

これらのヒントとコツは、ほとんどの場合、行き詰まりを解消するのに役立ちます。それらはすべてかなり普遍的ですが、状況はそれぞれ異なるため、自分の状況をデバッグするときはそのことに注意してください。

Ubuntu / Mint/Debianで壊れたパッケージを修正する

Aptには、インストール中に何らかの理由で壊れた不足している依存関係やパッケージを修正するために使用できるフラグがいくつかあります。ここでの一般的な使用法は、サードパーティの.debをインストールして、知らない依存関係があることを確認することです。これらの依存関係は、おそらくそれ自体では引き込まれず、dpkg パッケージが不足していると文句を言います。いずれの場合も、次の手順を試すことができます。

Linuxで壊れたパッケージを修正する方法

まず、更新を実行して、必要なパッケージの新しいバージョンがないことを確認します。

sudo apt --fix-missing update

次に、問題のあるパッケージを再度インストールしようとしたときに、Aptに、欠落している依存関係や壊れたパッケージを探して修正するように強制することができます。これにより、不足している依存関係が実際にインストールされ、既存のインストールが修復されます。

sudo apt install -f

パッケージのインストールでエラーが発生する可能性があるもう1つの場所は、構成プロセスです。舞台裏では、dpkgがAptではなくこの部分を処理しているため、構成中にパッケージに障害が発生した場合、dpkgがそれを修正するためのツールであると考えられます。

Linuxで壊れたパッケージを修正する方法

壊れたパッケージまたは部分的に構成されたパッケージをdpkgに再構成させることから始めます。

sudo dpkg --configure -a

それでも問題が解決しない場合は、より強力なアプローチを取ることができます。 dpkgが再インストールが必要であるとマークしたパッケージをリストすることから始めます。

sudo dpkg -l | grep ^..r

問題のあるパッケージがそこに表示されます。そこに属していないように見えるものがない限り、壊れたパッケージを強制的に削除できます。

sudo dpkg --remove --force-remove-reinstreq [package name]

dpkgが完了したら、Aptでクリーンアップしてみてください。

sudo apt clean
sudo apt update

運が良ければ、始めたところに戻ることができます。インストールしようとした壊れたパッケージは取得されませんが、少なくともAptは再び機能するようになり、パッケージとその依存関係のインストールを試みるためにAptの使用に戻ることができます。

永続的なDPKGロック

dpkgロックで何もできないというあまり一般的ではない問題があります。 Aptまたはdpkgを使おうとすると、別のアプリケーションがすでにあるというエラーが表示されます…そうでない場合。

実際には、ロックファイルを削除するのは簡単で、Aptを使用できず、必要な作業に戻ることができません。これらのロックファイルは、インストールエラーまたは停電後もそのまま残り、プロセスを狂わせ、ファイルが自動的に削除されない場合があります。この場合、自分で行う必要があります。

sudo rm /var/lib/apt/lists/lock

適切な方法として、キャッシュ内のロックを削除します。

sudo rm /var/cache/apt/archives/lock

Fedora / CentOS/RHELで壊れたパッケージを修正する

yumとdnfはパッケージが正しくインストールされていることを確認するのに非常に優れているため、Fedora / CentOS/RHELで壊れたパッケージを修正することはあまり一般的ではありません。ただし、パッケージの使用で混乱することがあります。 rpmベースのシステムでこれを行うためのコマンドは次のとおりです。

sudo rpm -Va
Linuxで壊れたパッケージを修正する方法

-V オプションは検証用です。つまり、インストールされたファイルの情報を調べて、rpmに保存されている情報と比較します。 データベース。これは通常、ファイルの長いリストを提供するため、少し役に立ちませんが、特定のアプリケーションで問題が発生した場合は、どこかから始めることができます。 dnf reinstallを実行できます そのリストに表示されている、問題を引き起こしている可能性のあるパッケージ。

sudo dnf --refresh reinstall PACKAGE_NAME

これにより、すべてのメタデータが期限切れとして設定されるため、有効にしたすべてのリポジトリをクロールして、そのパッケージの新しいバージョンを探します。そのパッケージとの依存関係が壊れていることがわかった場合、DNFはおそらく文句を言い、--skip-brokenを使用するように指示します。 国旗。これは、依存関係を取得するために特定のリポジトリを有効にしていないことを意味する場合もあるため、そこで調査を行う必要がある場合があります。

Archで壊れたパッケージを修正する

ArchのパッケージマネージャーはDebianと多くの類似点がありますが、まったく異なる獣です。問題を診断するための最初のステップは、リポジトリが最新であることを確認し、完全なアップグレードを試みることです。

sudo pacman -Syu

パッケージのインストールやシステムのアップグレードを試みても失敗する場合は、ターミナルからの指示に従って原因を特定する必要があります。

「無効または破損したパッケージ」

「pacman.conf」に何らかの方法で変更を加えると、pacmanの原因となる問題が発生する可能性があります。 パッケージに誤って破損のラベルを付ける。ここで最も可能性の高い原因は、パッケージマネージャーキャッシュ内の部分的な(「.part」)ファイルであり、解決策はそれを削除することです:

sudo find /var/cache/pacman/pkg/ -iname "*.part" -delete

インストールしようとしているパッケージが実際に破損していて、Archに有効なメタデータを提供していない可能性は常にあります。その場合、パッケージメンテナが更新するのを待つ必要があります。パッケージがシステムにインストールされていて、アップグレード中に問題が発生した場合は、次のコマンドでパッケージを削除してください。

sudo pacman -Rns [package name]

「データベースをロックできません」

Debianのaptと同様に、Archのパッケージマネージャーは操作中にロックファイルを作成します。停電またはpacmanが発生した場合 ロックを解除できないハード割り込みが発生したため、ロックファイルが残る可能性が非常に高くなります。

まず、コンピュータ上のプロセスがまだファイルを使用しているかどうかを確認します。

sudo fuser /var/lib/pacman/db.lck
Linuxで壊れたパッケージを修正する方法

上の画像では、ID121497のプロセスがファイルロックを使用しています。プロセスに興味があり、詳細が必要な場合は、psを使用してください :

ps -p [PID#]
Linuxで壊れたパッケージを修正する方法

私の場合、別のpacmanインスタンスがロックファイルを所有しています。ロックを解除する最も安全な方法は、最初にそのプロセスを強制終了することです。

sudo kill [PID#]

プロセスが終了したので、ロックファイルを削除します:

sudo rm /var/lib/pacman/db.lck

よろしくお願いします!

「競合するファイル/ファイルがファイルシステムに存在する」

これは、pacmanのアップグレード中に発生します 競合を検出します。何かを修正する前に、パッケージマネージャーが不満を言っているファイルへのパスに注意してください。

最初に確認する必要があるのは、ファイルの所有者です:

pacman -Qo [path to the file]

別のパッケージではなくユーザーが所有している場合は、削除するだけです:

sudo rm [path to the file]

別のパッケージが所有している場合、最も安全な方法は、パッケージのメンテナがこの競合を自分で修正するのを待つことです。ただし、それが選択肢にない場合もあり、今すぐ物事を成し遂げたいと考えています。

これを実現する最も簡単な方法は、--overwriteを使用することです。 pacmanのフラグ 。これは一般的に安全ではないことを知っておいてください また、一部のアプリケーションがシステムで正しく機能しない可能性があります。これを実行する前にバックアップを作成することをお勧めします。

--overwrite フラグを使用すると、Archのパッケージマネージャーは特定のファイルの所有権ルールを無視して、更新をスチームロールすることができます。例:

pacman -Syu --overwrite [file name]

上記のコマンドが機能しない場合は、ファイル名を絶対パスに置き換えてください。一部のユーザーは、パスの前にある先頭のスラッシュ( "/")を削除すると、頑固なときにコマンドが機能するようになると報告しています。

よくある質問

1。 AURヘルパーを使用してアーチフィックスを適用できますか?

一般的に、はい。このガイドのコマンドで、「pacman」をAURヘルパーに置き換えます。例:

yay -Qo /path/to/file

2。これらの指示は安全ですか?

ほとんどの場合、ここでのすべての命令は、他のパッケージ管理操作とほぼ同じくらい安全です。主な例外は、ロックファイルを削除する場合です。そうする方法がある場合は、それらのファイルを削除する前に、それらのファイルを使用している可能性のあるすべてのプロセスを強制終了することが常に重要です。システムが何をしているのかを常に把握してください。どこかで実行されているaptまたはpacmanのインスタンスを忘れている可能性があります!

ベストプラクティスは、アップグレードする前に常にシステムをバックアップすることです。

3。更新を中断した場合はどうすればよいですか?

Ctrlを押して更新プロセスを中断する + C 、パッケージマネージャのプロセスを強制終了するか、ターミナルを途中で閉じると、パッケージデータベースにある程度の破損が発生し、他の何かをインストールしようとしたときに問題が複雑になる可能性があります。これを修正するには、キャッシュをクリアして更新を繰り返します。

Debian / Ubuntu / Mint / Pop!_OS / etc。:

sudo apt-get clean

Fedora / CentOS / RHELの場合:

sudo dnf clean all

アーチの場合:

sudo pacman -Scc

まとめ

うまくいけば、これらの修正の1つが機能し、Linuxシステムで通常どおりに作業を再開できます。完全に手に負えない状況に対処する最善の方法は、以前の状態に戻ろうとすることであることを忘れないでください。自分が何をしているのかを正確に理解していない限り、電源を入れて追加して破損を解決しようとしないでください。壊れたものが絡み合って、整理が難しくなる可能性があります。

不要で壊れたパッケージを取り除くために、Linuxシステムをクリーンアップする必要がある場合もあります。古いPCが新しいソフトウェアをサポートできないことが原因である場合は、これら3つの方法を利用して、古いPCを有効に活用することもできます。


  1. Excel で壊れたハイパーリンクを修正する方法 (5 つの方法)

    ハイパーリンクは、クリックまたはタップするだけでデータやリソースをたどることができる非常に便利な機能です。他の多くの Office ソフトウェアと同様に、Microsoft Excel を使用すると、コンテンツにハイパーリンクを作成、挿入、および編集できます。ただし、ハイパーリンクが無効になることがあります。これは、さまざまな関係者によるさまざまな理由によって引き起こされる可能性があります。この記事では、Microsoft Excel でこれらの破損したハイパーリンクを修正する方法に焦点を当てます。 デモンストレーションに使用するワークブックは、以下のダウンロード リンクからダウンロードでき

  2. 壊れたアバスト レジストリ アイテムを修正するにはどうすればよいですか

    「プライバシーは私に与えられたものではなく、絶対的な前提条件です したがって、機密データやファイルを脅威にさらしたままにしないために、デバイスにウイルス対策ソフトウェアをインストールすることが重要になります。ウイルス、マルウェア、スパイウェア、アドウェア、トロイの木馬、ルートキットなど、このデジタル時代に私たちを取り囲む脅威の名前を挙げると、そのリストは尽きることがありません。サイバー犯罪者やハッカーは、これらの悪意のあるプログラムを作成して、デバイスやデータへの不正アクセスを取得し、システムに損害を与え、オンライン プライバシーを妨害します。 したがって、ウイルスやマルウェアの侵入