Come si fa a falsificare una versione del pacchetto installata?

Essendo uno dei primi ad adottare e utilizzando le build quotidiane 11.04, a volte incontro una situazione in cui alcuni pacchetti richiedono versioni precedenti di pacchetti diversi da quelli che ho installato. Solitamente le versioni più recenti (ma rifiutate) dei pacchetti necessari forniscono tutte le funzionalità delle loro versioni precedenti.

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

Invece di scaricare e installare manualmente ogni pacchetto, posso semplicemente fare in modo che il sistema faccia finta che ci sia una versione del pacchetto specifica installata quando c’è una nuova? O esiste un equivalente chiave della --force-depends-version apt-get per apt-get ?

Puoi usare gli equivs Installa equivs pacchetto per creare un pacchetto fittizio per falsificare un determinato pacchetto installato. Alcune istruzioni qui .

Nonostante una risposta sia già stata accettata, l’integrazione del meglio accettato trasmette il processo:

C’è un pacchetto Debian chiamato equivs che è in grado di creare pacchetti fittizi. Installalo eseguendo sudo apt-get install -y equivs

Una volta installato, si genera un file di “controllo” del modello usando il seguente comando: equivs-control postfix (sostituire postfix con il nome del pacchetto). Nel mio caso, potrei usare un nome di pacchetto alternativo, ad esempio postfix-custom o qualsiasi altra cosa ma avere il mio pacchetto personalizzato soddisfano o Provides la dipendenza di installazione di postfix (sostituendo nuovamente postfix per qualunque pacchetto tu voglia.

Una volta generato il file di controllo del modello, in genere rimuoverò molte delle dichiarazioni commentate (istruzioni che iniziano con # ). Uno che mi piace mantenere in modo specifico è il Provides: dichiarazione in cui posso dire che il mio pacchetto fornisce la capacità offerta dall’altro pacchetto che sto cercando di simulare, ad esempio Provides: postfix dice al meccanismo di risoluzione delle dipendenze Debian / Ubuntu che il mio pacchetto -Di qualunque nome-fornisce le stesse funzionalità del pacchetto di destinazione, di nuovo postfix o altro. Questo mi permette di nominare il mio pacchetto indipendentemente dal pacchetto di destinazione per evitare confusione. Erlang Factory fa questo con le loro cose, per esempio esl-erlang fornisce erlang .

Infine, una volta creato il file di controllo modello, si utilizza equivs-build per generare il pacchetto falso, ad esempio equivs-build /path/to/generated/control/file . Occorrono pochi secondi per creare il pacchetto e quindi è ansible eseguire sudo dpkg -i my_package_name*.deb

Per utenti esperti, se il file di controllo del modello ha una riga delle dipendenze Requires: gdebi è ansible utilizzare uno strumento come gdebi per installare il pacchetto e i vari pacchetti che dichiara come dipendenze.