Wie kann man Ubuntu mitteilen, wo ein Programm installiert werden soll und wo ein vorhandenes Programm installiert wurde?

10

Ich bin völlig neu in Ubuntu / Linux und verwende derzeit Ubuntu Server. Ich versuche nur, etwas Grundlegendes herauszufinden.

Wie können Sie feststellen, wo Sie ein Programm installieren? Zum Beispiel habe ich gerade die Sphinx-Suchmaschine installiert, indem ich den Tarball, den ich von ihrer Website heruntergeladen habe, auf meine Website gestellt habe:

/home/sphinx

Verzeichnis. Ich habe das Sphinx-Verzeichnis erstellt, um diesen Tarball abzulegen. Dann habe ich die folgenden Befehle ausgeführt:

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

und dann diese:

make
sudo make install

Jetzt habe ich viele Dateien in dem Verzeichnis, in dem ich diese Befehle ausgeführt habe. Ist das meine Spynx-Installation oder wurde sie woanders installiert?

Wenn Sie in Windows ein Installationsprogramm (EXE-Datei) an einer beliebigen Stelle ausführen, wird das Programm weiterhin in Ihrem Verzeichnis C: \ Programme installiert. Gilt etwas Ähnliches für Linux, wo alle Programme an einem zentralen Ort installiert sind, oder können Sie Programme überall auf dem System installieren?

Fragen

  1. Ich würde es vorziehen, alle meine installierten Programme an einem Ort zu halten, also was ist der richtige Ort dafür in Bezug auf Best Practice. Mit anderen Worten, was ist das Linux-Äquivalent von C: \ Programme?

  2. Und wie installiert man immer an diesem Ort? Geht es nur darum, den Tarball zu platzieren und die Installationsbefehle von diesem Ort aus auszuführen?

  3. Was ist, wenn ich sudo apt-get verwende, um ein Paket zu installieren? Wie kann ich auf diesen Speicherort verweisen, um apt-get anzuweisen, immer dort zu installieren?

JakeRow123
quelle

Antworten:

15

Gilt etwas Ähnliches für Linux, wo alle Programme an einem zentralen Ort installiert sind

Ungefähre Entsprechungen von Windows-Installationsverzeichnissen unter Linux

  • \Windows = /bin
  • \Windows\System32= /libund/sbin
  • \Program Files= /usr/binund/usr/lib

Ich würde es vorziehen, alle meine installierten Programme an einem Ort zu halten, also was ist der richtige Ort dafür in Bezug auf Best Practice. Mit anderen Worten, was ist das Linux-Äquivalent von C: \ Programme?

Das wären die Verzeichnisse unter /usr, speziell /usr/binund /usr/lib.

Und wie installiert man immer an diesem Ort? Geht es nur darum, den Tarball zu platzieren und die Installationsbefehle von diesem Ort aus auszuführen?

  • Nein. Wo Sie sich befinden, wenn Sie die Installationsbefehle ausführen, spielt fast keine Rolle.

  • Programme, die Sie über apt-get(oder aptitude) installieren, landen fast immer entsprechend in /usr. ABER Programme , die Sie von der Quelle kompilieren und make installwerden am Ende öfter in /usr/local/bin, /usr/local/libusw., und Sie können damit Probleme haben , da der vom Benutzer installierten Pfad in Debian / Ubuntu ist /usrund nicht /usr/local.

  • Fügen Sie beim Kompilieren aus dem Quellcode diesen Schalter hinzu, um Folgendes zu konfigurieren : ./configure --prefix=/usr. Auf diese Weise make installlanden die Dateien im richtigen Verzeichnis

  • Schauen Sie sich auch das checkinstallProgramm an, das die Dateien verfolgt, die ein Paket aus Quellinstallationen kompiliert hat, eine Deb-Datei erstellt und eine einfache Deinstallation / Neuinstallation ermöglicht.

Was ist, wenn ich sudo apt-get verwende, um ein Paket zu installieren? Wie kann ich auf diesen Speicherort verweisen, um apt-get anzuweisen, immer dort zu installieren?

apt-get/ dpkgKümmern sich um diese automatisch. Mit können dpkg -L name-of-packageSie alle von einem Paket installierten Dateien anzeigen und sehen, wo sie installiert wurden.

ish
quelle
danke für die ausführliche antwort, nur eine frage. Da Sie gesagt haben: "Nein. Wo Sie sich befinden, wenn Sie die Installationsbefehle ausführen, spielt das fast keine Rolle." Bedeutet dies, dass ich nach der Installation des Programms den Sphinx-Ordner in / home / sphinx /, den ich aus dem Tarball extrahiert habe, sicher löschen kann und lief die Installation und machte Befehle in? Entspricht dies jetzt einem Installationsprogramm, das ich bereits ausgeführt habe, um ein Programm zu installieren, und das jetzt keine Verwendung mehr hat?
JakeRow123
1
Ja, Sie können den aus dem Tarball extrahierten Ordner löschen - er ähnelt im Wesentlichen einem "temporären" Ordner, in den das Installationsprogramm extrahiert wurde, und ist jetzt unbrauchbar. Das war eine großartige Frage, ich werde die Antwort bearbeiten, um diese Informationen aufzunehmen.
ish
Sie könnten, aber dann werden Sie Probleme haben, sie mit 'make deinstallieren' zu deinstallieren. In Debian / Ubuntu sollten Sie Ihre Software niemals im Präfix / oder / usr installieren, sondern sollten / usr / local verwenden. Warum, weil / usr / local für lokale Administratoren erstellt wurde, sind Sie JakeRow123, um ihre eigenen Programme zu installieren. / und / usr ist nur für Debian-Pakete. Wenn Sie dort installieren, sind die Kanäle groß, so dass Sie Probleme bekommen. Verwenden Sie daher den Schalter '--prefix = / usr / local' für den Befehl configure, wenn Sie Ihren eigenen kompilieren. Dann mach; sudo make install 'installiert dort Ihr Programm.
Anders
@Anders make uninstallist KEINE Standardfunktion und wird in vielen Programmquellen nicht gefunden. Außerdem /usr/localbefindet es sich unter Ubuntu häufig nicht im Pfad und kann Probleme beim Ausführen von Programmen oder beim Kompilieren verursachen (aufgrund von Includes in /usr/local).
ish
Sie sollten Software NICHT am falschen Ort wie unter / usr und nicht am richtigen Ort wie / usr / local installieren. Sie sollten den Fehler mit dem PATH beheben, wenn die Computer- / Benutzerumgebung nicht richtig eingerichtet ist. Die Installation unter / oder / usr bringt Sie in Schwierigkeiten. Glaub mir das. War dort und habe das getan. Es hat keinen Spaß gemacht. Überhaupt. Einige Programme, alle mit Autoconfig, die Sie mit dem Befehl configure eingerichtet haben, wurden deinstalliert. Andere, die das nicht haben, sind nicht hilfreich und sollten einen Fehler melden lassen ...
Anders
4

Normalerweise werden Programme in einigen Verzeichnissen unter einem obersten Verzeichnis installiert , das als Präfix bezeichnet wird . Welches Top- Verzeichnis verwendet werden soll, hängt davon ab, wer zu welchem Zweck installiert und wer die Software verwaltet.

Das Präfix /usrist eine von Ihrer Distribution gepackte Software. Sie sollen nicht eine andere Software dort installieren, da es wird die Verteilung verwirrt bei der Installation und Aktualisierung von Software durch die Verteilung verpackt. Also bitte Ihre eigene kompilierte Software nicht dort installieren. Das ist keine gute Idee, es sei denn, Sie wissen wirklich, was Sie tun. Und wenn Sie kein Debian- oder Ubunut-Entwickler sind, tun Sie dies normalerweise nicht. Das würde ich sowieso nicht tun.

Für kommerzielle Software wird das Präfix /optverwendet. Es ist ihnen vorbehalten, Distributionen und den lokalen Systemadministrator am wenigsten zu stören.

Für Software, die der Systemadministrator für alle Benutzer installiert, wird das Präfix /usr/localverwendet. Dort ist es sowohl von der kommerziellen als auch von der Vertriebsinstallation aus dem Weg und wird sie nicht stören. Als Systemadministrator verwenden Sie dies (wenn Sie über Root-Rechte verfügen, sind Sie ein Systemadministrator).

Wenn Sie ein gewöhnlicher Benutzer sind, der Software für sich selbst installiert, können Sie Ihr Home-Verzeichnis als Präfix verwenden, indem Sie die --prefixOption configuremit dem Präfix-Verzeichnis " ~/" oder verwenden $HOME/. Ich habe das oft benutzt, als ich Student war. :-)

Normalerweise macht Software das Richtige, wenn Sie configuremit der Option --prefixmit dem richtigen Wert ausführen und dann make; make install.

Unter einem dieser Präfixe finden Sie diese Verzeichnisse normalerweise in einer Standardinstallation.

  • bin - die ausführbaren Programme, Binärdateien.
  • sbin - System-Binärdateien, die normalerweise nicht von normalen Benutzern ausgeführt werden sollten.
  • man - Handbuchseiten für Programme, Bibliotheken und Konfigurationsdateien usw.
  • etc - Konfigurationsdateien mit Standardwerten für die Software.
  • lib - Programmbibliotheken und Datendateien, die von der Architektur (wie der CPU) Ihres Computers abhängen.
  • share - Datendateien, die sich auf verschiedenen Architekturen nicht unterscheiden und von verschiedenen Computern gemeinsam genutzt werden können.
  • var- Verzeichnisse mit Daten, die sich während der Programmausführung ändern. Wie das Protokollieren von Dateien usw.

Die meisten dieser Verzeichnisse können mit schreibgeschützten Dateisystemen verwendet werden, um die Sicherheit zu erhöhen. Das einzige, in das Benutzer schreiben müssen, ist das var/Verzeichnis. Wenn die Software aktualisiert wird, müssen diese Verzeichnisse offensichtlich (?) Schreibrechte haben. Dies kann mit einer erneuten Bereitstellung mit Schreibrechten während der Installation erfolgen und dann nach der Installation mit schreibgeschützt erneut bereitgestellt werden. Dies ist jedoch fortgeschritten, und ich gebe es nur als Beispiel für eine erweiterte Paketverwaltung.

Es gibt auch einige Verzeichnisse direkt unter /(Root - Verzeichnis) , das existiert nicht unter irgendeinem anderen Präfix, wie /dev, /tmp, /procund /srv(für den Server - Datenverzeichnisse, aber sie sind in der Regel unter /var/liboder /var/wwwund Verzeichnisse so, so dass Sie Änderungen der Konfiguration müssen Verwenden Sie dieses Verzeichnis. Ich empfehle, dies zu tun, wenn Sie einen Server /var/ausführen . Nur zum Testen einer Standardinstallation verwenden.

  1. Linux ist nicht MS Windows. Es gibt viele Orte, an denen Sie Programme platzieren können, die Sie installieren. Es kommt darauf an, wer und für wen installiert. Lies es in meinem Beitrag. Beachten. RedHat verwendet /usrwie Debian / Ubuntu /usr/local. Lernen Sie Ihre Distribution.
  2. Unterschiedliche Programme haben unterschiedliche Installationsmethoden. --prefixsind nützlich für Programme mit configure. Der beste Weg, dies zu wissen, besteht wahrscheinlich darin, die README.txtDatei oder ähnliches zu lesen , die Sie wahrscheinlich im Teerarchiv erhalten. Das Teerarchiv kann an jedem Ort wie Ihrem Home-Verzeichnis extrahiert werden. Nach Abschluss des Installationsschritts können Sie das extrahierte Teerarchiv entfernen, wenn Sie nicht genügend Speicherplatz haben. Tun Sie dies jedoch nicht zu früh, es sei denn, Sie haben Ihre Installation ordnungsgemäß getestet.
  3. Programme, die mit apt-getoder aptitudeimmer am richtigen Ort für die Distribution installiert wurden. Sie können diesen Ort nicht ändern.
Anders
quelle
2

Wenn Sie Programme aus einem Repository mit der normalen Installation installieren, wird es an der richtigen Stelle installiert, Konfigurationsdateien am richtigen Ort erstellt (funktional ähnlich wie bei der Windows-Registrierung) und Menüeinträge automatisch erstellt.

Wenn Sie eine Datei herunterladen (nicht bevorzugt, aber häufig erforderlich, wenn sich die App nicht in einem Repository befindet), haben Sie zunächst tar ausgeführt, was dem Entpacken unter Windows entspricht. Dadurch werden die Dateien erstellt, die Sie höchstwahrscheinlich sehen.

Wenn Sie dann make install ausführen, werden die Ergebnisse normalerweise an der richtigen Stelle platziert, möglicherweise werden Menüs erstellt, aber die nicht geteerten Dateien werden nicht gelöscht. Sie können dies höchstwahrscheinlich tun, möchten sie jedoch für alle Fälle vorübergehend speichern.

Hier ist ein interessanter Artikel über die Debian-Verzeichnisstruktur .

Marty Fried
quelle
Schöner Artikel, außer dass er keinen Verweis auf / usr / local hatte, wo Sie Ihre eigene Software installieren, um nicht mit der vom System installierten Software und Ihren Distributionspaketen (wie Ubuntu) in Konflikt zu geraten. Um Ihre eigene Software unter / oder / usr zu installieren, müssen Sie nach Problemen fragen, Probleme, die wahrscheinlich nur darin bestehen, das System von Grund auf neu zu installieren ...
Anders