Come gestire il software installato dalla fonte?


14

Di tanto in tanto, potremmo dover installare qualcosa dalla fonte per vari motivi. Mentre è abbastanza standard come installare il software dato le dipendenze appropriate, non mi è chiaro come gestire tale installazione per comodità futura.

Più specificamente:

  1. Cosa possiamo fare per garantire una disinstallazione semplice e pulita (comprese quelle dipendenze che sono installate poco prima e solo per il software installato dalla fonte)?

  2. Cosa possiamo fare per garantire un aggiornamento semplice e pulito dello stesso software, che probabilmente verrà installato nuovamente dal sorgente?

  3. Cosa possiamo fare per ridurre al minimo i potenziali conflitti se ci sono un pacchetto predefinito (installato usando apt-get) e la versione (più recente) del pacchetto (installato dal sorgente)?

Risposte:


8

L'utilizzo checkinstall make installcreerà un pacchetto temporaneo e lo installerà. Ciò significa che è registrato nel gestore pacchetti e può essere disinstallato.


7

La cosa migliore da fare sarebbe creare personalmente i pacchetti Debian delle versioni più recenti. dpkge gli aptstrumenti fanno tutte e tre le cose che menzioni e sono destinate a tale scopo. Usali invece di reinventare la ruota. Ci sono molte guide sugli imballaggi disponibili. Se il software esiste già nei repository, probabilmente è possibile ottenere il pacchetto sorgente ( apt-get src) che è possibile utilizzare per studiare e avviare il proprio pacchetto.

Questa risposta a /ubuntu//a/485230/158442 potrebbe essere utile come linea guida generale.

Mentre checkinstallè ottimo per una soluzione rapida e sporca, a lungo termine dovresti usare un imballaggio adeguato.


grazie per i suggerimenti. Quando hai detto "il software esiste già nei repository", presumo che intendi i repository ufficiali gestiti da Ubuntu. In tal caso, in molti casi questi repository non forniscono versioni più recenti, specialmente nelle versioni precedenti di Ubuntu. Quindi apt-get srcprobabilmente non può essere d'aiuto in questi casi.
skyork,

@skyork forse no. Ma puoi usare i pacchetti di versioni precedenti per studiare. Potrebbero esserci delle personalizzazioni fatte dai packager, alcuni script di manutenzione personalizzati. Non c'è motivo per cui dovresti ignorare tutto ciò e ricominciare da zero. Reinventare la ruota sembra essere un tema qui.
Muru,

4

Prima di tutto, molto dipende da come gestisci i tuoi codici sorgente. Faccio una directory come ~/sourcese inserisco ogni programma nelle sue sottodirectory, mentre altri creeranno una nuova directory per ogni programma.

Allo stesso modo alcuni come me, creano una nuova sottodirectory per ogni nuova versione e rimuovono le versioni precedenti solo quando è garantito che nella nuova versione non ci siano bug significativi che potrebbero interrompere il mio lavoro.

Non esiste un solo modo per farlo, ma in qualunque modo scegliate, scegliete un modo che sia più facile da gestire .

  1. Disinstallazione pulita

    • Suggerirei di creare una rem_dep.shsceneggiatura simile a questa.

      #! /bin/bash
      sudo apt-get remove dep1 dep2 ... depn
      

      dove dep1, dep2, depnsono le dipendenze.

  2. Aggiornamento pulito e facile

    • se si ottiene il codice sorgente da un sistema di versioning automatizzato come gito bazaaro se i collegamenti sono prevedibili, è possibile creare uno script shell che lo farà

      #1 make a backup of earlier version
      #2 get new source
      #3 configure, build/make the source
      #5 if make went correctly, remove earlier version.
      #6 make install new version, update dependencies if required.
      
    • Anche in altri casi, è possibile creare tali script con il lavoro manuale in una certa misura.

  3. Gestione dei conflitti

    • Il modo migliore è utilizzare l' --prefixopzione durante l'installazione di software e le relative dipendenze.
    • Un'altra cosa importante è mantenere aggiornato il sistema in modo da ridurre al minimo i conflitti.

NOTA: se ti ritrovi a compilare più software di quanto dovresti (impostane uno max_limitper te, come 5 o 10 o 100) è meglio lasciare Ubuntu e passare ad Arch Linux.


3

Costruisci dipendenze:

  • AFAIK dovrebbero essere registrati manualmente. È possibile creare un file come README per mantenere l'elenco delle dipendenze installate manualmente.

  • Se quel software ha già un binario integrato nei repository Ubuntu o PPA. Tenere traccia delle dipendenze durante l'installazione dovrebbe essere più semplice:

    sudo apt-get build-dep target_package
    

Disinstallazione pulita:

Conservare la cartella di origine configurata e installata. Meglio se raccogli tutte le fonti in una cartella specifica con il file delle dipendenze installate.

Aggiornamento pulito e isolamento dei file installati:

Installali nello specifico --prefix(preferibilmente --prefix=/opt/software_name-version/).

Questo risolverà molti problemi: versioni simultanee con quella del repository; aggiornamento pulito; più facile per la disinstallazione sporca nel caso in cui la fonte fosse cancellata.

Più sofisticato o il modo migliore, come risponde @muru, crea un pacchetto Debian (per i pacchetti disponibili nei repository Ubuntu / PPA)

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.