Warum wurde mein Paket auf / opt installiert?

8

Vor einiger Zeit habe ich couchdb von der Quelle auf meinem Debian-Computer installiert. Es schien in Ordnung zu installieren und alles funktionierte.

Ein paar Wochen später wollte ich ein Upgrade durchführen und von einer .deb mit dpkg installieren. Alles scheint jetzt unter installiert worden zu sein /opt. Es scheint alles gut zu funktionieren, aber ich verstehe nicht wirklich, warum alles unter installiert wurde /opt. Es fühlt sich nicht so "glatt" an, als wenn Dinge direkt in /usr/local/binund /etcund installiert würden /var/log. Die Konfiguration ist umständlicher als bei der vorherigen Bearbeitung der Konfigurationsdateien, die unter / etc / couchdb installiert wurden

Würde es jemandem etwas ausmachen, mir zu erklären, warum die Installation zu /opt"eine gute Sache" ist und warum dies eine bessere Methode ist als die vorherige Installation, die von der Quelle stammt?

Ich weiß, dass dies eine ziemlich vage Frage ist, aber ich bin nur mit Linux kompetent, kein Experte und verstehe die Überlegungen hinter der Installation nicht /opt

Mikel
quelle
Vielleicht fehlt ein / debian-Tag?
D4RIO
Wollen Sie damit sagen, dass ein Debian-Paket in / opt installiert ist? Wenn ja, macht es das Falsche. Ich habe auch eine Google Chrome-Anwendung (derzeit nicht installiert), die in / opt installiert ist. Alles, was vom Paketsystem verwaltet wird, sollte in das Hauptsystem gehen.
Faheem Mitha
Bei genauerer Betrachtung konnte ich keine klare Aussage in der Richtlinie finden, dass die Installation des Debian-Pakets (unabhängig davon, ob es offiziell ist oder nicht) nicht in / opt installiert werden sollte, obwohl ich den starken Eindruck habe, dass dies nicht getan werden sollte Es gibt verschiedene Kommentare im Internet, dass dies falsch ist. Wenn ich etwas Bestimmtes finde, werde ich es posten. AFAIK, Debian erwartet oder verlangt nicht, dass nicht offizielle Pakete an einem anderen Ort als den offiziellen Paketen installiert werden.
Faheem Mitha

Antworten:

10

Der Dateisystem-Hierarchiestandard enthält folgende Definitionen:

  • /opt : Add-On-Anwendungssoftwarepakete
  • /usr/local : Lokale Hierarchie (zur Verwendung durch den Systemadministrator bei der lokalen Installation von Software)

So wie ich das gelesen habe:

  • Standardsystemanwendungen sollten eingehen /binund /usr/bin(impliziert)
  • Pakete von Drittanbietern sollten eingehen /opt
  • Etwas sollte nur installiert werden, /usr/localwenn der Systemadministrator dies wünscht

Wenn der Systemadministrator etwas mit dpkgoder installiert rpm, sollte er /usr/localstandardmäßig nicht verwendet werden.

Es macht also wohl das Richtige.

Mikel
quelle
Der Websphere-App-Server von IBM geht in / opt. Wenn ich etwas wie IBM JDK installiere, lege ich es auch in / opt / java ab.
Djangofan
5

Debian Policy sagt

9.1.2 Site-spezifische Programme

Gemäß den Vorgaben der FHS dürfen Pakete keine Dateien ablegen, /usr/localweder indem sie in das Dateisystemarchiv gestellt werden, um von dpkg entpackt zu werden, noch indem sie in ihren Betreuerskripten bearbeitet werden.

Es gibt kein solches spezifisches Verbot gegen /opt. Richtlinie fügt auch hinzu

Der Speicherort aller installierten Dateien und Verzeichnisse muss mit den unten angegebenen Ausnahmen dem Dateisystemhierarchiestandard (FHS), Version 2.3, entsprechen, sofern dies nicht gegen andere Bestimmungen der Debian-Richtlinie verstößt.

und der Dateihierarchiestandard sagt

Die Verzeichnisse /opt/bin, /opt/doc, /opt/include, /opt/info, /opt/lib, und /opt/mansind für die lokalen Systemadministrator vorbehalten.

und dann weiter unten

Distributionen können Software installieren /opt, dürfen jedoch keine vom lokalen Systemadministrator installierte Software ohne Zustimmung des lokalen Systemadministrators ändern oder löschen.

Beachten Sie, dass die Richtlinie für Debian selbst gilt, aber im Allgemeinen einer Best-Practice-Empfehlung entspricht. Wenn ich das richtig lese, ist das Ergebnis, dass es nicht in Ordnung ist, Binärpakete (Deb-Pakete) zu installieren /usr/local, aber es ist in Ordnung, es zu installieren, /optsolange es die Nutzung des Speicherplatzes durch den Systemadministrator nicht beeinträchtigt.

Meine persönliche Meinung ist, dass es eine schlechte Idee ist, Deb-Pakete in entweder /usr/localoder zu haben /opt. Ich bin mit D4RIO nicht einverstanden, wenn er sagt:

Es gibt ein Couchdb-Paket für Debian (ich meine, offiziell). Wenn Sie also ein anderes heruntergeladen haben, ist es in Ordnung, es muss in /optoder /usr/local/bineinem installiert sein.

Sie möchten im Allgemeinen nicht, dass zwei verschiedene Deb-Pakete installiert werden, die derselben Software entsprechen, und wenn sie tatsächlich denselben Paketnamen haben, lässt dpkg dies ohnehin nicht zu. Inoffizielle Debian-Softwarepakete, die allgemein (aber nicht immer) als offizielles Paket erhältlich sind, haben denselben Namen wie die offiziellen. Sie installieren nur das eine oder andere, nicht beide.

Für das, was es wert ist, halte ich das Einfügen von Deb-Paketen für /opteine schlechte Idee, und das einzige, was ich in letzter Zeit gesehen habe, ist Google Chrome. Google befolgt jedoch nicht immer Best Practices.

Faheem Mitha
quelle
Stimmen Sie vollständig zu, dass ein Paket nicht auf / opt installiert werden sollte, insbesondere wenn es Dateien an anderer Stelle wie in / usr / bin ablegt. Imho / opt sollte vollständig eigenständige Software enthalten, damit Sie sie aus dem Orbit entfernen können, indem Sie sie einfach aus / opt löschen.
Arrowmaster
Okay, tolle Antworten, danke, aber es ist standardmäßig auf / opt installiert. Wenn nicht zu / opt, wo soll ich es dann installieren? Und wie geht das mit dpkg?
@Duke: Wenn Sie die Quelle des Deb-Pakets erhalten können, können Sie das Deb neu erstellen, um es wie normale Pakete auf dem System zu installieren. Dies erfordert ein wenig Arbeit, wenn Sie noch nicht mit dem Verfahren vertraut sind, aber imo ist dies das Richtige.
Faheem Mitha
1
stimme dieser Antwort nicht zu. Es gibt viele Situationen, in denen zwei Softwareversionen installiert werden sollen. Sie können problemlos eine bestimmte Python für eine bestimmte Anwendung benötigen. Ein lokaler Systemadministrator möchte diese Python möglicherweise verpacken. Wohin soll sie gehen? Lokal installierte (make install) Software geht in / usr / local, 3. Software geht in / opt / - die Definition von Paketen wird weit gefasst: über dpkg, über Installer, über PIP, über (Insert Packaging System der Wahl). Ich bin damit einverstanden, dass es sich um eine bewährte Methode für eigenständige "Anbieter / Pakete" handelt.
Ashwoods
4

/optist für Software von Drittanbietern. Es gibt ein Couchdb-Paket für Debian (ich meine, offiziell). Wenn Sie also ein anderes heruntergeladen haben, ist es in Ordnung, es muss in /optoder /usr/local/binentweder installiert sein.

D4RIO
quelle
2

Obwohl es nicht Debian ist, sind die Fedora-Verpackungsrichtlinien diesbezüglich ziemlich klar:

… Kein Fedora-Paket kann Dateien oder Verzeichnisse unter / opt oder / usr / local haben…

Der Grund dafür, dass Pakete keine Dinge in / opt einfügen, ist ganz einfach: Wie bereits erwähnt, besagt der Dateihierarchiestandard, dass…

Distributionen können Software in / opt installieren, dürfen jedoch keine vom lokalen Systemadministrator installierte Software ohne Zustimmung des lokalen Systemadministrators ändern oder löschen.

Dies kann von Paketen nicht garantiert werden, da eine Installation oder ein Update solche Daten ändern kann.

Ich weiß, dass Fedora nicht Debian ist, aber ich denke, dass sie in diesem Fall ziemlich ähnlich sind. Zumal Lintian, das Paketprüfungstool für Debian, einen speziellen Fehler aufweist: dir-or-file-in-opt

Lars Kiesow
quelle