破損したパッケージを削除

破損したパッケージを削除

私は最近phpmyadmin設定に関する苦情のために最初から始めることにしました。

残念ながら、アンインストールの段階で、当時は持っていなかったmysqlのrootパスワードを求めるメッセージが表示されました。データベースコネクタを適切にクリーンアップできないため、残りのコンポーネントがあることを知らせるだけで十分です。

家に帰ってパッケージを削除しようとしましたが、phpmyadminを表示するよりもうまく機能しないことをaptitude purge見つけてaptitude remove削除しようとしましたが、パッケージに関連するディレクトリが以前の試みから削除されたため失敗しました。

私はphpmyadminを再インストールしましたが、適性は利用可能なアップデートがないと言って何もしませんでした。アップデートがあった場合、おそらく同じ問題が発生した可能性があります。

この時点で私はmysqlをクリーンアップし、使用していたデータベースを削除してから、ユーザーテーブルから消去しました。しかし、パッケージに何が残っているのか、適性のフックをきれいにする方法さえわかりません。

結果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サーバーを持っていますが、この問題を解決するためにダウンタイムを取るつもりです。

答え1

phpmyadminに依存するdbconfig-common、含んでいる/usr/share/dbconfig-common/dpkg/prerm.mysql。をdbconfig-common削除せずに正常に削除したようですphpmyadmin。このようなことが発生してはいけません(試してみましたか--force?)。

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

あなたができるもう一つのことは/var/lib/dpkg/info/phpmyadmin.prerm。これにより削除できますphpmyadmin。私はこれらのmysqlテーブルを手動で編集するときにその行が実行する必要があることをやっていると思いますが、通常phpmyadminはデータベース管理者がわからないので推測です。

removeとの違いは、プログラムとそのデータファイル(もう一度ダウンロードできる項目)のみを削除するのに対し、最初に実行すると設定ファイル(ローカルで編集できる項目)も削除されることpurgeです。失敗すると失敗します。removepurgeremoveremovepurge

答え2

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

  • 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>
  • 何をしているのかを知っている場合は、手動で編集することもできます。

答え3

(私はあなたが引用した命令が存在しないので、あなたが意味すると仮定していますaptitude purgeapt-get remove

努力するdpkg --purge phpmyadmin。他のツールよりもレベルが低いため、この状況ではより効果的です。

答え4

これらの問題を解決するには、「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」コマンドを使用して問題を解決しました。

関連情報