Come falsificare una versione del pacchetto installata?


23

Essendo un early adopter e usando build giornaliere 11.04 a volte incontro una situazione in cui alcuni pacchetti richiedono versioni precedenti di altri pacchetti rispetto a quelli che ho installato. Di solito le versioni più recenti (ma rifiutate) dei pacchetti necessari forniscono tutte le funzionalità delle loro versioni precedenti.

Se uso dpkg -i --force-depends-versionper installare pacchetti dipendenti tutto funziona bene, non ho mai visto un problema.

Invece di scaricare e installare manualmente ogni pacchetto, posso solo far finta che il sistema abbia una versione del pacchetto specifica installata quando ce n'è una nuova? O esiste un --force-depends-versionequivalente chiave per apt-get?

Risposte:


16

È possibile utilizzare il pacchetto equivs Installa equivs per creare un pacchetto fittizio per simulare l'installazione di un determinato pacchetto. Alcune istruzioni qui .


Mentre questo è abbastanza. Ma il collegamento potrebbe interrompersi prima o poi. Meglio avere almeno ripreso le istruzioni nella risposta. La mia risposta può essere d'aiuto qui askubuntu.com/a/1181415/26246 . Quindi possiamo fare riferimento a questa domanda che ha il voto più alto riguardo agli equivs.
user.dz,

23

Nonostante una risposta sia già stata accettata, sottolineando il meglio accettato trasmette il processo:

  1. Esiste un pacchetto Debian chiamato in equivsgrado di creare pacchetti fittizi. Installalo eseguendosudo apt-get install -y equivs

  2. Una volta installato, si genera un file di "controllo" modello utilizzando il seguente comando: equivs-control postfix(sostituirlo postfixcon il nome del pacchetto). Nel mio caso, potrei usare un nome di pacchetto alternativo, ad esempio postfix-customo altro, ma fare in modo che il mio pacchetto personalizzato soddisfi o Providesla dipendenza di installazione di postfix(sostituendo di nuovo postfixper qualsiasi pacchetto desiderato.

  3. Una volta generato il file di controllo del modello, in genere rimuoverò molte delle dichiarazioni commentate (istruzioni che iniziano con #). Una cosa che mi piace tenere in particolare è l' Provides:affermazione in cui posso dire che il mio pacchetto fornisce la capacità offerta dall'altro pacchetto che sto cercando di falsificare, ad esempio Provides: postfixdice al meccanismo di risoluzione delle dipendenze Debian / Ubuntu che il mio pacchetto - di qualunque nome - fornisce le stesse funzionalità del pacchetto target, di nuovo postfixo comunque. Questo mi permette di nominare il mio pacchetto indipendentemente dal pacchetto di destinazione per evitare confusione. Erlang Factory lo fa con le sue cose, ad esempio esl-erlangfornisce erlang.

  4. Infine, una volta creato il file di controllo del modello, si utilizza equivs-buildper generare il pacchetto falso, ad es equivs-build /path/to/generated/control/file.

  5. Ci vogliono alcuni secondi per compilare il pacchetto e quindi è possibile eseguire sudo dpkg -i my_package_name*.deb

Per utenti esperti, se il file di controllo del modello ha una Requires:riga di dipendenza, è possibile che si desideri utilizzare uno strumento come gdebiinstallare il pacchetto e i vari pacchetti che dichiara come dipendenze.

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.