Rimozione di pacchetti rotti


9

Di recente, in preda alla frustrazione per aver ottenuto l'installazione di phpmyadmin, ho deciso di ricominciare da capo.

Sfortunatamente, durante la fase di disinstallazione, mi è stata richiesta la password di root per mysql che al momento non avevo a portata di mano. Basti dire che mi ha informato che ci sarebbero stati componenti residui poiché non poteva pulire correttamente i suoi connettori del database.

Quando sono arrivato a casa, ho tentato di rimuovere il pacchetto attraverso il aptitude purgequale risulta non più potente di quello aptitude removein cui ha visto phpmyadmin, ha tentato di rimuoverlo e non è riuscito poiché le directory associate al pacchetto erano già state rimosse dal mio precedente tentativo.

Ho provato a reinstallare phpmyadmin, ma aptitude ha semplicemente affermato che non era disponibile alcun aggiornamento, e senza fare nulla, se ci fosse stato un aggiornamento, probabilmente avrei riscontrato gli stessi problemi a prescindere.

A questo proposito, ho proceduto a ripulire mysql eliminando il database utilizzato e pulendolo dalle tabelle utente. Tuttavia non ho idea di cos'altro sia rimasto dal pacchetto, o anche di come pulire i ganci in modo appropriato.

Il risultato di 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

Seguendo il consiglio di Gile, ho provato a reinstallare la dipendenza 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#

Sembra che phpmyadmin abbia ripulito nettamente 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#

Tentativo di dpkg dagli archivi come suggerito da Giles

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#

Ho un server web in esecuzione su PHP, ma sono disposto a rischiare tempi di inattività per risolvere questo problema.


Copia e incolla gli esatti comandi che hai provato e l'intero output che ottieni. Probabilmente possiamo aiutarti, ma non senza vedere i messaggi di errore esatti.
Gilles 'SO- smetti di essere malvagio' il

Risposte:


7

phpmyadmindipende da dbconfig-common, che contiene /usr/share/dbconfig-common/dpkg/prerm.mysql. Sembra che tu sia riuscito a disinstallare dbconfig-commonsenza disinstallare phpmyadmin, cosa che non avrebbe dovuto accadere (hai provato a --forcequalcosa?).

Il mio consiglio è di provare prima aptitude reinstall dbconfig-common. Se funziona, dovresti avere un sistema in uno stato coerente dal quale puoi riprovare aptitude purge phpmyadmin.

Un'altra cosa che puoi fare è commentare la riga offensiva /var/lib/dpkg/info/phpmyadmin.prerm. È probabile che ciò ti renda in grado di disinstallare phpmyadmin. Ho il sospetto che tu abbia fatto ciò che quella linea dovrebbe fare quando hai modificato quelle tabelle mysql manualmente, ma non lo so phpmyadmino l'amministratore del database in generale, quindi sto solo indovinando.

La differenza tra removee purgeè che removerimuove solo il programma e i suoi file di dati (le cose che potresti scaricare di nuovo), mentre purgeprima fa quello che removefa poi rimuove anche i file di configurazione (le cose che potresti aver modificato localmente). Se removefallisce, lo sarà anche purge.


Di recente ho provato a suggerire di reinstallare dbconfig-common, ma senza risultati. Ho aggiornato le mie domande con i risultati di tale sforzo.
Ken,

@Ken: prova dpkg -i /var/cache/apt/archives/{dbconfig-common,php5-mcrypt,libjs-mootools}*.deb. Se non hai i detriti nella tua cache, scaricali da pacchetti.debian.org . Se ci sono messaggi di errore, pubblicali e io (o qualcun altro) potremmo aiutarti con loro.
Gilles 'SO- smetti di essere malvagio' il

Tentativo inutile. Sembra che uno sciame di locuste sia stato scatenato sul mio server Debian pulito. La domanda è stata aggiornata per riflettere l'ultimo tentativo.
Ken,

@Ken: è necessario installare anche le dipendenze di php5-mcrypt. Aptitude farebbe il lavoro per te; puoi provare, ma penso che si rifiuterà di muoversi fino a quando non porti php5myadmina un buono stato. dpkgè di livello inferiore e può funzionare anche su un database di pacchetti parzialmente rotto.
Gilles 'SO- smetti di essere malvagio' il

Nel tentativo di installare php5-mcrypt, ha richiesto prima la rimozione di phpmyadmine dbconfig-common. Non sono riuscito a trovare altre soluzioni, quindi ho pensato che sarebbe caduto in faccia quando ho accettato. Al contrario, semplicemente l'atto in cui php5-mycrypt è stato "suggerito" per l'installazione ha permesso a aptitude di pulire correttamente i ganci e rimuovere phpmyadmine dbconfig-common. Da allora li ho reinstallati insieme phpmyadmin(anche se attraverso un tar per un maggiore controllo). Sembra che l'ultima versione non richieda mysql per l'auto-organizzazione. Grazie Giles per aver rimosso le locuste dal mio server!
Ken,

3

A volte il sistema di gestione dei pacchetti è così rotto (spesso in una catena di dipendenze circolare) che l'unica combinazione di comandi che ho trovato per rimuovere i pacchetti problematici sono:

  • cd /var/lib/dpkg/info ; rm <packagename.*>
  • dpkg --purge --force-remove-reinstreq <packagename>
  • O dpkg --remove --force-remove-reinstreq <packagename>
  • Quindi apt-get install <packagename>reinstallare il pacchetto

A volte, potrebbe anche essere necessario correggere il file di sovrascrittura dello stato e la procedura sopra descritta può generare errori al riguardo. Come risolvere i file di sovrascrittura dello stato dipende dal fatto che si tratti di un errore che contrassegna un utente o meno.

Generalmente:

  • i file di override dello stato sono in: /var/lib/dpkg/statoverride
  • Puoi aggiornarlo eseguendo: dpkg-statoverride --remove <stateoverride-filename>
  • Puoi anche modificarli a mano se sai cosa stai facendo

2

(Presumo che tu intendessi aptitude purgee apt-get remove, poiché i comandi che hai citato non esistono)

Prova dpkg --purge phpmyadmin. È di livello inferiore rispetto agli altri strumenti, quindi potrebbe essere più efficace in questo caso.


Ha fornito lo stesso risultato ma senza il feedback dettagliato richiesto da aptitude. Grazie per aver catturato il mio tritamento dei nomi dei comandi.
Ken,

Ho quello che sembra lo stesso problema, ma sfortunatamente ho compilato manualmente PHP, Apache e altro ancora installandoli aggiungendo il modulo php5-mcrypt (che ha tutto ciò che ho citato come dipendenza) si tradurrebbe in un disordine e duplicazione indesiderata. Non c'è altro modo?
Ken,

0

Potresti voler eseguire 'apt-get -f install' per correggere questi:

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

Stavo affrontando il problema sopra, risolto il problema con il comando "sudo dpkg --purge postgresql-9.1"

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.