壊れたパッケージを削除する


9

最近、phpmyadminのセットアップに不満を感じていたので、ゼロから始めることにしました。

残念ながら、アンインストールの段階で、手元にないmysqlのrootパスワードを求められました。十分に言えば、データベースコネクタを適切にクリーニングできなかったため、コンポーネントが残っていることがわかりました。

私が家に着いたとき、phpmyadmin aptitude purgeが表示さaptitude removeれ、それを削除しようとしましたが、パッケージに関連付けられたディレクトリが以前の試行から既に削除されているため、パッケージを削除しようとしましたが、それ以上の効果はありませんでした。

私はphpmyadminを再インストールしようとしましたが、aptitudeは利用可能なアップデートがないと単純に述べ、何もしませんでした。アップデートがある場合、私はおそらく同じ問題に遭遇しました。

これに関して、使用したデータベースを削除し、ユーザーテーブルからmysqlをクリーンアップすることで、mysqlをクリーンアップしました。ただし、パッケージの他に何が残っているのか、aptitudeのフックをクリーンアップする方法すらわかりません。

結果として dpkg --purge

ickronia:/home/ken# dpkg --purge phpmyadmin
(Reading database ... 27158 files and directories currently installed.)
Removing phpmyadmin ...
/var/lib/dpkg/info/phpmyadmin.prerm: line 5: /usr/share/dbconfig-common/dpkg/prerm.mysql: No such file or directory
dpkg: error processing phpmyadmin (--purge):
 subprocess pre-removal script returned error exit status 1
/var/lib/dpkg/info/phpmyadmin.postinst: line 35: /usr/share/dbconfig-common/dpkg/postinst.mysql: No such file or directory
dpkg: error while cleaning up:
 subprocess post-installation script returned error exit status 1
Errors were encountered while processing:
phpmyadmin

Gileのアドバイスに従って、依存関係dbconfig-commonを再インストールしようとしました

ickronia:/home/ken# aptitude reinstall dbconfig-common
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Reading task descriptions... Done
dbconfig-common is not currently installed, so it will not be reinstalled.
dbconfig-common is not currently installed, so it will not be reinstalled.
The following packages are BROKEN:
  phpmyadmin
0 packages upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
Need to get 0B of archives. After unpacking 0B will be used.
The following packages have unmet dependencies:
  phpmyadmin: Depends: php5-mcrypt but it is not installable
              Depends: dbconfig-common but it is not installable
              Depends: libjs-mootools (>= 1.2.4.0~debian1-1) which is a virtual  package.
The following actions will resolve these dependencies:

Remove the following packages:
phpmyadmin

Score is 121

Accept this solution? [Y/n/q/?] n

*** No more solutions available ***

The following actions will resolve these dependencies:

Remove the following packages:
phpmyadmin

Score is 121

Accept this solution? [Y/n/q/?] n

*** No more solutions available ***

The following actions will resolve these dependencies:

Remove the following packages:
phpmyadmin

Score is 121

Accept this solution? [Y/n/q/?] y
The following packages will be REMOVED:
  phpmyadmin{a}
0 packages upgraded, 0 newly installed, 1 to remove and 3 not upgraded.
Need to get 0B of archives. After unpacking 17.7MB will be freed.
Do you want to continue? [Y/n/?] y
Writing extended state information... Done
(Reading database ... 27158 files and directories currently installed.)
Removing phpmyadmin ...
/var/lib/dpkg/info/phpmyadmin.prerm: line 5: /usr/share/dbconfig-common/dpkg/prerm.mysql: No such file or directory
dpkg: error processing phpmyadmin (--remove):
 subprocess pre-removal script returned error exit status 1
/var/lib/dpkg/info/phpmyadmin.postinst: line 35: /usr/share/dbconfig-common/dpkg/postinst.mysql: No such file or directory
dpkg: error while cleaning up:
 subprocess post-installation script returned error exit status 1
Errors were encountered while processing:
 phpmyadmin
E: Sub-process /usr/bin/dpkg returned an error code (1)
A package failed to install.  Trying to recover:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Writing extended state information... Done
Reading task descriptions... Done

ickronia:/home/ken#

phpmyadminがdbconfig-commonをきれいにクリアしたようです

ickronia:/usr/share/dbconfig-common# ls -alF
total 12
drwxr-xr-x  3 root root 4096 2011-02-09 08:09 ./
drwxr-xr-x 98 root root 4096 2011-01-20 21:42 ../
drwxr-xr-x  3 root root 4096 2011-01-05 11:08 data/
ickronia:/usr/share/dbconfig-common#

Gilesの提案に従ってアーカイブからdpkgを実行しようとしました

ickronia:/usr/share/dbconfig-common# dpkg -i /var/cache/apt/archives/{dbconfig-common,php5-mcrypt,libjs-mootools}*.deb
Selecting previously deselected package dbconfig-common.
(Reading database ... 27161 files and directories currently installed.)
Unpacking dbconfig-common (from .../dbconfig-common_1.8.46_all.deb) ...
Selecting previously deselected package php5-mcrypt.
Unpacking php5-mcrypt (from .../php5-mcrypt_5.3.3-6_i386.deb) ...
Selecting previously deselected package libjs-mootools.
Unpacking libjs-mootools (from .../libjs-mootools_1.2.5~debian1-2_all.deb) ...
Setting up dbconfig-common (1.8.46) ...
dpkg: dependency problems prevent configuration of php5-mcrypt:
 php5-mcrypt depends on libltdl7 (>= 2.2.6b); however:
  Package libltdl7 is not installed.
 php5-mcrypt depends on libmcrypt4; however:
  Package libmcrypt4 is not installed.
dpkg: error processing php5-mcrypt (--install):
 dependency problems - leaving unconfigured
Setting up libjs-mootools (1.2.5~debian1-2) ...
Processing triggers for man-db ...
Processing triggers for libapache2-mod-php5 ...
Reloading web server config: apache2.
Errors were encountered while processing:
 php5-mcrypt
ickronia:/usr/share/dbconfig-common#

私はphpでWebサーバーを実行していますが、これを解決するためにダウンタイムを危険にさらすことをいといません。


試したコマンドと得られた出力全体をコピーして貼り付けます。おそらく私たちはあなたを助けることができますが、正確なエラーメッセージを見ることなしにではありません。
Gilles「SO-悪をやめなさい」

回答:


7

phpmyadminに依存しdbconfig-commonます/usr/share/dbconfig-common/dpkg/prerm.mysql。アンインストールdbconfig-commonせずにアンインストールできたようですがphpmyadmin、これは発生してはならないことでした(--force何かしようとしたのですか?)。

私のアドバイスは、最初に試すことaptitude reinstall dbconfig-commonです。それが機能する場合、システムを一貫した状態にして、そこからaptitude purge phpmyadmin再試行できます。

もう1つのことは、問題のある行をでコメント化することです/var/lib/dpkg/info/phpmyadmin.prerm。これにより、をアンインストールできるようになりますphpmyadmin。それらのmysqlテーブルを手動で編集したときにその行が行うはずのことをしたのではないかと思いphpmyadminますが、一般的にはデータベース管理者も知らないので、推測しているだけです。

違いremoveとは、purgeそれがされてremoveいる間だけ、プログラムとそのデータファイル(あなたは再ダウンロードできるものを)削除purge最初は何を行いremove、その後、構成ファイル(ローカルで編集した可能性があるもの)を削除しません。場合はremoveそうでしょう、失敗しましたpurge


最近、dbconfig-commonを再インストールすることを提案しましたが、役に立ちませんでした。その取り組みの結果で質問を更新しました。
Ken

@ケン:試してみてくださいdpkg -i /var/cache/apt/archives/{dbconfig-common,php5-mcrypt,libjs-mootools}*.deb。キャッシュにdebsがない場合は、packages.debian.orgからダウンロードしてください。エラーメッセージが表示された場合は、それらを投稿してください。私(または他の誰か)が問題を解決する場合があります。
Gilles「SO-悪をやめる」

無駄にしようとした。私のクリーンなDebianサーバーでイナゴの群れが解き放たれたようです。この最新の試みを反映するように質問が更新されました。
Ken

@ケン:の依存関係もインストールする必要がありphp5-mcryptます。適性はあなたのために仕事をします。試してみることはできますがphp5myadmin、良い状態になるまで身をかがめることはないと思います。dpkg下位レベルであり、部分的に壊れたパッケージデータベースでも操作できます。
Gilles「SO-邪悪なことをやめなさい」

インストールしようとするにはphp5-mcrypt、それは最初の除去を促したphpmyadmindbconfig-common。他の解決策を得ることができなかったので、私が同意したとき、それはその表面で平らになるだろうと思いました。php5-mycryptが適切にフックと削除をきれいにする許可適性インストールのための「提案」していることは逆に、単に行為phpmyadminとをdbconfig-common。私はそれらを一緒に再インストールして以来、phpmyadmin(さらに制御するためにtarを使用していますが)います。最新バージョンでは、自己組織化にmysqlは必要ないようです。サーバーからイナゴを取り除いてくれたGilesに感謝します!
ケン

3

時々、パッケージ管理システムが非常に壊れている(多くの場合、循環依存チェーンにある)ので、問題のあるパッケージを削除するために私が見つけたコマンドの唯一の組み合わせは次のとおりです。

  • cd /var/lib/dpkg/info ; rm <packagename.*>
  • dpkg --purge --force-remove-reinstreq <packagename>
  • または dpkg --remove --force-remove-reinstreq <packagename>
  • 次にapt-get install <packagename>、パッケージを再インストールします

場合によっては、状態オーバーライドファイルも修正する必要があり、上記の手順でそれに関するエラーがスローされることがあります。状態オーバーライドファイルを修正する方法は、ユーザーにフラグを付けるエラーかどうかによって異なります。

一般的に:

  • 状態オーバーライドファイルは次の場所にあります。 /var/lib/dpkg/statoverride
  • 次のコマンドを実行して更新できます。 dpkg-statoverride --remove <stateoverride-filename>
  • 自分が何をしているのかわかっていれば、手動で編集することもできます

2

(あなたが引用したコマンドが存在しないので、私はあなたがaptitude purgeand を意味すると仮定しますapt-get remove

お試しくださいdpkg --purge phpmyadmin。他のツールよりもレベルが低いため、この場合はより効果的です。


同じ結果が得られましたが、aptitudeが必要とする詳細なフィードバックはありませんでした。コマンド名を細かく調べてくれてありがとう。
ケン

私は同じ問題のように感じるものを持っていますが、残念ながら私は手動でPHP、Apacheなどをコンパイルしました。不要な重複。他に方法はありませんか?

0

これらを修正するには、「apt-get -f install」を実行する必要があります。

The following packages have unmet dependencies:
 postgresql-client-9.1 : Breaks: postgresql-9.1 (< 9.1.11-0ubuntu0.12.04) but 9.1.10-0ubuntu12.04 is to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

「sudo dpkg --purge postgresql-9.1」コマンドを使用して問題を解決しました

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.