Defekte Pakete entfernen


9

Vor kurzem habe ich mich aus Frustration über die Einrichtung von phpmyadmin entschlossen, von vorne zu beginnen.

Leider wurde ich während der Deinstallationsphase mit dem Root-Passwort für MySQL aufgefordert, das ich zu diesem Zeitpunkt nicht zur Hand hatte. Es genügt zu sagen, dass es Rückstandskomponenten geben würde, da die Datenbankkonnektoren nicht ordnungsgemäß gereinigt werden konnten.

Als ich zu Hause ankam, versuchte ich, das Paket zu entfernen, aptitude purgewas sich als nicht wirksamer herausstellte, als aptitude removedass es phpmyadmin sah, versuchte es zu entfernen und schlug fehl, da die mit dem Paket verknüpften Verzeichnisse bereits aus meinem früheren Versuch entfernt wurden.

Ich habe versucht, phpmyadmin neu zu installieren, aber aptitude hat lediglich angegeben, dass kein Update verfügbar ist, und nichts unternommen. Wenn es ein Update gäbe, würde ich wahrscheinlich trotzdem auf dieselben Probleme stoßen.

In diesem Zusammenhang habe ich MySQL bereinigt, indem ich die verwendete Datenbank gelöscht und aus den Benutzertabellen entfernt habe. Ich habe jedoch keine Ahnung, was noch von der Verpackung übrig ist oder wie man die Haken in geeigneter Weise reinigt.

Das Ergebnis von 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

Nachdem ich Giles Rat befolgt hatte, versuchte ich, die Abhängigkeit dbconfig-common neu zu installieren

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#

Es scheint, dass phpmyadmin dbconfig-common sauber gelöscht hat

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#

Es wurde versucht, aus Archiven zu dpkg, wie von Giles vorgeschlagen

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#

Ich habe einen Webserver, der auf PHP läuft, aber ich bin bereit, Ausfallzeiten zu riskieren, um dies zu beheben.


Kopieren Sie die genauen Befehle, die Sie ausprobiert haben, und die gesamte Ausgabe, die Sie erhalten. Wir können Ihnen wahrscheinlich helfen, aber nicht ohne die genauen Fehlermeldungen zu sehen.
Gilles 'SO - hör auf böse zu sein'

Antworten:


7

phpmyadminhängt davon ab dbconfig-common, was enthält /usr/share/dbconfig-common/dpkg/prerm.mysql. Es sieht so aus, als hätten Sie es geschafft, dbconfig-commonohne Deinstallation zu deinstallieren phpmyadmin, was nicht hätte passieren dürfen (haben Sie versucht, --forceetwas zu tun ?).

Mein Rat ist, es zuerst zu versuchen aptitude reinstall dbconfig-common. Wenn es funktioniert, sollten Sie ein System in einem konsistenten Zustand haben, von dem aus Sie es aptitude purge phpmyadminerneut versuchen können.

Sie können auch die betreffende Zeile auskommentieren /var/lib/dpkg/info/phpmyadmin.prerm. Dadurch können Sie wahrscheinlich deinstallieren phpmyadmin. Ich vermute, Sie haben getan, was diese Zeile tun soll, als Sie diese MySQL-Tabellen manuell bearbeitet haben, aber ich weiß nicht, phpmyadminoder Datenbankadministrator im Allgemeinen, also rate ich nur.

Der Unterschied zwischen removeund purgebesteht darin, dass removenur das Programm und seine Datendateien entfernt werden (das Material, das Sie erneut herunterladen könnten), während purgezuerst das getan removewird, was dann auch Konfigurationsdateien entfernt (das Material, das Sie möglicherweise lokal bearbeitet haben). Wenn dies removefehlschlägt, wird dies auch der Fall sein purge.


Ich habe kürzlich versucht, Ihnen einen Vorschlag zur Neuinstallation von dbconfig-common zu unterbreiten, aber ohne Erfolg. Ich habe meine Fragen mit den Ergebnissen dieses Vorhabens aktualisiert.
Ken

@ Ken: Versuchen Sie es dpkg -i /var/cache/apt/archives/{dbconfig-common,php5-mcrypt,libjs-mootools}*.deb. Wenn Sie die Debs nicht in Ihrem Cache haben, laden Sie sie von packages.debian.org herunter . Wenn es Fehlermeldungen gibt, posten Sie sie und ich (oder jemand anderes) kann Ihnen dabei helfen.
Gilles 'SO - hör auf böse zu sein'

Vergeblich versucht. Es scheint, als wäre ein Schwarm Heuschrecken auf meinem sauberen Debian-Server entfesselt worden. Die Frage wurde aktualisiert, um diesen letzten Versuch widerzuspiegeln.
Ken

@ Ken: Sie müssen auch die Abhängigkeiten von installieren php5-mcrypt. Eignung würde den Job für Sie erledigen; Sie können es versuchen, aber ich denke, es wird sich weigern, sich zu bewegen, bis Sie php5myadmineinen guten Zustand erreichen. dpkgist niedriger und kann sogar mit einer teilweise defekten Paketdatenbank betrieben werden.
Gilles 'SO - hör auf böse zu sein'

Beim Versuch der Installation php5-mcryptwurde zunächst das Entfernen von phpmyadminund veranlasst dbconfig-common. Ich konnte keine anderen Lösungen finden, also dachte ich, dass es flach auf sein Gesicht fallen würde, als ich zustimmte. Im Gegensatz, einfach die Handlung , dass php5-mycrypt war ‚vorgeschlagen‘ für zulässig installieren aptitude richtig die Haken zu reinigen und zu entfernen phpmyadminund dbconfig-common. Ich habe sie jetzt zusammen mit neu installiert phpmyadmin(allerdings durch einen Teer für mehr Kontrolle). Es scheint, dass die neueste Version kein MySQL für die Selbstorganisation benötigt. Danke Giles, dass du die Heuschrecken von meinem Server entfernt hast!
Ken

3

Manchmal ist das Paketverwaltungssystem so kaputt (oft in einer zirkulären Abhängigkeitskette), dass die einzige Kombination von Befehlen, die ich gefunden habe, um problematische Pakete zu entfernen, folgende sind:

  • cd /var/lib/dpkg/info ; rm <packagename.*>
  • dpkg --purge --force-remove-reinstreq <packagename>
  • ODER dpkg --remove --force-remove-reinstreq <packagename>
  • Dann apt-get install <packagename>installieren Sie das Paket erneut

Manchmal muss die Statusüberschreibungsdatei auch repariert werden, und das obige Verfahren kann diesbezügliche Fehler auslösen. Wie die Statusüberschreibungsdateien behoben werden, hängt davon ab, ob es sich um einen Fehler handelt, der einen Benutzer kennzeichnet oder nicht.

Allgemein:

  • Die Statusüberschreibungsdateien befinden sich in: /var/lib/dpkg/statoverride
  • Sie können es aktualisieren, indem Sie Folgendes ausführen: dpkg-statoverride --remove <stateoverride-filename>
  • Sie können sie sogar von Hand bearbeiten, wenn Sie wissen, was Sie tun

2

(Ich gehe davon aus, dass Sie gemeint haben aptitude purgeund apt-get removeweil die von Ihnen zitierten Befehle nicht existieren)

Versuchen Sie es dpkg --purge phpmyadmin. Es ist niedriger als die anderen Tools, daher ist es in diesem Fall möglicherweise effektiver.


Es lieferte das gleiche Ergebnis, jedoch ohne das von der Eignung geforderte ausführliche Feedback. Vielen Dank, dass Sie die Befehlsnamen zerkleinert haben.
Ken

Ich habe das gleiche Problem, aber leider habe ich PHP, Apache und mehr manuell kompiliert. Die Installation durch Hinzufügen des php5-mcrypt-Moduls (das alles enthält, was ich als Abhängigkeit erwähnt habe) würde zu einem ziemlich chaotischen Problem führen und unerwünschte Vervielfältigung. Gibt es keinen anderen Weg?
Ken

0

Möglicherweise möchten Sie 'apt-get -f install' ausführen, um Folgendes zu korrigieren:

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).

Ich hatte das obige Problem mit dem Befehl "sudo dpkg --purge postgresql-9.1" behoben

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.