Woher weiß ich, wo ich Dinge in Linux ablegen soll?

58

Wenn Sie etwas in Windows installieren, genügt ein Knopfdruck. Aber jedes Mal, wenn ich versuche, etwas unter Linux zu installieren, das in APT nicht vorhanden ist, bin ich so verwirrt.

Sie laden einen gezippten Ordner herunter, was dann? Wenn Sie Glück haben, gibt es eine README-Datei, die auf einige Dokumentationen verweist, die Ihnen helfen können, wenn Sie Glück haben.

Was ist der Zaubertrick beim "Installieren" von Erweiterungen und Anwendungen, die in APT nicht gefunden werden?

Ich liebe Linux, aber dieses Problem verfolgt mich jeden Tag.

Marcus Johansson
quelle
8
Offtopic. Der einfache Trick besteht jedoch darin, niemals etwas außerhalb des Paketverwaltungssystems zu installieren.
Let_Me_Be
1
Wenn es nicht von APT stammt, können Sie es wahrscheinlich nicht einfach installieren - Sie müssen es selbst kompilieren und installieren. Und dann wird es mit APT-basierten Paketen verwechselt. Es ist am einfachsten, APT / .debs für alles zu finden, was Sie benötigen, so weit Sie können.
Rup
2
@Rup Plus Wenn eine Software kein Deb-Paket hat, sollten Sie es wahrscheinlich nicht installieren, da es entweder veraltet oder auf dem neuesten Stand ist oder mit apt-basierten Distributionen nicht kompatibel ist.
Let_Me_Be
3
Sobald Sie genug Erfahrung mit dem Erstellen / Installieren von Software haben, können Sie einfach Ihre eigenen Pakete erstellen. Bitte geben Sie unbedingt Feedback an den Upstream-Anbieter!
Jsbillings

Antworten:

32

Handelt es sich um eine Software , die das gehorcht Filesystem Hierarchy Standard , als man es in platzieren sollte , /usr/localund die entsprechenden Unterverzeichnisse (wie bin, lib, share, ...).

Andere Software sollte in ein eigenes Verzeichnis unter gestellt werden /opt. Stellen Sie dann Ihre PATHVariable so ein, dass sie das binVerzeichnis oder das Verzeichnis enthält, in dem sich die ausführbaren Dateien befinden, oder erstellen Sie symbolische Links zu /usr/local/bin.

Martin Scharrer
quelle
1
Wirklich eine gute Antwort, aber man sollte es nicht jeden Tag tun müssen.
Phunehehe
1
@phunehehe - Du musst es jeden Tag tun?
Rob
3
Nein, ich bezog mich auf die OP's "Dieses Problem verfolgt mich jeden Tag".
Phunehehe
1
Lesen Sie neben dem Wikipedia-Link zu FHS auch diesen: pathname.com/fhs/pub/fhs-2.3.html . Lesen Sie den Abschnitt "Zweck".
yasouser
27

Es gibt keine einfache Antwort auf diese Frage, aber ich kann Ihnen einen allgemeinen Überblick über die Funktionsweise geben:

Die meiste Linux-Software wird von den Autoren (dem "Upstream") in Form von Quellcode bereitgestellt. Auf diese Weise kann jeder, der einen Compiler für die jeweilige Plattform- und Systemkonfiguration hat, den Quellcode herunterladen und selbst kompilieren. Leider verlassen sich viele Programme auf Funktionen, die von anderen Programmen und Softwarebibliotheken bereitgestellt werden (Abhängigkeiten).

Windows-Software wird normalerweise in vorkompilierter Form geliefert. Das bedeutet, dass für alle Windows-Computer eine allgemeine ausführbare Datei vorhanden ist, deren Abhängigkeiten häufig im Installationspaket enthalten sind.

Linux-Distributionen nehmen den Quellcode, kompilieren ihn für Sie vor und bieten ihn Ihnen auch als Paket an. Das Paket enthält keine Abhängigkeiten, bezieht sich jedoch auf diese und zwingt das Paketsystem, diese ebenfalls zu installieren (was manchmal zu Unregelmäßigkeiten führen kann, die Sie wahrscheinlich bereits selbst erlebt haben).

Wenn es kein vorkompiliertes Paket gibt, können Sie den Quellcode jederzeit herunterladen und selbst kompilieren. In den meisten Fällen funktioniert Folgendes:

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

Die Zeile ./configure legt die Stufe für den Kompilierungsprozess fest (und gibt Fehler aus, wenn Abhängigkeiten nicht erfüllt sind). Die make-Zeile führt das Makefile aus, ein Skript, das alle Teile des Programms kompiliert.

Normalerweise verwenden Sie make install, um die Software zu installieren. Dadurch werden die ausführbaren Dateien normalerweise in / usr / local / bin abgelegt.

Da Sie apt verwenden, empfehle ich sehr, checkinstall zu installieren. Sie können es anstelle von make install verwenden und es wird ein .deb-Paket für Sie generieren. Dies macht es viel einfacher, die Software später sauber zu entfernen.

Beachten Sie, dass es eine Handvoll anderer Kompilierungssysteme gibt, zum Beispiel cmake; und manche Software wird vorkompiliert, aber entpackt geliefert (in diesem Fall können Sie sie direkt aus dem entpackten Ordner starten). und manche Software besteht aus einer Sammlung von Skripten, die Sie selbst ausführen müssen. Frischer SVN-Code wird manchmal ohne Konfigurationsskripte ausgeliefert. Sie müssen also zuerst die Autoconf-Toolchain ausführen. Es gibt viele Ausnahmen von der Regel, aber mit ein wenig Erfahrung werden Sie in der Lage sein, dies zu tun Erzählen Sie, was Sie mit den meisten dieser mysteriösen Downloads anfangen sollen. Configure-Make-Checkinstall ist ein guter erster Start.

PS. Verbringen Sie ein oder zwei Wochenenden, um zu lernen, wie man sich programmiert, und die Dinge werden sehr offensichtlich :-)

PPS. Sie fragen sich vielleicht, warum Linux-Software-Autoren nicht nur vorkompilierte Pakete anstelle des Quellcodes bereitstellen. Nun, manchmal schon. Unterschiedliche Plattformen und Linux-Distributionen haben jedoch jeweils eigene Paketformate und Dateisystemregeln. Als Entwickler müssten Sie daher Pakete für jede mögliche Konfiguration bereitstellen - was sehr schwierig ist. Ubuntu-Pakete sind jedoch oft am einfachsten zu finden - Sie sollten herausfinden, was ein PPA ist und wie es funktioniert!

sebastian_k
quelle
1
"PS. Verbringen Sie ein oder zwei Wochenenden, um zu lernen, wie man sich programmiert, und die Dinge werden sehr offensichtlich :-)". Schlechte Beratung in einer ansonsten hervorragenden Antwort. Die Leute zu Programmieren, um Linux zu verstehen, ist wie Fluggäste, die Flugzeuge reparieren.
apoorv020
Anstatt zu programmieren, ändern Sie es einfach, um Ihr eigenes Linux zu kompilieren, wie LFS (Linux from Scratch) linuxfromscratch.org
jsolarski
@apoorv, Punkt genommen. :)
sebastian_k
4

Sie sollten checkinstall auschecken . Anstatt von

./configure
make
sudo make install

Sie machen

./configure
make
sudo make checkinstall

und Sie können dieses Paket so verwalten, als hätten Sie es über apt installiert.

mgalgs
quelle
Hoppla, habe gerade bemerkt, dass @sebastian_k checkinstall bereits erwähnt hat ... Na ja!
mgalgs
1

Es gibt einen gültigen, vernünftigen Grund, der so verwirrend ist (es gibt auch einen ärgerlichen Artefaktgrund) ...

Unix war in der Vergangenheit mehrbenutzerfähig, und die meisten Benutzer hatten keinen Zugriff auf die Installation von Apps außerhalb der Bereiche, auf die ihnen spezifischer Zugriff gewährt wurde.

Die Theorie wäre also, dass Sie etwas in Ihrem Home-Verzeichnis erstellen und es dann in einen Bereich kopieren, über den Sie Kontrolle hatten (Ihren eigenen Projektbereich oder einen gemeinsam genutzten Bereich).

Windows-PCs sind in der Regel Einzelplatzsysteme und unterliegen dieser Einschränkung nicht. In den Programmdateien wird alles gespeichert, egal was passiert.

Hinzu kommt die blöde, ärgerliche Tatsache, dass die Entwickler jedes Mal, wenn eine neue Version von Unix herauskam, es für notwendig hielten, die Speicherorte zu ändern, während die alten weiterhin für automatisierte Skripte zur Verfügung stehen mussten. Dadurch erhalten Sie eine Reihe verknüpfter Verzeichnisse, die denselben Zweck erfüllen.

Das Init-System ist noch schlimmer.

Bill K
quelle