Di 'a aptitude di ignorare il pacchetto rotto


9

Ho installato un Amsynth di Lucid in Karmic usando:

dpkg --force-depends-version -i amsynth_1.2.2-1_i386.deb

Il motivo per installare la versione Lucid è perché la versione Karmic ha 3 anni e si blocca sulla mia macchina. Il pacchetto Lucid Amsynth dipende dalle versioni più recenti di libatk1 e libjack0 rispetto a quelle di Karmic, ma ho pensato che avrei corso un rischio e risulta che Amsynth funziona bene.

Tuttavia aptitude tenta di disinstallare Amsynth ogni volta che eseguo un aggiornamento. Penso di essere riuscito a metterlo in attesa, ma ora l'attitudine si interrompe. Come posso dire a aptitude di ignorare il pacchetto rotto e andare avanti.


Per il momento l'ho appena disinstallato. Mi limiterò a reinstallare ogni volta che ne ho bisogno di nuovo, non ci vuole troppo tempo, fino a quando non mi dà abbastanza bug per provare a compilarlo di nuovo.

Se hai bisogno di qualcosa dalla versione più recente e ha bisogno di librerie più recenti, di solito puoi semplicemente trascinarle o scaricare il pacchetto sorgente e ricostruirlo sul tuo sistema. Tuttavia mi sono imbattuto in questo tentativo di utilizzare un pacchetto di terze parti e quindi sono necessari gli hack.
Jan Hudec,

Risposte:


7

Se hai installato il programma tramite un file deb e dpkg, puoi anche modificare manualmente le dipendenze del file .deb installato. Sono stato guidato a questa misura estrema una volta ...

ar x foo.deb
vim control.tar.xz  # see below
ar r foo.deb control.tar.xz
dpkg -i foo.deb

e dpkg non conosce più le dipendenze di foo. In vim devi selezionare ./control (io uso vim per leggere i file compressi - decomprimere e usare un altro editor e reimballare se vuoi) e rimuovere le dipendenze indesiderate dalla riga

Depends: foo bar

1
Stai meglio usando dpkg-debpiuttosto che ar. arè un dettaglio dell'implementazione di dpkg che potrebbe cambiare in futuro.
jmtd

Grazie, questa soluzione ha funzionato per me, ma quando eseguo apt-get upgrade, ricevo il messaggio "I seguenti pacchetti sono stati mantenuti indietro: numptyphysics: i386" (apt-get dist-upgrade non dice nulla). Questo messaggio è normale e non possiamo liberarcene?
Baptx,

7

C'è una soluzione compromessa su Ubuntuforums . La soluzione di ~ quack è migliore, ma richiede più lavoro.

Non sono riuscito a trovare nulla su Google al riguardo, salvo la compilazione del tuo "pacchetto fittizio" (impossibile senza disinstallare i pacchetti rotti. A meno che tu non sia abbastanza fortunato da avere già gli strumenti), ma cercare il mio disco rigido mi ha dato la risposta alla fine!

Per chiunque desideri sapere, ecco come "decomprimere" un pacchetto in synaptic / aptitude / apt-get, senza disinstallarlo.

Prima di tutto, prendi nota del pacchetto che hai installato e dei pacchetti da cui dipende che gli conferiscono uno stato non funzionante. Supponiamo di aver forzato un'installazione di apple, che dipende dal pacchetto obsoleto che non si trova nel repository:

In un codice di tipo terminale:

sudo gedit /var/lib/dpkg/status

cerca nel file le mele finché non trovi qualcosa del tipo:

Codice:

Package: apples
Status: install ok installed
Priority: optional
Section: libs
Installed-Size: 316
Maintainer:
Architecture: i386
Source: applesauce
Version: 1.0.10-1
Depends: packageA, packageB, obsolete
Description: Apples on your desktop!

Rimuovi obsoleto dalla riga Dipende: salva il file e il gioco è fatto. Spero che questo aiuti alcune persone.


ick. buona scoperta, ma non sono un fan di mentire al gestore dei pacchetti (che è essenzialmente ciò che fa quell'hack). meglio non usare APT affatto che correre in giro rompendolo volenti o nolenti. questo è il motivo per cui compilare i propri pacchetti è una buona cosa, senza dipendenze interrotte e senza mentire al gestore dei pacchetti.
Quack Quixote

Non ho problemi a mentire al gestore dei pacchetti, soprattutto perché tra pochi mesi reinstallerò il sistema operativo, ma non sono riuscito a trovare il file a cui si fa riferimento nel thread.

Strano. Dovrebbe essere lì. Prova a fare "cd / var / lib / dpkg" e poi "sudo nano status".
Iain,

1
Il collegamento non funziona più. Qual è il motivo esatto per cui le risposte solo link sono disapprovate qui intorno. Se hai spiegato qui, sarebbe la risposta corretta.
Jan Hudec,

Non so se questo è permanente o no, ma sembra sicuramente una soluzione decente finora per l'installazione di pacchetti che hanno forti dipendenze da versioni non più disponibili di Java.
Krispy,

2

Nella sezione Preferenze di aptitude (Ctrl-T per accedere al menu; in Opzioni), deseleziona l'opzione nella sezione "Gestione delle dipendenze" che dice "Correggi automaticamente i pacchetti rotti prima di installare o rimuovere" . Ciò dovrebbe impedire a aptitude di tentare di riparare il pacchetto ogni volta che si cambiano altri pacchetti.

Come soluzione più permanente, dovresti prendere i pacchetti sorgente per il pacchetto Lucid Amsynth che hai installato, così come i pacchetti sorgente per libatk1 e libjack0 e creare il tuo pacchetto aggiornato. A seconda di cos'altro utilizza quelle librerie, potrebbe essere necessario aggiornare anche altri pacchetti, ma probabilmente è possibile cavarsela solo con quelli. (Questo essenzialmente sta eseguendo il backport di quei pacchetti da Lucid a Karmic - dovresti controllare il repository Karmic-backports o i PPA per vedere se qualcuno lo ha già fatto. Se i tuoi nuovi pacchetti funzionano, considera di inviarli a Karmic-backport perché altri possano usarli. )


Grazie ho provato il tuo primo suggerimento, ma non sembrava fare la differenza. Gli aggiornamenti si interrompono. Ho anche provato a compilarlo prima di provare a installare il pacchetto Lucid ma non ho avuto fortuna con esso. Potrei riprovare in futuro.
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.