GNU/Linux >> Linux Esercitazione >  >> Linux

Come installare veramente un file tar.gz su Linux - come gestire le applicazioni installate manualmente (o autonome)?

Perché molte app non sono disponibili nei repository dei pacchetti?

Potrebbero esserci molte ragioni:

  • Nessuno si è preso la briga di impacchettare l'app.
  • Nessuno è autorizzato a impacchettare l'app (come Oracle che insiste per essere l'unico a distribuire Java).
  • Il pacchetto è pubblicato con una licenza che contraddice i valori delle distribuzioni.
  • ...

Non c'è un solo motivo. Se desideri vedere la tua app preferita nel gestore pacchetti della tua distribuzione, dovresti trattare ogni caso separatamente. Prova a metterti in contatto con gli sviluppatori (su un canale IRC o una mailing list per esempio) e chiedi come potresti aiutare a impacchettare.

Come installare un tarball?

Un tarball (pacchetto .tar.gz) può contenere qualsiasi cosa. Fino a quando non lo apri effettivamente, non hai modo di presumere come installarlo. Ancora una volta, ogni pacchetto dovrebbe essere affrontato in modo diverso.

Cerca la documentazione! Qualsiasi pacchetto (semi) decente fornirà istruzioni su come installare l'applicazione. Il tuo primo riflesso dovrebbe sempre essere quello di cercare un file di testo chiamato README, INSTALL o qualcosa del genere. Anche controllare il sito web dell'editore potrebbe essere d'aiuto.

Poiché ogni pacchetto è diverso, non esiste un modo universale per elaborare ogni tarball del mondo. È come chiedere una ricetta che funziona con tutti gli ingredienti del mondo. Non accade.

Una buona conoscenza del tuo sistema, della tua distribuzione e del tuo ambiente desktop ti aiuterà, quindi, se questo è rassicurante, le cose sembreranno sempre più prevedibili man mano che trascorri del tempo nel mondo Linux.

Un caso speciale:Autotools

Man mano che i progetti crescono, devono fornire modi semplici per passare dal codice sorgente al binario all'installazione completa sul sistema. Questo è il motivo per cui vengono forniti con un sistema di compilazione incorporato, una raccolta di script per fare il necessario.

Nel mondo Linux/Open Source/Free Software, un sistema di compilazione ha ottenuto un'adozione più ampia:GNU Autotools. Se hai mai a che fare con un pacchetto sorgente (non aperto), c'è una solida possibilità che utilizzerai Autotools.

Nel caso più semplice, ecco come installare un'app fornita con autotools:

  • ./configure :Uno script che genererà i Makefile corrispondenti al tuo sistema (controlla spesso anche la disponibilità delle dipendenze).
  • make :Compilazione del codice sorgente in base ai Makefile generati in precedenza.
  • make install :copia i file binari nelle posizioni appropriate, crea collegamenti simbolici e qualsiasi altro passaggio definito dallo sviluppatore.

Note

  • configure gli script di solito hanno molte opzioni, come quale compilatore usare o come definire la directory di destinazione. Se hai bisogno di flessibilità, vale la pena dare un'occhiata a ./configure --help .
  • Anche se sei sicuro che sia Autotools e lo conosci molto bene, sempre inizia leggendo i documenti (README, INSTALL, ...)

Risposta all'aggiornamento nella domanda

Quello che stai chiedendo non ha una risposta definitiva. Tutti qui potrebbero avere un'opinione su ciò che costituisce una "buona pratica", ma alla fine, solo tu puoi trovare ciò che funziona per te . Se ci fosse una risposta facile, non faresti la domanda. La tua distribuzione avrebbe risposto per te.

Detto questo, ecco alcune osservazioni personali.

  • Sul mio sistema, riservo /usr/local/bin per i pacchetti installati dal mio gestore di pacchetti. Tutto ciò che compilo/installo a mano va in /opt . Questo è un dettaglio ma aiuta a evitare grossi grattacapi quando si ha a che fare con diverse versioni dello stesso programma.

  • xxx.desktop e i problemi della GUI in generale sono specifici dell'ambiente desktop che stai utilizzando. Se funziona per il tuo sistema, bene. Ma non può essere generalizzato a tutti gli ambienti disponibili su Unix.

  • /usr/local/bin ha il vantaggio di essere già nel tuo PERCORSO. Se vuoi usare un'altra directory (come /opt come suggerisco), assicurati di includerlo nel tuo PERCORSO. Se non sai come farlo, apri un terminale ed esegui quanto segue in un terminale (non è il modo più carino per farlo, ma senza sapere nulla del tuo sistema, non posso suggerire nient'altro):echo 'export PATH=$PATH:/opt' >> ~/.bashrc


Penso che tu debba chiarire con te stesso con cosa vuoi "registrarlo" con .

Per spiegare - e non sto cercando di essere intelligente - "linux" è, ovviamente, il kernel, e il kernel non conosce né ha alcun interesse per nessuno dei software dello spazio utente sul tuo sistema oltre a init. Quindi di cosa stiamo parlando qui?

Hai menzionato diverse distribuzioni. A volte creo software dal sorgente anche se è disponibile nel repository perché voglio impostare alcune opzioni di configurazione che non sono impostate nel binario della distribuzione. L'unico problema che ho con questo è che se il pacchetto è un prerequisito per qualcos'altro, devo effettivamente registrarlo con il sistema di pacchetti per evitare di installare accidentalmente il pacchetto distro sopra quello che ho creato. Sui sistemi basati su fedora/rpm, questo viene fatto con rpm -i --justdb <package> . Non lo faccio su sistemi basati su debian/apt; invece forzo semplicemente le installazioni secondo necessità, il che forse è pigro:sembra esserci un modo migliore per farlo, creando un pacchetto fittizio che finge di soddisfare qualsiasi prerequisito. Questo è un po' sulla falsariga del suggerimento di m0nhawk di creare effettivamente un pacchetto dal sorgente .tar.gz -- tranne che un po' più semplice (sarò onesto e dirò che non mi piace affatto il suggerimento di m0nhawk).

Sembra che tu abbia altri problemi oltre a quello con il sistema di packaging. Non mi è chiaro cosa siano, anche se menzioni l'ambiente desktop (ad esempio, Gnome). Questi sono eterogenei, quindi semplicemente non c'è una risposta alla domanda "come posso farlo su Linux" - non è nemmeno una domanda su "come posso farlo su Ubuntu" o "come posso farlo su gentoo" -- è una questione di "come posso farlo per il desktop gnome" o "come farlo sul desktop XFCE", ecc. vorrei credere che ogni DE fornisca un mezzo semplice per farlo (ma non sarà esattamente lo stesso, perché sono diversi). È possibile che ci sia anche il problema di avere qualcosa che fornisca un'impostazione predefinita per la gestione dei file:penso che la domanda sia "come registro un comando con il mio browser di file" (e anche i browser di file su Linux sono una raccolta eterogenea).

Poi ci sono i servizi, che sono gestiti dal sistema init (per esempio, systemd o upstart). Quindi questa domanda è in realtà una serie di domande correlate relative a, potenzialmente:

  • il sistema di pacchetti, ad esempio apt o yum
  • il sistema init, ad esempio, systemd o upstart
  • l'ambiente desktop, ad esempio, kde o unity
  • il browser di file, ad esempio, nautilus o konqueror
  • ??????

Parte del motivo per cui non può esistere una semplice soluzione unificata (sebbene lo standard XDG può fornire alcune parti di tale) è che "linux" non è un semplice sistema operativo unificato e immagino che la stragrande maggioranza dei suoi utenti lo preferisca in questo modo. Spesso non uso affatto un DE e non uso mai il browser di file con cui vengono forniti, ecc.

Ancora una volta, sto davvero cercando di essere d'aiuto con questo e non solo con il pontificato:se ci sono problemi che vuoi risolvere qui, dovrai considerare più precisamente quali sono questi problemi e quale software è effettivamente coinvolto in essi (oltre a "linux ") se vuoi risolverli.


Penso che la ragione fondamentale del tuo problema generale sia che un sistema Linux da solo non contiene un "registro" in quanto tale. Un file eseguibile è tutto ciò di cui hai veramente bisogno per far funzionare qualcosa. Se non si desidera specificare il percorso completo dell'eseguibile, la maggior parte delle shell li cercherà nelle directory elencate nella variabile $PATH degli ambienti. Può diventare un po' più complesso con le librerie collegate e così via, ma normalmente non è necessario approfondire.

Diverse distribuzioni di Linux si sono standardizzate su vari layout di filesystem e sistemi di gestione dei pacchetti, qui sta il problema. I Redhat usano rpm, Debian/Ubuntu usano i pacchetti deb. Anche Arch è andato per la sua strada. Dal punto di vista dei progetti software, a meno che tu non voglia essere incluso in una distribuzione, la tua base di utenti è interamente in una distribuzione o un prodotto commerciale che punta alla facilità di installazione per tutti, sono probabilmente gli unici punti che inizi a cercare di costruire vari pacchetti.

In realtà, un sorgente tar.gz che compila con gcc è probabilmente la migliore definizione di un comune "pacchetto Linux". Un kernel Linux con alcune utilità GNU e GCC quasi il denominatore comune tra tutte le diverse versioni di sistemi operativi basati su Linux che puoi ottenere.

Non arriverei a dire che "così poche" cose sono disponibili come pacchetti perché qualcosa di specifico che stai cercando non lo è. (o forse il distributore ha scelto di non preoccuparsi di tutto questo clamore sui pacchetti? Come Chrome e il suo processo di aggiornamento). Ci sono così tanti pacchetti in giro per così tanti diversi sistemi di pacchetti per così tante architetture per così tanto software libero non è divertente.

Se hai compilato qualcosa che non è fornito come pacchetto per la tua distribuzione di Linux, o supporta l'opzione di compilazione come pacchetto, il modo migliore per "registrarlo" come pacchetto reale è creare un pacchetto per esso, definendo dove tutti i file dovrebbero essere basati sul sistema di pacchetti scelto e installarlo in questo modo. Sii un'anima e contribuisci con il tuo lavoro di imballaggio al progetto in modo che altri possano trarne vantaggio.

Ci sono varie guide sul web sulla creazione di pacchetti. Debian è uno di loro.

Se tutto quello che vuoi fare è eseguire un pacchetto compilato, forse aggiungi il percorso binario al tuo $PATH ?

Se stai facendo qualcos'altro, che cos'è?


Linux
  1. Come gestire le capacità dei file Linux

  2. Come comprimere/decomprimere in Linux

  3. Come estrarre o decomprimere il file tar.xz in Linux

  4. Come installare un file .dsc su Linux

  5. Come installo 'convert' su un sistema Linux?

Come gestire il file system Linux su Ubuntu Server

Come installare e utilizzare Git nel sistema Linux

Come controllare/riparare il file system Linux all'avvio

Come installare lo strumento di monitoraggio del sistema Gtop in Linux

Come riparare gli errori del file system in Linux Mint

Come installare il server di condivisione file Samba su un sistema Linux