Come dire a Ubuntu dove installare un programma e come dire dove è stato installato un programma esistente?


10

Sono totalmente nuovo su Ubuntu / Linux, usando Ubuntu Server al momento. Sto solo cercando di capire qualcosa di essenziale.

Come puoi sapere dove stai installando un programma. Ad esempio ho appena installato il motore di ricerca Sphinx posizionando il tarball che ho scaricato dal loro sito sul mio:

/home/sphinx

directory. Ho creato la directory sfinge per posizionare quel tarball. Quindi ho eseguito questi comandi:

tar xvzf sphinx-0.9.8.1.tar.gz
cd sphinx-0.9.8.1/
./configure --with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib/mysql

e poi questi:

make
sudo make install

Ora ho molti file nella directory in cui ho eseguito questi comandi. Questa è la mia installazione di Spynx o è stata installata da qualche altra parte?

In Windows se si esegue un programma di installazione (file .exe) ovunque il programma verrà comunque installato nella directory C: \ Programmi. Qualcosa di simile si applica a Linux in cui tutti i programmi sono installati in una posizione centrale, oppure puoi installare programmi ovunque sul sistema.

Domande

  1. Preferirei mantenere tutti i miei programmi installati in un unico posto, quindi qual è il posto giusto per questo in termini di buone pratiche. In altre parole, qual è l'equivalente Linux di C: \ Programmi?

  2. E come si installa sempre in questa posizione, è solo una questione di posizionare il tarball ed eseguire i comandi di installazione da questa posizione?

  3. Che dire se uso sudo apt-get per installare un pacchetto. Come posso puntare a questa posizione per dire a apt-get di installarlo sempre lì?

Risposte:


15

Qualcosa di simile si applica a Linux in cui tutti i programmi sono installati in una posizione centrale

Equivalenti approssimativi delle directory di installazione di Windows in Linux

  • \Windows = /bin
  • \Windows\System32= /libe/sbin
  • \Program Files= /usr/bine/usr/lib

Preferirei mantenere tutti i miei programmi installati in un unico posto, quindi qual è il posto giusto per questo in termini di buone pratiche. In altre parole, qual è l'equivalente Linux di C: \ Programmi?

Quelle sarebbero le directory sotto /usr, in particolare /usr/bine /usr/lib.

E come si installa sempre in questa posizione, è solo una questione di posizionare il tarball ed eseguire i comandi di installazione da questa posizione?

  • No. Dove ti trovi quando esegui i comandi di installazione non importa quasi mai.

  • I programmi installati tramite apt-get(o aptitude) finiranno quasi sempre in modo appropriato /usr. MA i programmi che compilate dal sorgente e make installfinirete più spesso in /usr/local/bin, /usr/local/libecc., E potreste avere problemi con ciò poiché il percorso installato dall'utente in Debian / Ubuntu è /usre non lo è /usr/local.

  • Durante la compilazione dai sorgenti, aggiungere questo interruttore per configurare: ./configure --prefix=/usr. In questo modo, quando make installi file finiranno nella directory giusta

  • Guarda anche nel checkinstallprogramma, che tiene traccia dei file compilati da un pacchetto da installazioni di origine, crea un file deb e consente una facile disinstallazione / reinstallazione.

Che dire se uso sudo apt-get per installare un pacchetto. Come posso puntare a questa posizione per dire a apt-get di installarlo sempre lì?

apt-get/ dpkgprenditi cura di questo automaticamente. Puoi usare dpkg -L name-of-packageper vedere tutti i file installati da un pacchetto e dove sono stati installati.


grazie per la risposta dettagliata, solo una domanda. Dato che hai detto "No. Dove ti trovi quando esegui i comandi di installazione non importa quasi mai.", Questo significa che ora che ho installato il programma posso tranquillamente eliminare la cartella Sphinx in / home / sphinx / che ho estratto dal tarball ed ha eseguito l'installazione ed eseguito i comandi? È questo l'equivalente di un programma di installazione che ho già eseguito per installare un programma e che ora non serve?
JakeRow123

1
Sì, puoi eliminare la cartella estratta dal tarball: è essenzialmente come una cartella "temp" in cui è stato estratto il programma di installazione ed è ora inutile. È stata un'ottima domanda, modificherò la risposta per includere queste informazioni.
Ish,

Potresti, ma poi avrai problemi a disinstallarli con 'make uninstall'. In Debian / Ubuntu non dovresti mai installare il tuo software in prefisso / o / usr, dovresti usare / usr / local. Perché, poiché / usr / local è stato creato per gli amministratori locali, sei tu JakeRow123, per installare i propri programmi. / e / usr è solo per i pacchetti Debian. Se installi lì, le possibilità sono grandi che avrai problemi. Quindi usa l'opzione '--prefix = / usr / local' per configurare il comando quando compili il tuo. Quindi 'make; sudo make install 'vi installerà il programma lì.
Anders,

@Anders, make uninstallNON è una funzione standard e non si trova in molte fonti di programma. Inoltre, /usr/localspesso non si trova su Ubuntu e può causare problemi quando si tenta di eseguire programmi o si tenta di compilare (a causa di include in /usr/local).
Ish,

NON installare software nel posto sbagliato, come sotto / usr e non nel posto giusto come / usr / local. È necessario correggere l'errore con il PERCORSO se l'ambiente computer / utenti non è impostato correttamente. L'installazione sotto / o / usr ti metterà nei guai. Credimi su questo. Ci sono stato e l'ho fatto. NON è stato divertente. Affatto. Alcuni programmi, tutti con autoconfig, dove hai impostato con il comando configure hanno ottenuto una disinstallazione. Altri che non ce l'hanno non sono utili e dovrebbero avere un bug segnalato ...
Anders,

4

Di solito i programmi sono installati in un paio di directory in una directory principale , chiamata prefisso . La directory principale da utilizzare dipende da chi sta installando, per scopi di streghe e da chi gestirà il software.

Il prefisso /usrè un software utilizzato dalla tua distribuzione. È necessario non installare alcun altro software di là, perché si confonda la distribuzione durante l'installazione ed aggiornamento del software confezionato dalla distribuzione. Quindi, per favore non installare il proprio software compilato lì. Cioè non è una buona idea, a meno che tu non sappia quello che fai. E se non sei uno sviluppatore Debian o Ubunut, di solito non lo fai. Non lo farei comunque.

Per il software commerciale, /optviene utilizzato il prefisso . È riservato loro di interferire almeno con le distribuzioni e l'amministratore di sistema locale.

Per il software che l'amministratore di sistema installa per tutti gli utenti, /usr/localviene utilizzato il prefisso . È lontano dall'installazione commerciale o di distribuzione e non interferirà con essi. Quindi come amministratore di sistema lo usi (se hai i privilegi di root sei un amministratore di sistema).

Se sei un normale utente che installa software per te stesso, puoi usare la tua home directory come prefisso, usando l' --prefixopzione con configurecon la directory prefisso " ~/" o $HOME/. L'ho usato molto quando ero uno studente. :-)

Di solito il software fa la cosa giusta quando si esegue configurecon l'opzione --prefixcon il giusto valore e poi make; make install.

Sotto uno di questi prefissi, di solito si trovano queste directory in un'installazione standard.

  • bin - i programmi eseguibili, i binari.
  • sbin - binari di sistema, che di solito non dovrebbero essere eseguiti da utenti ordinari.
  • man - pagine di manuale per programmi, librerie e file di configurazione, ecc.
  • etc - configura i file con i valori predefiniti per il software.
  • lib - librerie di programmi e file di dati che dipendono dall'architettura (come la CPU) nel computer.
  • share - file di dati che non differiscono su architetture diverse e possono essere condivisi tra computer diversi.
  • var- directory con dati che cambiano durante l'esecuzione del programma. Come la registrazione di file ecc.

La maggior parte di queste directory può essere utilizzata con file system protetti da scrittura per aumentare la sicurezza. L'unico su cui gli utenti devono scrivere è la var/directory. Quando il software viene aggiornato, ovviamente queste directory (?) Devono avere i privilegi di scrittura. Ciò può essere fatto con un rimontaggio con privilegi di scrittura durante l'installazione e quindi rimontato con lettura solo dopo l'installazione. Ma questo è avanzato e lo do solo come esempio di gestione avanzata dei pacchetti.

Ci sono anche alcune directory direttamente sotto /(la directory root), che non esiste in nessun altro prefisso, come /dev, /tmp, /proce /srv(per le directory dati del server, ma di solito sono sotto /var/libo /var/wwwe directory come che, quindi è necessario per la configurazione modifica utilizzare questa directory. Vi consiglio di farlo quando si esegue un server. Utilizzare solo /var/per testare un'installazione standard).

  1. Linux non è MS Windows. Esistono molti luoghi in cui posizionare i programmi installati. Dipende da chi installa e per chi. Leggilo nel mio post. Avviso. RedHat usa /usrcome Debian / Ubuntu /usr/local. Scopri la tua distribuzione.
  2. Programmi diversi hanno metodi di installazione diversi. --prefixsono utili per i programmi che utilizzano configure. Il modo migliore per sapere è probabilmente leggere il README.txtfile o qualcosa del genere, che probabilmente ti viene fornito nell'archivio tar. L'archivio tar può essere estratto in qualsiasi luogo, come la tua home directory. Al termine dell'installazione, è possibile rimuovere l'archivio tar estratto, se si ha poca memoria. Ma non farlo troppo presto, a meno che tu non abbia verificato correttamente l'installazione.
  3. I programmi installati con apt-geto aptitudesono sempre installati nella posizione corretta per la distribuzione. Non puoi cambiare quel posto.

2

Quando si installano programmi da un repository utilizzando l'installazione normale, verranno installati nel posto corretto, verranno creati i file di configurazione nel posto giusto (funzionalmente simile al registro di Windows) e si creeranno automaticamente voci di menu.

Quando scarichi un file (non preferito, ma spesso necessario quando l'app non è in un repository), la prima cosa che hai fatto è stato eseguire tar, equivalente a decomprimerlo su Windows. Questo crea i file che probabilmente stai vedendo.

Quindi, quando esegui make install, questo di solito metterà i risultati nel posto giusto, forse creerà menu, ma non cancellerà i file non tarati. Molto probabilmente puoi farlo, ma potresti volerli salvare temporaneamente per ogni evenienza.

Ecco un interessante articolo sulla struttura delle directory di Debian .


Bell'articolo, tranne per il fatto che non aveva alcun riferimento a / usr / local in cui si installa il proprio software per non entrare in conflitto con il software installato dal sistema e dai pacchetti di distribuzione (come Ubuntu). Installare il proprio software sotto / o / usr è chiedere problemi, problemi che probabilmente solo sollution è quello di installare nuovamente il sistema da zero ...
Anders,
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.