Dove viene archiviato il software installato in Linux? [duplicare]


11

Possibile duplicato:
dove è installato un tipico programma Linux

Sono nuovo di Linux e voglio chiedere qualcosa in più sui pacchetti.

In Windows, scarico un .exefile e lo installo. Quando installo, definisco il percorso in cui voglio archiviare l'applicazione. In quella cartella, ho tutti i file richiesti per l'applicazione.

Tuttavia, quando installo un pacchetto in Linux usando yumo apt-get, non so dove sia installato il pacchetto e dove siano memorizzati i file richiesti per quell'applicazione. Ho visto che la maggior parte delle configurazioni si trova nella /etcdirectory. Ma perché Linux memorizza i file richiesti per un'applicazione in diverse directory?

Qualcuno può dirmi come vengono installati i pacchetti e dove e come vengono archiviati? E se la mia comprensione della gestione dei pacchetti è errata, per favore correggimi.


Se la distribuzione utilizza rpm, è possibile utilizzare rpm -q --whatprovidesper trovare il nome del pacchetto per un determinato file e quindi rpm -q -aper scoprire quali file è installato un pacchetto.
David Schwartz,

Con apt-get, se il pacchetto è installato usare dpkg -L PKGNAME, se non lo è apt-file list.
Thor,

Risposte:


14

Molti programmi (binari / script) finiscono in /bino /usr/bincon altre parti in varie directory di configurazione (spesso in / sotto etc) come già notato.

Per qualsiasi comando specifico è possibile verificare dov'è

whereis prog_name

e ti darà alcune informazioni su dove si trova questo comando. Puoi anche provare quale

which prog_name

Inoltre, questa grafica e spiegazioni / esempi potrebbero essere utili.


1
+1 per whereis - molto utile per chi non

ma perché solo la configurazione è stata salvata in una directory separata?

@KOU Non conosco la storia di questo, ma potrebbe essere così che i programmi possano essere aggiornati senza incasinare le informazioni di configurazione poiché sarebbero in una directory diversa. In questo modo versioni diverse potrebbero utilizzare le stesse informazioni di configurazione (supponendo che il formato ecc. Non sia stato modificato, ovvero sia compatibile). Sto solo ipotizzando qui. Dovresti cercare la storia del file system Unix / Linux per una risposta definitiva.
Levon,

1
Non sono sicuro della storia della decisione di inserire tutti i file di configurazione a livello di sistema /etc/, ma avere una posizione centrale per i file di configurazione rende molto semplice il backup. (Immagina di eseguire il backup dei file di configurazione a livello di sistema in Windows, dove sono sparsi in tutto il filesystem e il registro ...)
Li-aung Yip

@ Li-aungYip Aspetto positivo
Levon,

5

Sotto Windows, in particolare le versioni precedenti, era comune per i programmi archiviare i file di configurazione e i dati non costanti nella loro C:\Program Filesdirectory. Questo deriva dal modo in cui i programmi venivano normalmente installati ed eseguiti in DOS per utente singolo, non in rete, senza permesso di file.

Dal punto di vista della sicurezza, questa è una cattiva idea. I luoghi in cui risiede il codice eseguibile dovrebbero essere separati dai dati modificabili. In questo modo è più semplice applicare le autorizzazioni dei file appropriate per impedire la modifica dei file binari installati da parte di utenti non autorizzati. Allo stesso modo anche le directory delle librerie che possono essere aggiornate separatamente dagli eseguibili principali dovrebbero trovarsi in una directory separata.

Con l'avvento dei fastidi di Vista e UAC, questa tradizione sta finalmente iniziando a perdere seriamente trazione.

UNIX e Linux, essendo un sistema multiutente da molto prima, avevano la tendenza a separare directory eseguibili da altre directory molto prima, poiché era necessario impedire agli utenti diversi da root di modificare i binari installati. È anche il motivo /usrper cui, a /sbinvolte, sono anche partizioni separate: un amministratore particolarmente attento alla sicurezza può montare quelle partizioni in sola lettura e rimontarle in lettura / scrittura quando deve avvenire un'installazione / disinstallazione.

I pacchetti vengono generalmente installati da un gestore pacchetti. Ci sono vari gestori di pacchetti, come aptitude(Debian e distribuzioni derivate), yum(Redhat e distribuzioni derivate), pacman(dimentica quale distro è ...) e altri.

Il gestore pacchetti consente di sfogliare i repository, scaricare, installare, eseguire query e rimuovere software, in modo molto simile a un "app store" sofisticato (e gratuito). Si assume la responsabilità di garantire che le dipendenze siano prese in carico e di rintracciare ciò che è attualmente installato.

Di solito il gestore pacchetti consentirà anche le stesse operazioni su un pacchetto scaricato manualmente al di fuori di qualsiasi repository. Gli strumenti sono disponibili anche se vuoi crearne uno tuo dal software che hai creato o compilato da solo.

Poiché il pacchetto stesso NON è un file eseguibile, non è necessario eseguire un eseguibile non attendibile che non si sa davvero cosa fa. (Windows sta finalmente arrivando con gli aggiornamenti distribuendo .msu'invece di .exe' - ma .msisono in giro da un po '...)


1
Ri. pacman, è per Arch Linux .

2

È possibile ottenere un elenco dei file yuminstallati da un determinato pacchetto effettuando:

yum install yum-utils

Quindi puoi eseguirlo in questo modo:

repoquery --list yum-utils

(Ovviamente, sostituisci "yum-utils" in quel secondo con il nome di quel pacchetto di cui desideri vedere l'elenco dei file.)

Per apt-get, puoi usare:

dpkg -L package-name

1

In genere /usr/bin, anche se dipende dalla particolare applicazione o libreria che si sta installando.


1

In Linux / Unix la maggior parte dei programmi di solito non finisce in una singola directory, ma parti diverse di esso (eseguibili, file di configurazione, file di registro, documentazione, altre risorse) sono sparse nel filesystem - di solito tramite il collegamento simbolico. L' articolo di Wikipedia descrive in modo più dettagliato la struttura di directory standard in una normale gerarchia di filesystem, mostrando le diverse directory e cosa ci si può aspettare di trovare in ciascuna.


0

La /optdirectory è riservata per installazioni simili a Windows in cui ogni pacchetto ha il proprio albero di directory. Nessuno lo usa. Non sono sicuro del perché; potrebbe essere che aggiungerlo /opt/PACKAGE/binal tuo $PATHogni volta che installi un pacchetto sia troppo fastidioso.


/optsembra essere utilizzato principalmente da pacchetti software commerciali / non liberi, come MATLAB.
Li-aung Yip,

Sul mio Ubuntu 12.04, Google Chrome si installa /optma poi anche LibreOffice 3.5 che ho installato direttamente da qui .

0

Il software in Linux è un po 'diverso in paradigma da Windows o Mac. In questi, un eseguibile e tutti i suoi file di supporto sono installati in una singola cartella: Windows li tiene normalmente dentro c:\Program Files\program name, Apple dentro /Applications/program.app. Sotto Linux, c'è una struttura più ... comune. I binari sono generalmente presenti /usr/bin, la configurazione dell'intero sistema è attiva /etc, la configurazione specifica dell'utente è generalmente attiva ~/.program. Le librerie sono presenti /usr/lib, i file di supporto (ad es. Grafica) sono spesso presenti /usr/share/program, ecc. C'è anche uno standard che suggerisce dove dovrebbero andare le cose.

I programmi sono generalmente installati dai gestori dei pacchetti rpme dpkg; vengono automaticamente cercati e recuperati (compresa la gestione delle dipendenze) rispettivamente da yume aptitude/ apt-get. A un livello più tecnico, i pacchetti sono semplici file compressi (credo che rpm e deb siano entrambi .tar.gz). Questi archivi contengono un mirror delle parti del filesystem dalla radice dove vanno i file (ad es. Un file che si suppone sia installato /usr/bin/programsarà nella usr/bin/programcartella appropriata all'interno del pacchetto.

Per trovare informazioni su un determinato pacchetto, utilizzare il gestore pacchetti per il proprio sistema, come altri hanno spiegato qui.


0

La pagina man di hier può fornire alcuni approfondimenti


2
Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il collegamento come riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia.
MaQleod,

@MaQleod Se sei preoccupato che il link possa diventare non valido, ho collegato solo per comodità. Potrei semplicemente scrivere "man hier" in testo semplice, dal momento che puoi trovare questa manpage in qualsiasi distribuzione Linux tradizionale credo.
AnonymousLurker

2
"vedere il manuale" non è inoltre una risposta appropriata, è un commento. Le risposte dovrebbero effettivamente rispondere alla domanda. Come risponde alla domanda posta? in che modo l'elenco gerarchico è significativo? Perché l'OP (o chiunque altro) dovrebbe considerare degna di nota questa risposta? Copia le parti pertinenti del link (o della pagina man) e spiega perché sono significative nel contesto della domanda, quindi avrai risposto alla domanda e non semplicemente fatto un commento.
MaQleod,
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.