Wo schlagen „Best Practices“ bei der Installation von Benutzeranwendungen vor, dass diese gefunden werden?

210

Gelegentlich installiere ich Anwendungen manuell, anstatt einen aptanderen Paketmanager zu verwenden.

An welchem Ort ( /usr/, /usr/local/, /opt/, /home/, etc.) wird von "Best Practices" für die Installation von Benutzeranwendungen vorgeschlagen?

citadelgrad
quelle
Da ich es immer wieder mag, Dinge aus dem Quellcode zu installieren, habe ich ein kleines Tool dazu geschrieben, das die Änderungen an Ihrer Shell-Startdatei selbst vornimmt (und auch das Präfix Ihrer Bibliothek ändert, wenn Sie danach fragen, für Programme, die von gemeinsam genutzten Bibliotheken abhängen ). Nicht sehr funktionsreich, funktioniert aber in 99% der Fälle.
new123456
Related post: askubuntu.com/q/138547/62483
Lucio
1
Große Diskussion über die Unterscheidung zwischen /optund /usr/local: unix.stackexchange.com/q/11544/11917
blong

Antworten:

184

Das hängt wirklich davon ab. Wenn die Anwendung ein Makefile hat oder zum Beispiel für Python-Apps, wenn die Anwendung distutils verwendet (z. B. eine setup.pyDatei hat), oder ein ähnliches Build / Install-System, sollten Sie es installieren /usr/local/. Dies ist häufig das Standardverhalten.

Soweit ich weiß, /usr/local/hat eine Hierarchie, die ähnlich ist /usr/. Verzeichnisse wie /usr/bin/und /usr/lib/sind jedoch normalerweise für die Installation von Paketen über reserviert apt. Ein Programm, das erwartet, "installiert" zu werden, /usr/sollte also gut funktionieren /usr/local/.

Wenn Sie nur einen Tarball extrahieren und direkt ausführen müssen (z. B. Firefox), legen Sie ihn in /opt/. Ein Programm, das nur ein Verzeichnis benötigt und alle Dateien / Bibliotheken in Bezug auf dieses Verzeichnis abruft, kann ein Verzeichnis für sich selbst abrufen /opt/.

Umang
quelle
24
Es scheint, als hätten so viele Menschen es vergessen. opt/Meiner Meinung nach haben Sie den Nagel auf den Kopf getroffen, und das zu seinem Zweck.
Marco Ceppi
3
Erstellen Sie einen Symlink aus / usr / bin oder fügen Sie ihn zu PATH in ~ / .bashrc
Alex,
1
Was ist ~/.local/share? @ Marco
Ultimatex
1
Sie können Dinge in ~(Ihrem Heimverzeichnis) installieren , aber das wird eine Anwendung nur für einen Benutzer zugänglich machen. Andere Benutzer auf Ihrem System müssen ihre eigenen Installationen dieser Software installieren und warten. Was die Best Practices für die Installation von Anwendungen betrifft, installieren Sie Ihr Basisverzeichnis. Ich glaube, es gibt keine so strengen Richtlinien, da Sie die Systempakete nicht beeinträchtigen.
Umang
1
Ist es falsch, Apps zu installieren, die unter / home / ubuntu / myapp von tar entpackt wurden - was für einen Unterschied hat dies im Vergleich zu / opt / myapp gemacht?
JARC
116

Es ist gut zu bedenken, dass /usrdies nicht für Benutzer , sondern für Unix-Systemressourcen steht .

Als solches neige ich dazu, mir vorzustellen, dass jede Distribution das Recht hat, über den gesamten Inhalt von zu stampfen, /usr,und dass meine spezifischen Ergänzungen zum System eingehen /usr/local, die ich vor einem Upgrade behalte.

In der Zwischenzeit gehen Anwendungen und andere Dinge ein /opt.

Einige Leute fühlen sich wohl /home, wenn sie etwas einbauen , obwohl ich dieser Konvention selten folge.

Trotzdem überlasse ich es dem Manager des Distributionspakets, zuerst die Dinge auf seine Weise zu erledigen, und dann das oben Genannte, wenn man Sachen von Hand rollt.

Walt Steinbrenner
quelle
35
Es ist erwähnenswert, dass "Unix-Systemressourcen" eine Umbenennung ist, die durchgeführt wurde, nachdem "/ home" hinzugefügt wurde. In der alten, alten, alten Zeit (Unix-Version 6 usw.) sahen Sie Verzeichnisse wie / usr / jimmy, / usr / siobhan, / usr / ahmed usw., weil die "Benutzer" -Verzeichnisse in / usr gespeichert waren .
Mark Leighton Fisher
5
OK, ich werde beißen: Wofür steht opt?
Seth
3
@Seth Ich denke, es ist 'optional' - es war ursprünglich für Software, die nicht Teil einer Standardinstallation war.
Carl H
5
/ usr ist User. Das lag daran, dass Linux-Benutzer Entwickler waren. Als es anfing, sich in Entwickler und Benutzer zu unterteilen, wurde das Verzeichnis /homeeingeführt. Und dann hatte jemand die Idee zu sagen , es bedeutet Unix System Resources, was nicht wirklich Sinn macht, denn wir haben den Unix system Resourcesin/dev
Info-Bildschirm
2
Richtig, / usr ist ein Backronym. Der Zweck hat sich geändert, seit Unix 1969 auf einem PDP-7 lief.
Walt Stoneburner
34

Installieren Sie instabile Programme wie Firefox Devel in / home / user / opt /, um das Entfernen zu vereinfachen. Andere Benutzer wissen nicht, welche Version sie verwenden sollen. Wenn es sich also nicht um ein Programm für den globalen Gebrauch handelt, installieren Sie es es in einem Unterordner in Ihrem Home-Verzeichnis.

Installieren Sie niemals Programme in / usr /. Dies kann zu Chaos führen. Die in / usr / installierten Dinge sind nur für Distributionspakete gedacht. / usr / local / ist für lokal kompilierte Pakete. Und die Struktur funktioniert genauso! Dateien in / usr / local / haben Vorrang vor Dateien in / usr /

/ opt / sollte für die Installation von vorkompilierten (binären) Paketen (Thunderbird, Eclipse, Netbeans, IBM NetSphere usw.) und dergleichen verwendet werden. Wenn sie jedoch nur für einen einzelnen Benutzer bestimmt sind, sollten sie in Ihrem Home-Verzeichnis abgelegt werden.

Wenn Sie ein Programm ausführen möchten, das an einem "seltsamen" Ort installiert ist (z. B. / home / user / opt / firefox /), ohne den gesamten Pfad einzugeben, den Sie benötigen, um es Ihrer $ PATH-Variablen hinzuzufügen, können Sie dies tun Fügen Sie eine Zeile wie diese in Ihrem /home/user/.profile hinzu

export PATH=/home/user/opt/firefox:$PATH

Der Ordnername sollte derjenige sein, in dem sich die ausführbare Datei befindet, die Sie ausführen müssen.

LassePoulsen
quelle
26

Der Linux Filesystem Hierarchy Standard gibt an /usr/local.

Von http://tldp.org/LDP/Linux-Filesystem-Hierarchy/html/usr.html :

Die ursprüngliche Idee hinter '/ usr / local' war, auf jedem Computer neben '/ usr' ein separates ('local') / usr-Verzeichnis zu haben, das möglicherweise nur von einem anderen Ort aus schreibgeschützt eingehängt werden kann. Es kopiert die Struktur von '/ usr'. Heutzutage wird / usr / local allgemein als ein guter Ort angesehen, um selbst kompilierte Programme oder Programme von Drittanbietern aufzubewahren. Die / usr / local-Hierarchie wird vom Systemadministrator beim lokalen Installieren der Software verwendet. Es muss sicher sein, dass es beim Aktualisieren der Systemsoftware nicht überschrieben wird. Es kann für Programme und Daten verwendet werden, die von einer Gruppe von Hosts gemeinsam genutzt werden können, sich jedoch nicht in / usr befinden. Lokal installierte Software muss in / usr / local und nicht in / usr abgelegt werden, es sei denn, sie wird installiert, um Software in / usr zu ersetzen oder zu aktualisieren.

Popey
quelle
1
Scheint diesem / usr / local-Teil mit den Informationen auf der opt-Seite zu widersprechen: tldp.org/LDP/Linux-Filesystem-Hierarchy/html/opt.html "" Dieses Verzeichnis ist für alle Software- und Add-On-Pakete reserviert, die sind nicht Teil der Standardinstallation. Beispielsweise finden Sie hier normalerweise StarOffice-, Kylix-, Netscape Communicator- und WordPerfect-Pakete. Zur Einhaltung der FSSTND sollten alle Anwendungen von Drittanbietern in diesem Verzeichnis installiert werden. "..." (ähnlich wie Windows neue Software in seinem eigenen Verzeichnisbaum C: \ Windows \ Programmdateien \ "Programmname installiert ")"
Pod
6

Normalerweise habe ich einen Ordner mit dem Namen "Programme" in meinem Haus, in dem ich diese Programme installiere, seltsamerweise (oder auch nicht) sind sie derzeit alle Java-Programme.

Es hat einen großen Vorteil für mich, wenn ich Computer neu installiere oder ändere, werden sie mit dem Rest meines Zuhauses verschoben. Es hat einen klaren Nachteil, dass diese Apps nur meinem Benutzer zur Verfügung stehen.

Javier Rivera
quelle
Wie kann ich Ubuntu 16.04 neu installieren, ohne Daten im Home-Ordner zu verlieren? Ich habe versucht, ein /Verzeichnis zu formatieren und dann den gleichen alten Benutzernamen und das gleiche Passwort einzugeben, aber ich habe festgestellt, dass Ubuntu einen anderen Home-Ordner erstellt.
Ibrahim Disouki
1

Verwenden Sie "checkinstall", um Ihr Alien-Paket in ein Deb zu konvertieren, damit es mit dem Paket-Manager deinstalliert werden kann.

Beachten Sie, dass Konfigurationsdateien häufig nicht als Konfigurationsdateien behandelt werden (möglicherweise ignoriert oder möglicherweise als Teil der App behandelt), und dass Skripts vor und nach der Installation manchmal verpfuscht werden, obwohl Sie in der Regel gewarnt werden, wenn dies der Fall ist deb wird ein fehlerhaftes Skript vor oder nach der Installation haben.

Ein Student an einer Universität
quelle