Aus meinen Nachforschungen geht hervor, dass alle Paketmanager darauf bestehen, als privilegierter Benutzer verwendet zu werden, und dass sie in installiert werden müssen /
.
Normalerweise erstelle ich gerne ein Wegwerfkonto, kompiliere Software und installiere sie $HOME
für dieses Konto. Ich kann verschiedene Setups ausprobieren und wenn ich fertig bin, zerstöre ich einfach das Konto.
Das Kompilieren von Software wird jedoch mühsam.
Meine Erfahrung ist eigentlich nur auf beschränkt yum
, aber ich verstehe nicht, warum ich eine Repo-Datei nicht ablegen ~/etc/yum.repos.d
und alles auf einem Home-Account installieren kann.
Gibt es einen Grund, warum Paketmanager als berechtigter Benutzer zum Installieren von Software verwendet werden müssen?
/bin
), oder es kann davon ausgehen, dass es an einem von --prefix angegebenen Ort installiert ist. Während letztere möglicherweise von diesen Projekten umgangen werden, sind für erstere Patches für den Quellcode erforderlich./
Windows installiert werden. Dies klingt nach einer Anforderung, die vielleicht vor 30 Jahren gerechtfertigt sein könnte, aber jetzt noch nicht. Ist dasenv
Programm nicht dazu gedacht, solche Probleme zu lösen? Wenn nicht, ist es einfach, ein Schema für die Konfiguration einer beliebigen Binärdatei zu entwickeln, um an bestimmten Stellen nach anderen Binärdateien zu suchen./etc
oder (nach meinem Wissen)/usr/lib/<packagename>/
oder/usr/libexec/<packagename>/
./usr/share
kann durch XDG-Variablen geändert werden, die irgendwann in diesem Jahrhundert veröffentlicht wurden und nicht unbedingt für ältere Programme übernommen wurden.Es gibt ein Paketmanager-Projekt - Nix - mit einer interessanten Grundidee (ein " funktionaler " Paketmanager), der auch eine benutzerspezifische Operation unterstützt:
HINWEIS, DEN ICH HINZUFÜGEN MÖCHTE:
Nix
Sollte in einem Unix-ähnlichen System Ihrer Wahl (z. B. einer Linux-Distribution) verwendbar sein.Es gibt auch eine große Sammlung von Paketen, die mit dem Nix-Paketmanager installiert werden können - Nixpkgs -, der für eine Reihe von Plattformen erstellt wurde :
und eine zugehörige Distribution - NixOS :
und ein zugehöriges "kontinuierliches" Build-System - Hydra .
quelle
nix
undguix
. Da ich jetzt wirklichnix
für meine Arbeit verwende, möchte ich wissen, ob ich eineguix
weitere Implementierung des Tools in Betracht ziehen kann, das ich benötige. Kann ich irgendwo eine Zusammenfassung der Unterschiede lesen? Vielleicht könnten Sie hier sogar eine Antwort mit einer solchen Zusammenfassung schreiben und eine weitere alternative Lösung ankündigen?Erstens liegt es an Abhängigkeiten. Einige Pakete können möglicherweise nicht von einem Benutzer installiert werden, z. B. PolicyKit. Daher würde es eine zusätzliche Belastung für den Packager bedeuten, der seine Freizeit spendet und das Installieren des Programms normalerweise so einfach ist wie das Eingeben
sudo
(Einzelplatz) oder das Nörgeln des Administrators.Es gibt Optionen für die Installation in $ HOME
./configure --prefix=$HOME/sandbox --enable-cool-feature && make all install
(oder Variationen wie jhbuild).quelle
Ich verwende JuJu, das im Grunde genommen erlaubt, eine wirklich winzige Linux-Distribution (die nur den Paketmanager enthält) in Ihrem $ HOME / .juju-Verzeichnis zu haben.
Es ermöglicht Ihnen, Ihr benutzerdefiniertes System innerhalb des Home-Verzeichnisses über Proot zugänglich zu machen. Daher können Sie alle Pakete ohne Root-Rechte installieren. Es wird ordnungsgemäß auf allen wichtigen Linux-Distributionen ausgeführt. Die einzige Einschränkung besteht darin, dass JuJu auf einem Linux-Kernel mit der empfohlenen Mindestversion 2.6.32 ausgeführt werden kann.
quelle
Ein anderes mit einem etwas anderen Modell ist 0install . Es basiert auf der Idee, dass Sie Pakete nicht wirklich installieren, sondern sie lediglich in einem globalen Namespace ausführen, der die gewünschte Software herunterlädt, bei Bedarf kompiliert und im Cache speichert.
quelle
Wenn Sie in der Lage sind, aus dem Quellcode zu kompilieren und Abhängigkeiten selbst aufzulösen, und hauptsächlich möchten, dass der Paketmanager die Bereitstellungs- / Aufhebungs- / Aktualisierungsvorgänge ausführt, sollten Sie sich GNU Stow oder das etwas verbesserte XStow ansehen . Mit ihnen inszenieren Sie die Installation in einem separaten Verzeichnis (normalerweise unter
$PREFIX/stow
) und stellen dann von Ihrem tatsächlichen Präfix aus Symlinks zur Software her. Dies macht es einfach, die Software dann vollständig zu entfernen. Ich verwalte damit erfolgreich meine individuell installierte Software an meiner Universität.quelle
Die Mainstream-Linux-Paketmanager betrachten die Welt als einen Systemadministrator, bei dem die Maschine eine Einheit ist. Auf diese Weise erhalten Sie Antworten auf Fragen wie "Welche ausstehenden Errata gelten für System X?" Und "Wie unterscheiden sich System X und System Y?". Dies ermöglicht es yum auch, "einen Verlauf" zu haben, der verwendbar ist, rpmdb-Versionen hat und Dinge wie "yum --security update" usw. ausführt.
Es gibt einige Paketmanager wie Zero-Install, die versuchen, die Welt so darzustellen, wie ein Benutzer es tun würde. welche Anwendungen tun ich Zugriff haben.
Sie mögen denken, dass das spätere Modell ein besseres ist, aber IMNSHO gibt es einen Grund, warum Sie nicht von Zero-Install gehört haben, sondern von Yum.
quelle
Es gibt ein neues Kind auf dem Block: " JuNest (Jailed User NEST) - Die Arch Linux-basierte Distribution, die auf jeder Linux-Distribution ohne Root-Zugriff läuft." @ https://github.com/fsquillace/junest Der Vorteil ist, dass keine neue Art von Paketformat eingeführt wird. Nach einer sehr einfachen Installation (Minimum: ca. 320M) wird das komplette Arch Linux-Repository (mehr als 13000) erstellt Pakete ATM) ist an Ihren Fingerspitzen.
quelle
Die von Slackware speziell verwendeten Tools
installpkg
können. Von der Manpage:Ich kenne jedoch keines der besseren Frontends, die dazu in der Lage sind (z
slapt-get
. B. kann ich das meines Wissens nicht). Theoretisch sollten Sie in der Lage sein, einen Aliasinstallpkg
zu erstelleninstallpkg --root ~/Apps
- ich denke jedoch, dass die meisten Frontends root erfordern, um ausgeführt zu werden, was den Punkt zunichte macht.quelle
Ich würde vorschlagen, http://linuxbrew.sh/
Es ist im Grunde genommen eine Fork of Brew für MacOS und hat vorkompilierte Binärdateien für die Verwendung ...
Besonders geeignet für ältere gcc-Versionen.
Wenn Sie wirklich von Hand installieren möchten, finden Sie unter http://www.linuxfromscratch.org/ eine nützliche Anleitung.
quelle
Yum muss in die Datenbank schreiben, deren Eigentümer root ist. Aus diesem Grund können Sie es nicht als normaler Benutzer verwenden.
Sie können versuchen, RPM-Dateien (rpm2cpio package.rpm | cpio -idmv) in einem Verzeichnis Ihrer Wahl zu dekomprimieren.
Wenn Sie Ihr Programm ausführen, müssen Sie jedoch darauf achten, LD_LIBRARY_PATH zu ändern, um die abhängigen Bibliotheken zu laden. Auch dies wird keine Abhängigkeiten berücksichtigen.
Beispiel:
Die oben genannten haben keine abhängigen Bibliotheken, sonst müssten Sie so etwas wie verwenden:
quelle