Mögliches Duplizieren:
Wo ist ein typisches Linux-Programm installiert?
Ich bin neu in Linux und möchte ein bisschen mehr über Pakete fragen.
Unter Windows lade ich eine .exe
Datei herunter und installiere sie. Bei der Installation definiere ich den Pfad, in dem diese Anwendung gespeichert werden soll. In diesem Ordner befinden sich alle für die Anwendung erforderlichen Dateien.
Wenn ich jedoch ein Paket unter Linux mit yum
oder apt-get
installiere, weiß ich nicht, wo das Paket installiert ist und wo die erforderlichen Dateien für diese Anwendung gespeichert sind. Ich habe gesehen, dass sich die meisten Konfigurationen im /etc
Verzeichnis befinden. Aber warum speichert Linux die erforderlichen Dateien für eine Anwendung in verschiedenen Verzeichnissen?
Kann mir jemand sagen, wie Pakete installiert sind und wo und wie sie gespeichert werden? Und wenn mein Verständnis der Paketverwaltung falsch ist, korrigieren Sie mich bitte.
rpm
, könnenrpm -q --whatprovides
Sie den Paketnamen für eine bestimmte Datei ermitteln und dannrpm -q -a
herausfinden, welche Dateien ein Paket installiert hat.apt-get
, wenn das Paket installiert ist, verwenden Siedpkg -L PKGNAME
, wenn es nicht verwendet wirdapt-file list
.Antworten:
Wie Sie bereits bemerkt haben, landen viele Programme (die Binärdateien / Skripte) in
/bin
oder/usr/bin
mit anderen Teilen in verschiedenen Konfigurationsverzeichnissen (häufig in / unteretc
).Für jeden bestimmten Befehl können Sie whereis auschecken
und es gibt Ihnen einige Informationen darüber, wo sich dieser Befehl befindet. Sie können auch versuchen, welche
Auch diese Grafik und Erklärung / Beispiele könnten hilfreich sein.
quelle
/etc/
, aber ein zentraler Speicherort für Konfigurationsdateien macht es sehr einfach, sie zu sichern. (Stellen Sie sich vor, Sie sichern systemweite Konfigurationsdateien in Windows, wo sie über das gesamte Dateisystem und die Registrierung verteilt sind ...)Unter Windows, insbesondere in älteren Versionen, war es üblich, dass Programme Konfigurationsdateien und nicht konstante Daten in ihrem
C:\Program Files
Verzeichnis speichern . Dies ergibt sich aus der Art und Weise, wie Programme normalerweise unter DOS für Einzelbenutzer ohne Netzwerk und ohne Dateiberechtigung installiert und ausgeführt wurden.Aus Sicherheitsgründen ist dies eine schlechte Idee. Orte, an denen ausführbarer Code lebt, sollten von veränderbaren Daten getrennt werden. Auf diese Weise ist es einfacher, geeignete Dateiberechtigungen anzuwenden, um zu verhindern, dass nicht autorisierte Benutzer Änderungen an installierten Binärdateien vornehmen. Ebenso sollten sich Bibliotheksverzeichnisse, die möglicherweise getrennt von den ausführbaren Hauptdateien aktualisiert werden, in einem separaten Verzeichnis befinden.
Mit dem Aufkommen von Vista und UAC-Ärgernissen verliert diese Tradition endlich ernsthaft an Traktion.
UNIX und Linux, die von Anfang an ein Mehrbenutzersystem waren, hatten die Tendenz, ausführbare Verzeichnisse viel früher von anderen Verzeichnissen zu trennen, da andere Benutzer als root daran gehindert werden mussten, installierte Binärdateien zu ändern. Dies ist auch der Grund
/usr
und/sbin
manchmal sogar separate Partitionen. Ein besonders sicherheitsbewusster Administrator kann diese Partitionen schreibgeschützt bereitstellen und sie beim Lesen / Schreiben erneut bereitstellen, wenn eine Installation / Deinstallation erforderlich ist.Pakete werden normalerweise von einem Paketmanager installiert. Es gibt verschiedene Paketmanager wie
aptitude
(Debian und abgeleitete Distributionen),yum
(Redhat und abgeleitete Distributionen),pacman
(vergessen Sie, welche Distribution dies ist ...) und andere.Mit dem Paketmanager können Sie Repositorys durchsuchen, Software herunterladen, installieren, abfragen und entfernen, ähnlich wie in einem hoch entwickelten (und kostenlosen) "App Store". Es übernimmt die Verantwortung dafür, dass Abhängigkeiten berücksichtigt werden und verfolgt wird, was aktuell installiert ist.
Normalerweise erlaubt der Paketmanager dieselben Vorgänge auch für ein Paket, das Sie manuell außerhalb von Repositorys heruntergeladen haben. Tools sind auch verfügbar, wenn Sie Ihre eigene Software erstellen möchten, die Sie selbst erstellt oder kompiliert haben.
Da das Paket selbst KEINE ausführbare Datei ist, müssen Sie keine nicht vertrauenswürdige ausführbare Datei ausführen, von der Sie nicht wirklich wissen, was sie tut. (Windows kommt endlich mit Updates durch das Verteilen von
.msu
's anstelle von.exe
' s - aber es.msi
gibt schon eine Weile ...)quelle
Sie können eine Liste der Dateien abrufen, die ein bestimmtes
yum
Paket installiert, indem Sie Folgendes tun:Dann können Sie es so ausführen:
(Ersetzen Sie natürlich "yum-utils" in diesem zweiten durch den Namen des Pakets, dessen Dateiliste Sie sehen möchten.)
Für
apt-get
können Sie verwenden:quelle
In der Regel unter
/usr/bin
, obwohl dies von der jeweiligen Anwendung oder Bibliothek abhängt, die Sie installieren.quelle
Unter Linux / Unix landen die meisten Programme normalerweise nicht in einem einzigen Verzeichnis, aber verschiedene Teile davon (ausführbare Dateien, Konfigurationsdateien, Protokolldateien, Dokumentation, andere Ressourcen) sind über das Dateisystem verteilt - normalerweise durch Symlinking. Der Wikipedia-Artikel beschreibt detaillierter die Standardverzeichnisstruktur unter einer normalen Dateisystemhierarchie und zeigt die verschiedenen Verzeichnisse und was Sie in jedem erwarten können.
quelle
Das
/opt
Verzeichnis ist für Windows-ähnliche Installationen reserviert, bei denen jedes Paket einen eigenen Verzeichnisbaum hat. Niemand benutzt es. Ich bin mir nicht sicher warum; Es kann sein, dass das Hinzufügen/opt/PACKAGE/bin
zu$PATH
jedem, wenn Sie ein Paket installieren, einfach zu ärgerlich ist.quelle
/opt
scheint hauptsächlich von kommerziellen / nicht freien Softwarepaketen wie MATLAB verwendet zu werden./opt
aber auch LibreOffice 3.5, das ich direkt von hier aus installiert habe .Software unter Linux unterscheidet sich im Paradigma ein wenig von Windows oder Mac. In diesen werden eine ausführbare Datei und alle unterstützenden Dateien in einem einzigen Ordner installiert: Windows speichert sie normalerweise
c:\Program Files\program name
, Apple in/Applications/program.app
. Unter Linux gibt es eine mehr ... kommunale Struktur. Die Binärdateien befinden sich im Allgemeinen in/usr/bin
, die systemweite Konfiguration befindet sich in/etc
, die benutzerspezifische Konfiguration befindet sich normalerweise in~/.program
. Bibliotheken sind vorhanden/usr/lib
, unterstützende Dateien (z. B. Grafiken) befinden sich häufig/usr/share/program
usw. Es gibt sogar einen Standard, der vorschlägt, wohin die Dinge gehen sollen.Programme werden in der Regel durch Paket - Manager installiert ist ,
rpm
unddpkg
; sie werden automatisch gesucht und abgerufen werden (einschließlich Abhängigkeitsmanagement) durchyum
undaptitude
/apt-get
sind. Auf einer technischeren Ebene sind die Pakete einfache komprimierte Dateien (ich glaube, rpm und deb sind beide.tar.gz
). Diese Archive enthalten einen Spiegel der Teile des Dateisystems vom Stammverzeichnis, in dem sich die Dateien befinden (z. B. befindet sich eine Datei, auf der installiert/usr/bin/program
werden soll,usr/bin/program
unter dem entsprechenden Ordner im Paket.Verwenden Sie den Paketmanager für Ihr System, um Informationen zu einem bestimmten Paket zu erhalten, wie andere hier erläutert haben.
quelle
Die hier Manpage kann einige Einblicke geben
quelle