Wie kann ich ein Paket ohne Root-Zugriff installieren?

126

Ich habe auf diesem Computer keinen Root-Zugriff .

Ich möchte wissen, ob es eine Möglichkeit gibt, Ubuntu-Pakete herunterzuladen und als Nicht-Root-Benutzer zu installieren.

Wahrscheinlich in meinem ~/binoder ~/usr/shareoder so? Funktioniert das?

Weboide
quelle
1
Hoffentlich werden sie es bald unterstützen.
Domi
4
Sie könnten tragbare Apps für Linux verwenden: keine Installation, kein Root erforderlich. Finden Sie es bei appimage.org . Sogar Linus Torvalds mag es. Das ist seltsam, denn Linus mag nie etwas.
Ipse Laute
Ich schlage vor, fakechroot zu versuchen .
Robert Pollak
Eine Kombination aus dpk -xund mvarbeitete für mich. Oder, wenn dpknicht einmal verfügbar ist arund das Leiten / Kombinieren mit tarbei mir auf sehr eingeschränkten Systemen funktioniert hat, siehe hier
iolsmit
Verwandte unter Unix & Linux : Nicht-Root-Paketmanager
Eliah Kagan

Antworten:

107

Apt unterstützt es nicht direkt, aber es gibt Möglichkeiten, dies zu tun.

Eine Möglichkeit besteht schrootdarin, eine Nicht-Root-Chroot zu erstellen. Dies ist ein etwas umständlicher Prozess , aber Sie sollten in der Lage sein, Community-Hilfe für so viele Entwickler zu finden, die Chroot-Umgebungen zum Kompilieren von Code einrichten.

Der zweite Weg, den ich kenne, ist die Installation von einem .deb-Paket. Sie können dies möglicherweise von einer Website herunterladen oder in den Ubuntu-Repositorys, mit denen Sie es herunterladen können.

apt-get download package

Ersetzen Sie packagedurch den Namen des Pakets

Sobald Sie Ihre Deb-Datei haben, rufen Sie dpkgdirekt von der Kommandozeile aus auf. Im folgenden Beispiel wird package.deb in Ihrem Ausgangsverzeichnis installiert.

dpkg -i package.deb --force-not-root --root=$HOME 

Der Nachteil bei der Verwendung von dpkg ist, dass Fehlermeldungen wahrscheinlich kryptisch sind. dpkg löst Abhängigkeiten nicht automatisch auf oder erstellt die erwartete Verzeichnisstruktur.

Schließlich können Sie den apt-get sourceBefehl verwenden, um die Quelle des Pakets abzurufen und für die lokale Installation zu konfigurieren. Normalerweise sieht das so aus:

apt-get source package
cd package
./configure --prefix=$HOME
make
make install

Der Nachteil dieses Ansatzes besteht darin, dass Sie die für diesen Ansatz verfügbare Entwicklungsumgebung benötigen, um überhaupt funktionieren zu können, und möglicherweise Dutzende von Paketen kompilieren müssen, um alle Abhängigkeiten aufzulösen.

BEARBEITEN:

Da dpkg -ies nicht funktioniert (siehe Kommentare), schlage ich diese Alternative vor:

dpkg -x package.deb dir

Dadurch wird das DEB-Paket in dir extrahiert. Dann können Sie den Pfad exportieren, in dem sich die Binärdatei befindet. Solange alle Abhängigkeiten der Binärdatei installiert sind, sollte sie normal ausgeführt werden.

jbowtie
quelle
1
Wenn Sie Root-Zugriff haben, aber ein bestimmtes Paket nicht global installieren möchten, können Sie damit sudo apt-get build-dep packagealles installieren, was zum Erstellen eines Pakets erforderlich ist (nachdem Sie dessen Quelle mit erhalten haben apt-get source).
Vladimir Panteleev
19
Diese Antwort wurde bereits 2010 geschrieben. Wurden seitdem Änderungen an der Vorgehensweise vorgenommen?
Becko
36
Sogar mit --force-not-root bekomme ich "dpkg: error: angeforderte Operation erfordert Superuser-Privileg"
Clément
10
Leute, --force-not-root --root=$HOMEoder Variationen davon werden nicht funktionieren. Debian-Binärpakete sind nicht für die Installation im Home-Verzeichnis vorgesehen. Oder anders ausgedrückt: "Im folgenden Beispiel wird package.deb in Ihrem Ausgangsverzeichnis installiert." Nein, das wird es nicht.
Faheem Mitha
1
Leider geht das nicht. Ich versuchte--force-not-root --root=/your/custom/path
Viet
16

Ich nehme an du willst jedit installieren . Zuerst müssen Sie das Paket finden und herunterladen. Ich nehme einfach die Deb-Datei von einem Spiegel und öffne eine Konsole / ein Terminal:

  1. mkdir /tmp/jedit && cd /tmp/jedit- Erstellt ein neues Verzeichnis tmpund ändert es.
  2. wget http://mirrors.kernel.org/ubuntu/pool/universe/j/jedit/jedit_4.3.1.dfsg-0ubuntu1_all.deb - Paket herunterladen
  3. ar x jedit_4.3.1.dfsg-0ubuntu1_all.deboder, einfach zu tippen, ar x *.deb- das extrahiert den Dateiinhalt
  4. tar xvzf data.tar.gz- Die Datei data.tar.gzenthält alles, was Sie zum Ausführen der Software benötigen
  5. usr/bin/jedit öffnet den Editor
  6. getan :-)

Sie können die Dateien an einen bestimmten Punkt in Ihrem Home-Verzeichnis verschieben und von dort aus ausführen.

qbi
quelle
11
Beachten Sie, dass Skripts vor und nach der Installation nicht ausgeführt werden. Außerdem müssen Sie alle Abhängigkeiten und Pfade selbst auflösen. Bei einer Standardinstallation ist dies jedoch für viele Desktopanwendungen ausreichend.
Bowtie
Sie können das Paket auch herunterladen, ohne danach zu suchen. Laden Sie es einfach mit apt-get herunter (siehe andere Antwort)
lib
Ich glaube, Ihr Link ist kaputt.
Winnemucca
9

Ich habe ein Programm namens JuJu geschrieben, das im Grunde genommen eine winzige Linux-Distribution (die nur den Paketmanager enthält) in Ihrem $ HOME / .juju-Verzeichnis erlaubt.

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.

Zum Beispiel, nach der Installation von JuJu, um jedit zu installieren:

$>juju -f
(juju)$> pacman -S jedit
(juju)> jedit
user967489
quelle
Dies wird auf Ubuntu gut funktionieren, oder?
Seth
Ja, wenn die Linux-Kernel-Version von Ubuntu größer oder gleich 2.6.32 ist, wird es funktionieren.
user967489
2
Zuerst dachte ich , Sie sprechen dies . Das zweite großgeschriebene j macht den Unterschied.
kon psych
1
Die Frage war, ob wir das Ubuntu-Paket installieren könnten. Mit junest können wir nur das ArchLinux-Paket und NICHT ein Ubuntu-Paket installieren. Wenn zum Beispiel dasselbe Paket für ArchLinux nicht verfügbar ist, hilft dies nicht. Das heißt, danke für Junest.
Kiran