Pagina 1 di 1
[Risolto] Errore: La dipendenza non può essere soddisfatta
Inviato: giovedì 20 gennaio 2011, 10:53
da kRel
Una volta per tutte...
Per la propria distribuzione, che magari non è l'ultima della serie, (questo è tipico nelle LTS), può accadere che il repository per una o più applicazioni non venga aggiornato. Di conseguenza ci si ritrova con una versione vecchia di 4-5 release (e oltre).
A volte quando si tenta di installare direttamente pacchetti .deb per ovviare all'inconveniente, può accadere di ricevere la risposta "Errore: La dipendenza non può essere soddisfatta: xxxxxxxx-xxxxxxxx1.12.3 (>= 1.12.3-1)"
Credo di capire che il pacchetto da installare richieda una versione uguale o superiore di una determinata libreria, mentre noi disponiamo di una più vecchia o non ne disponiamo affatto.
Ma qui nascono due domande:
la prima: in genere i pacchetti .deb non contengono all'interno tutti i fine necessari?
a volte la libreria richiesta è già nel sistema e la versione è compatibile. Come mai non viene rilevata dall'installazione?
Grazie.
Re: Errore: La dipendenza non può essere soddisfatta
Inviato: giovedì 20 gennaio 2011, 11:03
da vaillant
Ciao.
kRel ha scritto:
la prima: in genere i pacchetti .deb non contengono all'interno tutti i fine necessari?
I pacchetti deb contengono i file necessari al funzionamento del programma che vai ad installare e (tra le altre cose) i nomi dei pacchetti necessari allo stesso funzionamento (c.d. dipendenze). E' chiaro che se tenti di installare il software A, che ha come dipendenza il software B versione 1.12.3 e nei repo è presente al massimo la versione 1.12.2, ti genererà errrore.
Prima di tutto, apri un terminale e digita
che ti risolve eventuali dipendenze non soddisfatte, poi riprova ad installare il pacchetto.
kRel ha scritto:
a volte la libreria richiesta è già nel sistema e la versione è compatibile. Come mai non viene rilevata dall'installazione?
Se installi da riga di comando il file deb (sudo dpkg -i ...) le dipendenze non vengono risolte, vale il comando che ti ho indicato prima...
Re: Errore: La dipendenza non può essere soddisfatta
Inviato: giovedì 20 gennaio 2011, 12:46
da kRel
vaillant ha scritto:
Prima di tutto, apri un terminale e digita
che ti risolve eventuali dipendenze non soddisfatte, poi riprova ad installare il pacchetto.
eseguo come dici sudo apt-get install -f nomepacchetto (dopo essermi spostato nella directory che lo contiene)
ed ho un errore curioso:
Codice: Seleziona tutto
sudo apt-get install -f nomepacchetto
Lettura elenco dei pacchetti... Fatto
Generazione albero delle dipendenze
Lettura informazioni sullo stato... Fatto
E: Impossibile trovare il pacchetto nomepacchetto
Ovviamente il pacchetto esiste, tant'è che se cerco di installarlo come ho sempre fatto, cliccando sul "cubetto" ottengo l'errore citato nel primo post
vaillant ha scritto:
Se installi da riga di comando il file deb (sudo dpkg -i ...) le dipendenze non vengono risolte, vale il comando che ti ho indicato prima...
Ovvio ! Tuttavia essendo ancora inesperto, mi sono sempre accontentato di installare i pacchetti, con il semplice click sul "cubetto". ed ha sempre funzionato. In questo caso manca una libreria:
Codice: Seleziona tutto
Errore: La dipendenza non può essere soddisfatta: xxxxxxxx-xxxxxxxx1.12.3 (>= 1.12.3-1)
Sbaglio io o c'è un errore nel pacchetto ?
Ciao, grazie.
Re: Errore: La dipendenza non può essere soddisfatta
Inviato: giovedì 20 gennaio 2011, 12:55
da vaillant
Che rilascio di ubuntu stai usando? Lucid 10.04? Intanto qui c'è un errore
eseguo come dici sudo apt-get install -f nomepacchetto (dopo essermi spostato nella directory che lo contiene)
ed ho un errore curioso:
Codice: Seleziona tutto
sudo apt-get install -f nomepacchetto
Lettura elenco dei pacchetti... Fatto
Generazione albero delle dipendenze
Lettura informazioni sullo stato... Fatto
E: Impossibile trovare il pacchetto nomepacchetto
io ti ho detto di digitare solo
la "-f" sta per "fix missing", non devi specificare alcun pacchetto.
In secondo luogo, giusto per nozioni teoriche, al posto di "nomepacchetto" ci va messo il suo nome reale...
Re: Errore: La dipendenza non può essere soddisfatta
Inviato: giovedì 20 gennaio 2011, 15:16
da kRel
La 10.04 aggiornata.
Avevo dato il comando sudo apt-get install -f e ho avuto come risposta:
Codice: Seleziona tutto
krel@AM1-N1:~$ sudo apt-get install -f
[sudo] password for krel:
Lettura elenco dei pacchetti... Fatto
Generazione albero delle dipendenze
Lettura informazioni sullo stato... Fatto
0 aggiornati, 0 installati, 0 da rimuovere e 11 non aggiornati.
krel@AM1-N1:~$
quindi ho provato ad installare il pacchetto.deb ma ho ricevuto ancora l'errore. Per questo motivo ho provato con la sintassi (errata):
sudo apt-get install -f nomepacchetto.deb (dove per "nomepacchetto" c'è il nome reale del pacchetto e la sua estensione .deb)
E quegli 11 non aggiornati che sono ? come si aggiornano ?
[AGGIUNTA SUCCESSIVA]
Sono andato in Ubuntu tweak > Gestore aggiornamenti ed ho visto quei famosi 11 pacchetti da installare e li ho installati.
Resta da capire perché con
sudo apt-get install -f non riuscivo ad aggiornare.
In ogni caso i due pacchetti.deb, (interdipendenti e diversi l'uno dall'altro) proprio non si vogliono installare... ho questi 2 errori (1 per pacchetto):
Codice: Seleziona tutto
Errore: Breaks existing package 'libqt4-scripttools' dependency libqtcore4 (= 4:4.6.2-0ubuntu5.1)
questo errore immagino che voglia dire: hai già una versione (più vecchia). Ma se provo a disinstallare e installare la nuova versione di libqtcore ho un errore.
Codice: Seleziona tutto
Errore: La dipendenza non può essere soddisfatta: libboost-filesystem1.42.0 (>= 1.42.0-1)
Ciao
Re: Errore: La dipendenza non può essere soddisfatta
Inviato: giovedì 20 gennaio 2011, 17:29
da vaillant
Di che pacchetti stiamo parlando, e da dove li hai presi?
Re: Errore: La dipendenza non può essere soddisfatta
Inviato: giovedì 20 gennaio 2011, 19:36
da kRel
Non mi interessa il problema nel dettaglio... ma capire in via generale il perché.
Inoltre vorrei sapere perché quegli 11 pacchetti che non si installavano con
sudo apt-get install -f mentre con Ubuntu Tweak - gestione aggiornamenti si.
Uno dei due pacchetti richiede una versione più aggiornata di libqtcore4 (io ho libqtcore4 4:4.6.2-1Oubuntu 5.1, mentre ne è richiesta una >= 4:4.7.0~beta1). Analizzando il dettaglio, la disinstallazione si porterebbe appresso un bel pò di sw, quindi a queste condizioni il discorso cade.
L'altra stranezza è quella esposta sotto, anche se a questo punto la richiesta diventa puramente accademica per il motivo appena detto sopra.
Codice: Seleziona tutto
Errore: Breaks existing package 'libqt4-scripttools' dependency libqtcore4 (= 4:4.6.2-0ubuntu5.1)
Se provo a disinstallare e installare la nuova versione di libqtcore ho un errore.
Codice: Seleziona tutto
Errore: La dipendenza non può essere soddisfatta: libboost-filesystem1.42.0 (>= 1.42.0-1)
Re: Errore: La dipendenza non può essere soddisfatta
Inviato: giovedì 20 gennaio 2011, 19:48
da Duma
kRel ha scritto:Inoltre vorrei sapere perché quegli 11 pacchetti che non si installavano con sudo apt-get install -f mentre con Ubuntu Tweak - gestione aggiornamenti si.
La sparo perché non sono sicuro: ubuntu Tweaks usa dist-upgrade come comando, mentre sudo apt-get install -f aggiorna con upgrade?
Re: Errore: La dipendenza non può essere soddisfatta
Inviato: giovedì 20 gennaio 2011, 20:23
da Mdfalcubo
Vaillant te l'ha spiegato molto bene. Il comando sudo apt-get install -f non serve a installare gli aggiornamenti, ma a risolvere eventuali problemi di dipendenze. Per verificare gli aggiornamenti il comando è sudo apt-get upgrade... Se lo facevi da terminale ottenevi lo stesso risultato che hai ottentuo con Ubuntu Tweak, cioè verificavi gli aggiornamenti e POI col comando install li installavi...
Re: Errore: La dipendenza non può essere soddisfatta
Inviato: giovedì 20 gennaio 2011, 21:13
da vaillant
kRel ha scritto:
Uno dei due pacchetti richiede una versione più aggiornata di libqtcore4 (io ho libqtcore4 4:4.6.2-1Oubuntu 5.1, mentre ne è richiesta una >= 4:4.7.0~beta1). Analizzando il dettaglio, la disinstallazione si porterebbe appresso un bel pò di sw, quindi a queste condizioni il discorso cade.
Come ho detto prima, se stai tentando di installare un software che richiede una dipendenza che Lucid non può soddisfare, hai due opzioni:
1) ti scarichi le varie dipendenze dai rilasci successivi o da debian testing (cosa parecchio sconsigliata a mio modo di vedere);
2) lasci perdere quel pacchetto o ne cerchi una versione meno recente che puoi installare su lucid;
Duma ha scritto:
La sparo perché non sono sicuro: ubuntu Tweaks usa dist-upgrade come comando, mentre sudo apt-get install -f aggiorna con upgrade?
No, cito dal manuale
-f
Fix; attempt to correct a system with broken dependencies in place.
This option, when used with install/remove, can omit any packages
to permit APT to deduce a likely solution. If packages are
specified, these have to completely correct the problem. The option
is sometimes necessary when running APT for the first time; APT
itself does not allow broken package dependencies to exist on a
system. It is possible that a system's dependency structure can be
so corrupt as to require manual intervention (which usually means
using dselect(1) or dpkg --remove to eliminate some of the
offending packages). Use of this option together with -m may
produce an error in some situations. Configuration Item:
APT::Get::Fix-Broken
l'opzione "-f" non serve ad aggiornare, ma a risolvere le dipendenze qualora queste non siano già risolte dal programma di installazione!

Re: Errore: La dipendenza non può essere soddisfatta
Inviato: giovedì 20 gennaio 2011, 21:19
da Mdfalcubo
C'è una terza opzione: cercare in rete e, se le trovi, scaricare le singole dipendenze. A me è successo un paio di volte, per fortuna le ho trovate e ho risolto il mio problema (hardware).
Re: Errore: La dipendenza non può essere soddisfatta
Inviato: giovedì 20 gennaio 2011, 21:23
da vaillant
Mdfalcubo ha scritto:
C'è una terza opzione: cercare in rete e, se le trovi, scaricare le singole dipendenze.
Intendevo questo al punto 1). A meno di compilarsi i sorgenti, quelle dipendenze vanno cercato nei repo di qualche distribuzione, appunto con pacchetti superiori a quelli presenti in lucid (che sono gli stessi di debian stable)...

Re: Errore: La dipendenza non può essere soddisfatta
Inviato: giovedì 20 gennaio 2011, 21:34
da gian72
ciao a tutti.
Scusate se mi inserisco: tempo fa dovevo installare qualcosa (ora non ricordo) che mi causava un errore di dipendenza e che, purtroppo, non era disponibile in versione precedente/compatibile col mio sistema... così dopo (lunga) ricerca e tanti esperimenti (...) mi sono imbattuto (non è farina del mio sacco... ci tengo a precisarlo

) in questo piccolo script che in sostanza permette di modificare il file control in modo da "taroccare" le dipendenze richieste.
Funzionò.
Ora... è ovvio che la cosa va usata con prudenza e, soprattutto, che 80/90 volte su 100 non risolverà il problema (...se è richiesta una certa libreria è ovvio che ci sarà un perchè...)
ma tentar non nuoce!. Io lo posto.. poi vedete voi:
Codice: Seleziona tutto
#!/bin/bash
EDITOR=gedit
if [[ -z "$1" ]]; then
echo "Syntax: $0 debfile"
exit 1
fi
DEBFILE="$1"
TMPDIR=`mktemp -d /tmp/deb.XXXXXXXXXX` || exit 1
OUTPUT=`basename "$DEBFILE" .deb`.modfied.deb
if [[ -e "$OUTPUT" ]]; then
echo "$OUTPUT exists."
rm -r "$TMPDIR"
exit 1
fi
dpkg-deb -x "$DEBFILE" "$TMPDIR"
dpkg-deb --control "$DEBFILE" "$TMPDIR"/DEBIAN
if [[ ! -e "$TMPDIR"/DEBIAN/control ]]; then
echo DEBIAN/control not found.
rm -r "$TMPDIR"
exit 1
fi
CONTROL="$TMPDIR"/DEBIAN/control
MOD=`stat -c "%y" "$CONTROL"`
$EDITOR "$CONTROL"
if [[ "$MOD" == `stat -c "%y" "$CONTROL"` ]]; then
echo Not modfied.
else
echo Building new deb...
dpkg -b "$TMPDIR" "$OUTPUT"
fi
rm -r "$TMPDIR"
'notte...
Re: Errore: La dipendenza non può essere soddisfatta
Inviato: giovedì 20 gennaio 2011, 23:55
da kRel
Mdfalcubo ha scritto:
Vaillant te l'ha spiegato molto bene. Il comando sudo apt-get install -f non serve a installare gli aggiornamenti, ma a risolvere eventuali problemi di dipendenze. Per verificare gli aggiornamenti il comando è sudo apt-get upgrade... Se lo facevi da terminale ottenevi lo stesso risultato che hai ottentuo con Ubuntu Tweak, cioè verificavi gli aggiornamenti e POI col comando install li installavi...
Mi mando a quel paese da solo . . .
Grazie Mdfalcubo, e anche a Vaillant, era evidente... quello che non conoscevo era l'effetto di apt-get install -f .
vaillant ha scritto:
Come ho detto prima, se stai tentando di installare un software che richiede una dipendenza che Lucid non può soddisfare, hai due opzioni:
1) ti scarichi le varie dipendenze dai rilasci successivi o da debian testing (cosa parecchio sconsigliata a mio modo di vedere);
2) lasci perdere quel pacchetto o ne cerchi una versione meno recente che puoi installare su lucid;
La seconda che hai detto . . . Non vale la pena incasinare un sistema che gira come un orologio ! In realtà la versione precedente ce l'ho già . . . quella successiva ha una caratteristica migliorativa che mi interessava, ma a queste condizioni non vale la pena.
Vale anche per il consiglio successivo di Mdfalcubo e di gian72. Grazie a tutti. Ciao
Metterei risolto al primo post se siete d'accordo . . .