PDA

View Full Version : Problemi con dpkg / apt-get


pizeta
04-09-2005, 03:16
kubuntu 5.04, aveva il perl 5.8.4

ho installato l'ultima stabile dai sorgenti (5.8.7) ma non avevo prima disintallato quella vecchia (altrimenti kynaptic voleva cancellare praticamente tutti i programmi che ho installato)

poi non so cos'è andato storto, devo aver cancellato qualche file del vecchio perl (di sicuro /usr/bin/perl poi gli altri chi si ricorda)

morale della favola non riesco ad installare con apt-get nessun programma che dipenda da perl pur avendo (sempre in kynaptic) le voci
perl-base (5.8.4) non posso toglierla perchè mi cancella tutti i programmi
perl-modules (5.8.4)
perl (5.8.7) l'ho installato con make checkinstall

mi dareste una dritta per prendere in giro dpkg o chi per lui e risolvere sta bega?
grazie :)

dierre
04-09-2005, 10:00
con apt-get remove pacchetto ti toglie tutto?

Al Azif
04-09-2005, 12:51
poi non so cos'è andato storto, devo aver cancellato qualche file del vecchio perl (di sicuro /usr/bin/perl poi gli altri chi si ricorda)


Stai dicendo che hai cancellato a mano il file di esecuzione di perl?

pizeta
04-09-2005, 14:42
scusate ieri notte non ero abbastanza lucido da fornire tutti i dettagli, in dettaglio quello che è successo è:

dovendo installare un programma che richiedeva una versione aggiornata del perl ho scaricato compilato e installato i sorgenti del 5.8.7 visto che non era disponibile il .deb, purtroppo avendo usato le opzioni -De (quelle per prendere tutti i parametri di default senza farmi domande) il nuovo bin l'ha installato in /usr/local/bin lasciando inalterato il vecchio (5.8.4) in /usr/bin
inoltre avevo anche due cartelle separate di librerie
/usr/local/lib/perl con le librerie del perl 5.8.4
/usr/local/lib/perl5 con quelle del 5.8.7

poi però il mio programma non ne voleva sapere di installarsi perchè usava il vecchio eseguibile perl, di conseguenza anche le vecchie librerie che non andavano bene,
così ho rinominato /usr/bin/perl e l'ho sostituito con un link simbolico a /usr/local/bin/perl

fatto questo sono riuscito a portare a termine l'installazione e mi funzionano tutti i programmi che usano perl

tranne per apt-get, se infatti provo ad installare il dpkg-dev che dipende da perl mi risponde:

Generazione dell'albero delle dipendenze in corso... Fatto
Alcuni pacchetti non possono essere installati. Questo può voler
dire che è stata richiesta una situazione impossibile oppure, se
si sta usando la distribuzione "unstable", che alcuni pacchetti
richiesti non sono ancora stati creati o rimossi da incoming.

Poichè è stata richiesta solo una singola operazione è molto facile che
il pacchetto semplicemente non sia installabile, si consiglia
di inviare un "bug report" per tale pacchetto.
Le seguenti informazioni possono aiutare a risolvere la situazione:

I seguenti pacchetti hanno dipendenze non soddisfatte:
dpkg-dev: Dipende: perl5
E: Pacchetto non integro


nonostante mi dica pacchetto non integro se faccio un
apt-get -f install (fix dei pacchetti corrotti)
mi risponde che tutti quelli installati sono a posto

se poi provo a rimuovere il vecchio pacchetto del perl (5.8.4) mi avverte che per portare a termine l'operazione deve cancellare tutti i programmi che dipendono da quel pacchetto, e che per mia sfortuna sono 856

l'idea che avevo era trovare la lista dei pacchetti installati vedere se esiste un modo per far risultare il perl nuovo che ho installato dai sorgenti come il vecchio e lasciare quindi soddisfatte le dipendenze, ma non so dove cercare

pizeta
04-09-2005, 18:29
ho fatto un piccolo passo in avanti ma ho bisogno di nuovo di un aiuto,
ho trovato dove dpkg tiene la lista dei pacchetti installati (var/lib/dpkg) e smanettando un pò ho trovato la soluzione, ma non riesco a metterla in pratica:

con checkinstall all'epoca ho creato il deb del perl 5.8.7, il pacchetto del perl 5.8.4 si chiama perl-base, ora sono moderatamente convinto che se modifico il file control del mio nuovo deb aggiungendo la voce
Replaces: perl-base
provando a reinstallare il nuovo deb dovrebbe riconoscerlo come un aggiornamento del vecchio perl

questo in teoria

in pratica riesco ad estrarre il control dal mio deb ma non so come rimettercelo,
ho provato quindi ad estrarre tutto il deb ma mi dà questo errore:

tar: ./usr/local/share/man/man3/Net\:\:libnetFAQ.3: Impossibile open: Invalid argument
tar: ./usr/local/share/man/man3/Encode\:\:JP\:\:JIS7.3: Impossibile open: Invalid argument
tar: ./usr/local/share/man/man3/XS\:\:Typemap.3: Impossibile open: Invalid argument
tar: ./usr/local/share/man/man3/IO\:\:Select.3: Impossibile open: Invalid argument
tar: ./usr/local/share/man/man3/Text\:\:Tabs.3: Impossibile open: Invalid argument
tar: ./usr/local/share/man/man3/ExtUtils\:\:Liblist.3: Impossibile open: Invalid argument
tar: ./usr/local/share/man/man3/Search\:\:Dict.3: Impossibile open: Invalid argument
tar: ./usr/local/share/man/man3/File\:\:DosGlob.3: Impossibile open: Invalid argument
tar: ./usr/local/share/man/man3/File\:\:Copy.3: Impossibile open: Invalid argument
tar: ./usr/local/share/man/man3/MIME\:\:QuotedPrint.3: Impossibile open: Invalid argument
tar: ./usr/local/share/man/man3/Term\:\:Complete.3: Impossibile open: Invalid argument
tar: ./usr/local/share/man/man3/DBM_Filter\:\:int32.3: Impossibile open: Invalid argument
tar: ./usr/local/share/man/man3/Time\:\:gmtime.3: Impossibile open: Invalid argument
tar: ./usr/local/share/man/man3/IPC\:\:Semaphore.3: Impossibile open: Invalid argument
tar: ./usr/local/share/man/man3/Pod\:\:Plainer.3: Impossibile open: Invalid argument
tar: ./usr/local/share/man/man3/File\:\:Find.3: Impossibile open: Invalid argument
tar: ./usr/local/share/man/man3/Text\:\:Wrap.3: Impossibile open: Invalid argument

[TAGLIO VISTO CHE DI ERRORI DEL GENERE CE NE SONO MOLTI]

tar: ./usr/local/share/man/man3/Memoize\:\:SDBM_File.3: Impossibile open: Invalid argument
tar: ./usr/local/share/man/man3/Thread\:\:Semaphore.3: Impossibile open: Invalid argument
tar: ./usr/local/share/man/man3/B\:\:Deparse.3: Impossibile open: Invalid argument
tar: Uscita per errore ritardata dall'errore precedente
dpkg-deb: il sottoprocesso tar ha restituito un codice di errore 2



indizi?

pizeta
04-09-2005, 19:58
lo so, io mi faccio le domande e io mi do le risposte, ma scrivere nel forum pare porti bene, mi sblocca,
purtroppo puntualmente mi riblocco

ho capito come aggiornare il perl

ho preso il deb che avevo creato l'ho scompattato con
ar -x perl.deb

ho modificato il file control dentro control.tar.gz aggiungendo la voce
Replaces: perl-base

ho ricreato il deb con
ar -r perl.db control.tar.gz

(questo se mai qualcuno dovesse averne bisogno)

installando il deb così ottenuto riesco a sostituire il perl vecchio,
adesso infatti risulta che la versione del perl è la 5.8.7 e non più la 5.8.4,

ma non tutti i problemi sono stati risolti:

pizeta@ubuntu:~$ sudo apt-get install dpkg-dev
Lettura della lista dei pacchetti in corso... Fatto
Generazione dell'albero delle dipendenze in corso... Fatto
Alcuni pacchetti non possono essere installati. Questo può voler
dire che è stata richiesta una situazione impossibile oppure, se
si sta usando la distribuzione "unstable", che alcuni pacchetti
richiesti non sono ancora stati creati o rimossi da incoming.

Poichè è stata richiesta solo una singola operazione è molto facile che
il pacchetto semplicemente non sia installabile, si consiglia
di inviare un "bug report" per tale pacchetto.
Le seguenti informazioni possono aiutare a risolvere la situazione:

I seguenti pacchetti hanno dipendenze non soddisfatte:
dpkg-dev: Dipende: perl5
E: Pacchetto non integro


pizeta@ubuntu:~$ sudo apt-get install perl5
Lettura della lista dei pacchetti in corso... Fatto
Generazione dell'albero delle dipendenze in corso... Fatto
Nota, si sta selezionando perl al posto di perl5
perl è già alla versione più recente.
0 aggiornati, 0 installati, 0 da rimuovere e 1 non aggiornati.


perchè fa così ???