Dies ist wahrscheinlich eine dumme Frage, aber ich habe kürzlich festgestellt, dass ich keine Ahnung habe, warum es mit apt-get keine Einzelbenutzerfunktionalität gibt.
Antworten, nach denen ich nicht suche:
- "Es liegt daran, dass apt in Verzeichnisse auf Systemebene schreibt". Dies ist das Warum auf Oberflächenebene, aber ich suche eine Ebene tiefer. Gibt es etwas, das eine Einzelbenutzerumgebung grundlegend blockiert (a la pip + virtualenv)?
- "Sie können einfach aus dem Quellcode erstellen". Dies ist eine Problemumgehung, geht aber nicht auf meine Frage ein. Ich möchte kein kurzfristiges Problem beheben und habe ohnehin Root-Zugriff auf alle meine Computer.
Antworten:
Nicht immer. Sie können perfekt
apt-get
ohne verwendensudo
. Es gibt Fälle, in denen Sie überhaupt nichts benötigensudo
, z. B.apt-get download
das Herunterladen eines Pakets in Ihr aktuelles Verzeichnis ,apt-get source
das Herunterladen der Debian-Quelldateien in Ihr aktuelles Verzeichnis,changelog
das Herunterladen und Drucken des Änderungsprotokolls eines bestimmten Pakets und alle Befehle, die dies haben das--simulate
/--dry-run
/--no-act
(fallsinstall
du es auch brauchst--no-download
).Dies liegt daran, dass für diese Aktionen / Befehle keine Systemverzeichnisse geschrieben werden müssen.
Warum
apt-get
brauchtsudo
? Eigentlich nicht. Sie können apt-get loswerden, ein Paket mit herunterladen und das Paket in einem beliebigen Verzeichniswget
verwendendpkg --extract
und extrahieren. Es gibt auch--instdir
welche, die nur für Binärpakete funktionieren sollten.Warum ist dies nicht die Standardeinstellung? Weil es ein Schmerz ist. Um das zu tun, was Sie wollen, müssen wir jedes Paket zweimal neu verpacken, eines für den richtigen Weg und eines für das, was Sie wollen. Beim Erstellen müssen Binärdateien normalerweise wissen, wo sich die benötigten Dateien und Bibliotheken befinden (in einigen Fällen wird dies beim Kompilieren fest codiert).
Was können Sie stattdessen tun? Chrootieren Sie einfach eine Umgebung a la virtualenv, in der Sie Pakete ohne root installieren können.
Zusammenfassend ist dies nicht die Art und Weise, wie apt-get verwendet werden sollte, und ich kenne keinen anderen Paketmanager ähnlich wie apt-get, mit dem Sie dies tun können. Am Ende des Tages
apt-get
ist nur ein Front-End für dpkg, das etwas davon tun könnte.quelle
Die Informationen im Paket selbst bestimmen, wo Dateien installiert werden. Sie müssen also
sudo
sowohl in/
die Paketdatenbank schreiben als auch diese ändern.Wenn Sie Pakete installieren, installieren Sie vorgefertigte Binärdateien und zugehörige Konfigurations- und Metadateien und Skripts, die wesentliche Bestandteile des Pakets sind. Diese Skripte und Konfigurationsdateien sind eng mit Abhängigkeiten und dem Rest des Systems verknüpft. Sie möchten diese nicht leichtfertig ändern, wenn Sie nicht genau wissen, was Sie tun.
Wenn Sie sich auf einem System befinden, beispielsweise bei der Arbeit, auf das Sie keinen
sudo
Zugriff haben, können Sie aus dem Quellcode kompilieren und das Installationsverzeichnis auf Ihr Zuhause festlegen. Dann besteht keine Notwendigkeit fürsudo
. Wenn Sie von der Quelle installieren, ändern Sie im Allgemeinen nicht die Paketdatenbank.quelle
Es ist keine dumme Frage.
Berechtigungsstufen in einem Betriebssystem
Ubuntu - und in der Tat jedes moderne Betriebssystem - hat das Konzept unterschiedlicher Berechtigungsstufen für unterschiedliche Software. Von Benutzern initiierte Software wird normalerweise unter einer benutzerbasierten Berechtigungsstufe ausgeführt, die aus Sicherheitsgründen nicht über den erforderlichen Zugriff zum Ändern des Systems verfügt. Sie kann nur Dateien ändern, die diesem Benutzer gehören.
Um Änderungen am Betriebssystem vorzunehmen, die sich auf das gesamte System auswirken könnten, und nicht nur auf die Dateien des Benutzers, ist eine höhere Berechtigungsstufe erforderlich, die unter Linux als "Superuser" -Berechtigungen (oder allgemein als "Superuser" -Berechtigungen bezeichnet wird) genannt "root"). Diese Berechtigungsstufe hat uneingeschränkten Zugriff auf das gesamte Betriebssystem, sodass alle Dateien für alle Benutzer geändert oder zerstört werden können.
Die Rolle von apt-get
Wenn Sie Software über apt-get installieren, installieren Sie Software, die systemweit verfügbar ist . Das heißt, die Software wird nicht nur in das Home-Verzeichnis eines Benutzers gestellt, sondern nur von diesem Benutzer ausgeführt, sondern in einem systemweiten Anwendungsverzeichnis (z. B. in / usr, / etc, / var usw.) installiert ) zum Ausführen durch alle Benutzer. Um diese Verzeichnisse zu ändern, benötigen Sie Superuser-Berechtigungen. Kein nicht privilegierter Benutzer kann diese Verzeichnisse ändern, da sonst nicht privilegierte Software das System beeinträchtigen könnte.
Wenn Sie versuchen, etwas mit apt-get zu installieren, ohne apt-get Superuser-Berechtigungen zu erteilen, besteht die erste Hürde, die nicht überwunden werden kann, darin, eine Sperre zum Schreiben in den eigenen Softwarekatalog zu erhalten. Als systemweites Dienstprogramm verwaltet apt-get einen Katalog installierter Software, für dessen Bearbeitung natürlich Superuser-Berechtigungen erforderlich sind, damit nicht privilegierte Software nicht damit herumspielen kann. Aber selbst wenn Sie diese Hürde irgendwie überwinden könnten (z. B. durch Ändern der Dateiberechtigungen), schlagen viele weitere Schritte auf dem Weg zur Installation der Software fehl, da die Installationsroutine vom Schreiben in mehrere Systemverzeichnisse abhängt.
Unter Linux ist es möglich , Software ohne Superuser-Berechtigungen zu installieren. Sie müssen sie jedoch selbst schreiben (z. B. Shell-Skripte) oder selbst kompilieren und die kompilierten ausführbaren Dateien direkt ausführen. Es ist einfacher, es systemweit mit apt-get (und anderen APT-basierten Dienstprogrammen wie aptitude, synaptic oder dem Ubuntu-Softwarecenter) zu installieren, wenn Sie Zugriff darauf haben.
quelle
Warum wird apt-get standardmäßig in / (oder ähnlichen) Verzeichnissen installiert?
Der einfache Grund dafür ist, dass
apt-get
nicht entschieden wird, wo Software installiert werden soll. Es wird von den Entwicklern entschieden und in der Anwendung selbst codiert.Kann ich in andere Verzeichnisse installieren?
Ja, Sie können in anderen Verzeichnissen installieren. Für Open Source-Software rufen Sie die Quelle ab, ändern Sie das Installationsverzeichnis, kompilieren, erstellen und installieren Sie sie. Das enthaltene
configure
Skript enthält normalerweise eine Option, mit der Sie angeben können, wo installiert werden soll. Dies ist normalerweise--prefix
.Aber ich bestehe darauf, apt-get zu verwenden. Was nun?
IN ORDNUNG. Es gibt immer noch eine Möglichkeit, dies mit apt-get zu tun, obwohl es für einen Endbenutzer zu viel wäre. Folge den Schritten.
$HOME
.sudo apt-get update
.apt-get install package
.Das war zu einfach / schwer. Ist es möglich, während der Installation ein Verzeichnis auszuwählen?
Ja und nein.
Ja, da es möglich ist, verwenden einige Softwareprogramme diese Methode. Die einzige, die ich kenne, ist. Sie
Qt5
enthält eine .run- Datei, die bei der Ausführung neben vielen anderen Eingaben nach dem Installationsverzeichnis fragt.Nein, da diese Methode nicht verwendet wird
apt-get
.Könnte ich das eines Tages leicht machen
apt-get
?Ich glaube nicht, dass Entwickler
apt-get
und / oder Entwickler von Software daran interessiert wären, aber es kann eine Software entwickelt werden, die die Quell-, Änderungs-, Kompilierungs-, Build- und Installationsschritte automatisch ausführt, indem sie nur nach dem Installationsverzeichnis fragt.Mein 6. Sinn sagt mir, dass der Befehl sein würde
quelle
apt-get
Entwickler davon abhalten. Viele vorhandene Programme hängen auch von anderen Programmen ab und durchsuchen sie im Verzeichnis / usr. Die Implementierung einer solchen Funktionalität würde Änderungen in allen vorhandenen Softwareprogrammen erfordern, die Abhängigkeiten aufweisen (dies geht nicht in Tausenden)./opt/package
und ändern Sie stattdessen das Verzeichnis.$HOME/opt/
wenn sie keine Berechtigung zum Installieren von Paketen in/opt/
..Weil es Dateien bearbeitet, die chmodded sind, so dass Sie sie nicht verwenden können. Sie könnten in der Lage sein, sie zu modifizieren, so dass Sie nicht können, dass ich das nicht empfehlen kann
quelle