Come si fa a falsificare una versione del pacchetto installata?

20

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 altri pacchetti rispetto a quelli che ho installato. Solitamente le versioni più recenti (ma rifiutate) dei pacchetti necessari forniscono tutte le funzionalità delle loro versioni precedenti.

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

Invece di scaricare e installare manualmente ogni pacchetto, posso semplicemente fare in modo che il sistema finga di avere una versione del pacchetto specifica installata quando c'è una nuova? Oppure esiste un equivalente chiave --force-depends-version per apt-get ?

    
posta Ivan 20.12.2010 - 02:44

2 risposte

15

Puoi utilizzare equivs pacchetto per creare un pacchetto fittizio per simulare l'installazione di un determinato pacchetto. Alcune istruzioni qui .

    
risposta data frabjous 20.12.2010 - 02:49
17

Nonostante una risposta sia già stata accettata, l'integrazione del documento accettato meglio 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 (sostituisci postfix con il nome del pacchetto). Nel mio caso, potrei utilizzare un nome di pacchetto alternativo, ad es. postfix-custom o qualsiasi altra cosa, ma il mio pacchetto personalizzato soddisfa o Provides la dipendenza di installazione di postfix (di nuovo sostituendo postfix per il pacchetto che desideri.

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 è la dichiarazione Provides: in cui posso dire che il mio pacchetto offre la capacità offerta dall'altro pacchetto che sto cercando di simulare, ad es. Provides: postfix dice al meccanismo di risoluzione delle dipendenze Debian / Ubuntu che il mio pacchetto, indipendentemente dal nome, fornisce le stesse funzionalità del pacchetto di destinazione, ancora 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, ad es. esl-erlang fornisce erlang .

Infine, una volta creato il file di controllo modello, si utilizza equivs-build per generare il pacchetto falso, ad es. %codice%. Occorrono pochi secondi per creare il pacchetto e quindi è possibile eseguire equivs-build /path/to/generated/control/file

Per utenti esperti, se il tuo file di controllo modello ha una linea di dipendenza sudo dpkg -i my_package_name*.deb , potresti voler usare uno strumento come Requires: per installare il tuo pacchetto e i vari pacchetti che dichiara come dipendenze.

    
risposta data Jonathan Oliver 03.08.2015 - 20:41

Leggi altre domande sui tag