Ho installato un programma ottenendo il suo codice sorgente, quindi eseguendo 'sudo make install'; come fare a sapere "apt-get"?

44

Ho installato il programma (chiamalo, ad esempio, progA ) costruendolo dal codice sorgente e infine chiamando sudo make install e sudo ldconfig .

Tuttavia, sembra che apt-get non abbia ricevuto il memo, perché quando si installa progB , che dipende da progA , apt-get consiglia anche di installare progA . Perché è questo e cosa potrei fare?

    
posta Braiam 03.12.2015 - 07:41

3 risposte

54

TL; DR checkinstall è il tuo amico ;)

sudo apt-get install checkinstall

Dopo un'installazione con sudo make install il tuo gestore pacchetti non sa assolutamente nulla di questa installazione. Ma sa tutto di un pacchetto con lo stesso nome nei repository di Ubuntu o in un PPA.

Utilizza sudo checkinstall anziché sudo make install e utilizza una versione superiore come versione nel repository per essere sicuro che il tuo gestore pacchetti accetti questa versione come dipendenza corretta per ProgB .

Ulteriori informazioni:

checkinstall è davvero nifty, poiché segue quello che farebbe il comando make install , per capire come costruire un pacchetto.

Questo significa che se installi un programma usando make install , ma poi vuoi pentirti per i tuoi peccati, tutto ciò che devi fare è sudo checkinstall -D make install , e quel comando:

  1. segui make install per capire che cosa fa

  2. copia-cat make install , tranne nel formato del pacchetto * .deb

  3. installa dal pacchetto (esattamente come make install avrebbe, dato il punto 1)) eccetto anche lasciare a apt-get sapere su di esso, e quindi sovrascrivere tutti i file esattamente dove make install li avrebbe messi come a condizione che tu scelga SÌ per includere anche i file messi da make install nella directory home del pacchetto - un paio di opzioni durante il processo checkinstall ti permetteranno di scegliere (ovviamente, però, la scelta è così da poter esercitarlo caso per caso)

Bonus: puoi anche rimuovere un pacchetto (chiamalo di nuovo progA ) installato usando make install che i odi non hanno il supporto di make uninstall seguendo il processo checkinstall delineato finora, e quindi facendo semplicemente:

dpkg -r progA
    
risposta data A.B. 03.12.2015 - 08:30
13

Tre opzioni:

  1. crea un pacchetto falso per progA : Come fingere una versione del pacchetto installata? (c'è un ampio esempio per TeXlive) .

  2. crea un pacchetto per progA , più facile se ha un'opzione checkinstall : Come ingannare le dipendenze di apt?

  3. Costruisci anche progB dai sorgenti.

risposta data Rmano 03.12.2015 - 07:51
1

Ti consigliamo di utilizzare uupdate da devscripts e creare il pacchetto come prima era stato creato in origine.

Installa pacchetti richiesti

$ sudo apt-get install build-essential devscripts

Scarica il vecchio pacchetto dal repository ufficiale (userà MediaWiki come esempio) e il nuovo tar-ball da upstream.

$ mkdir ~/Downloads/mediawiki
$ cd ~/Downloads/mediawiki
$ apt-get source mediawiki
$ wget https://releases.wikimedia.org/mediawiki/1.26/mediawiki-1.26.0.tar.gz

Esegui uupdate per creare una nuova cartella sorgente dal tar-ball upstream e il vecchio debian/control

$ cd mediawiki-1.19.14+dfsg   # depends on your Ubuntu version
$ uupdate ../mediawiki-1.26.0.tar.gz 1.26.0
$ cd ../mediawiki-1.26.0

Ora dovresti controllare se è necessario apportare modifiche ai file debian/control etc. Se hai finito puoi creare il pacchetto deb e installarlo

$ dpkg-buildpackage -us -uc
$ cd ..
$ sudo dpkg -i *.deb
    
risposta data Germar 04.12.2015 - 02:54

Leggi altre domande sui tag