Come faccio a sapere dove mettere le cose in Linux?


58

L'installazione di qualcosa in Windows richiede un clic di un pulsante. Ma ogni volta che provo a installare qualcosa in Linux, che non si trova in APT, divento così confuso.

Scarica una cartella zippata, e poi? Se sei fortunato c'è un README, che fa riferimento ad alcuni documenti, che potrebbero aiutarti, se sei fortunato.

Qual è il trucco magico quando si "installano" estensioni e applicazioni che non si trovano in APT?

Adoro Linux, ma questo problema mi perseguita ogni giorno.



8
Fuori tema. Ma il semplice trucco è non installare nulla al di fuori del sistema di gestione dei pacchetti.
Let_Me_Be

1
Se non proviene da APT, probabilmente non è qualcosa che puoi semplicemente installare: dovrai compilarlo e installarlo da solo. E poi inizierà a confondersi con i pacchetti basati su APT. È più semplice trovare APT / .debs per tutto ciò di cui hai bisogno, per quanto è possibile.
Rup,

2
@Rup Plus se un software non ha un pacchetto deb probabilmente non dovresti installarlo, dal momento che è qualcosa di deprecato, o bleeding edge, o incompatibile con le distribuzioni basate su apt.
Let_Me_Be

3
Una volta che hai abbastanza esperienza con la creazione / installazione di software, puoi semplicemente creare i tuoi pacchetti. Assicurati di fornire feedback al fornitore a monte!
jsbillings,

Risposte:


32

Se si tratta di un software che obbedisce al Filesystem Hierarchy Standard di quanto deve metterlo in /usr/locale le sottodirectory appropriate (come bin, lib, share, ...).

Altro software deve essere inserito nella propria directory in /opt. Quindi imposta la tua PATHvariabile per includere la bindirectory o qualunque directory che contiene gli eseguibili, oppure crea collegamenti simbolici a /usr/local/bin.


1
Buona risposta, davvero, ma non bisogna farlo tutti i giorni.
phunehehe,

1
@phunehehe - Devi farlo ogni giorno?
Rob,

3
No, mi riferivo al PO "questo problema mi perseguita ogni giorno".
phunehehe,

1
Oltre al link di Wikipedia per FHS, leggi anche questo: pathname.com/fhs/pub/fhs-2.3.html . Leggi la sezione che dice "Scopo".
Yasouser,

27

Non esiste una risposta semplice a questa domanda, ma posso darti un quadro generale di come funziona:

La maggior parte del software Linux è fornita dagli autori ("upstream") in forma di codice sorgente. Ciò consente a chiunque disponga di un compilatore per la propria particolare piattaforma e configurazione di sistema di scaricare il codice sorgente e compilarlo da soli. Sfortunatamente per te, molti programmi si basano su funzioni fornite da altri programmi e librerie software (dipendenze).

Il software Windows di solito viene fornito in forma precompilata. Ciò significa che esiste un file eseguibile generico per tutti i computer Windows e le dipendenze spesso ne derivano nel pacchetto di installazione.

Le distribuzioni Linux prendono il codice sorgente, lo precompilano per te e lo offrono anche come pacchetto. Il pacchetto non include le dipendenze, ma fa riferimento a esse e forza anche il sistema del pacchetto a installarle (il che a volte può portare a disordini che probabilmente hai già sperimentato).

Se non esiste un pacchetto precompilato, è sempre possibile scaricare il codice sorgente e compilarlo da soli. Il più delle volte funzionerà:

./configure
make
(sudo) make install (or sudo checkinstall)

La riga ./configure imposta il palcoscenico per il processo di compilazione (e sputa errori se le dipendenze non sono soddisfatte). La linea di make eseguirà il Makefile, uno script che compila tutte le parti del programma.

Tradizionalmente, si utilizza make install per installare il software. Questo di solito mette gli eseguibili in / usr / local / bin.

Dato che stai usando apt, consiglio vivamente di ottenere checkinstall. Puoi usarlo al posto di make install e genererà un pacchetto .deb per te. Ciò rende molto più semplice rimuovere il software in un secondo momento.

Si noti che esistono altri sistemi di compilazione, ad esempio cmake; e alcuni software vengono precompilati ma decompressi (nel qual caso è possibile avviarlo direttamente dalla cartella decompressa); e alcuni software arrivano come una raccolta di script che devi eseguire tu stesso. Il codice fresco da SVN a volte arriva senza script di configurazione, quindi devi prima eseguire la toolchain autoconf ... ecc, ecc ... vedi che ci sono molte eccezioni alla regola, ma con un po 'di esperienza sarai in grado di dì cosa fare con la maggior parte di quei download misteriosi. Configure-Make-Checkinstall è un buon primo avvio.

PS. Trascorri un weekend o due per imparare a programmare te stesso e le cose diventeranno molto ovvie :-)

PPS. Potresti chiederti perché gli autori di software Linux non forniscono solo pacchetti precompilati anziché il codice sorgente. Beh, a volte lo fanno. Ma diverse piattaforme e distribuzioni Linux hanno tutte i propri formati di pacchetto e regole del file system, quindi come sviluppatore dovresti fornire pacchetti per ogni possibile configurazione, il che è una seccatura. I pacchetti Ubuntu sono spesso i più facili da trovare: dovresti scoprire cos'è un PPA e come funziona!


1
"PS. Trascorri un weekend o due per imparare a programmare te stesso e le cose diventeranno molto ovvie :-)". Cattivo consiglio in una risposta altrimenti eccellente. Chiedere alle persone di programmare per capire Linux è come i passeggeri delle compagnie aeree per riparare gli aerei.
apoorv020,

invece di programmare basta cambiarlo per compilare il proprio linux, come LFS (linux da zero) linuxfromscratch.org
jsolarski

@apoorv, punto preso. :)
sebastian_k

4

Dovresti dare un'occhiata a checkinstall . Invece di

./configure
make
sudo make install

tu fai

./configure
make
sudo make checkinstall

e sarai in grado di gestire quel pacchetto come se lo avessi installato tramite apt.


Oops, ho appena notato che @sebastian_k ha già menzionato checkinstall ... Oh bene!
mgalgs,

1

C'è una ragione valida e ragionevole che è così confusa (c'è anche una fastidiosa ragione di artefatto) ...

Unix ha una storia di multiutente e la maggior parte degli utenti non ha avuto accesso all'installazione di app al di fuori delle aree a cui era stato concesso l'accesso specifico.

Quindi la teoria sarebbe che costruiresti qualcosa nella tua directory home, per poi copiarlo in un'area su cui avevi il controllo (la tua area di progetto o un'area condivisa).

I PC Windows sono generalmente sistemi a utente singolo e non hanno questo vincolo, tutto va nei Programmi, non importa quale.

Poi c'è il fatto stupido e fastidioso che ogni volta che usciva una nuova versione di Unix, i creatori sentivano la necessità di cambiare posizione, ma i vecchi dovevano essere ancora lì per gli script automatici. Questo ti dà un sacco di directory collegate che servono allo stesso scopo.

Il sistema init è anche peggio.

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.