Ist es möglich, ein Programm auf einem externen Laufwerk zu installieren?

9

Ich verwende Ubuntu 14.04 auf einem Toshiba-Chromebook mit Crouton. Das Laufwerk, auf dem mein Betriebssystem installiert ist, ist klein und verfügt nur über 3,6 GB freien Speicherplatz. Ich möchte sageauf meinem System installieren , sagebenötige jedoch 6 GB freien Speicherplatz auf dem System.

Ich habe jedoch immer eine SD-Karte im Gerät. Die Karte verfügt über 175 GB freien Speicherplatz. Ist eine Installation sageauf der SD-Karte möglich?

Die Art und Weise, wie ich versuche, sagemit den Befehlen herunterzuladen

apt-add-repository -y ppa:aims/sagemath
apt-get update
apt-get install sagemath-upstream-binary

wie hier gefunden .

Brian Fitzpatrick
quelle
Wie installierst du Sage? Aus Deb-Paketen? Durch Auspacken eines Archivs? Durch Kompilieren aus dem Quellcode?
Gilles 'SO - hör auf böse zu sein'
@ Gilles Ich habe gerade die Frage aktualisiert, um anzugeben, wie ich installiere sage.
Brian Fitzpatrick

Antworten:

4

Es ist schwierig, Debian-Pakete paketweise auf verschiedene Festplatten aufzuteilen. Dafür gibt es keine Unterstützung. Sie müssten dpkgdie Pakete, die Sie an einem nicht standardmäßigen Speicherort installieren möchten, separat aufrufen .

Das Einfügen eines Verzeichnisbaums auf eine separate Festplatte ist einfach. Zum Glück für Sie installieren die Sage-Pakete in der PPA, soweit ich anhand einer kurzen Durchsicht erkennen kann, die meisten Dateien in /usr/lib/sagemath. Sie können das einfach auf die SD-Karte legen. Angenommen, die SD-Karte ist (sofern vorhanden) darauf montiert /media/sdcard. Erstellen Sie dort ein Verzeichnis und stellen Sie einen symbolischen Link her.

mkdir /media/sdcard/sagemath
ln -s /media/sdcard/sagemath /usr/lib/sagemath

Dann /usr/lib/sagemathlanden alle Dateien, unter denen dpkg installiert wird, auf der SD-Karte (unabhängig davon, von welchem ​​Paket sie stammen).

Wenn Sie versuchen, Sage zu verwenden oder die Sage-Pakete zu verwalten, während die SD-Karte nicht vorhanden ist, wird eine Fehlermeldung angezeigt. Wenn Sie die SD-Karte einlegen und die Aktion wiederholen, wird kein Schaden angerichtet.

Gilles 'SO - hör auf böse zu sein'
quelle
Danke für die Tipps. Ich habe Ihre Vorschläge befolgt und installiert sage. Ausgabe von $ sageRetouren bash: /usr/bin/sage: Permission denied.
Brian Fitzpatrick
Sie benötigen ein externes Laufwerk mit einem UNIX-Dateisystem (wie ext4, btrfs usw.), wenn Sie Attribute wie "ausführbare Datei" und Eigentümer- / Gruppeninformationen benötigen.
Ned64
@ Ned64 Meine SD-Karte hat ext4.
Brian Fitzpatrick
@BrianFitzpatrick Ich wollte sagen, dass Sie posixovlfs zusätzlich zu vfat benötigen, aber da dies ext4 ist, sollten Sie nichts Besonderes benötigen. Obwohl… wie montieren Sie die SD-Karte? Wenn Sie die userOption in haben /etc/fstab, fügen Sie die execOption hinzu.
Gilles 'SO - hör auf böse zu sein'
@ Gilles Meine etc/fstabliest# UNCONFIGURED FSTAB FOR BASE SYSTEM
Brian Fitzpatrick
4

Dies ist eine interessante Frage. Lassen Sie uns einige Möglichkeiten diskutieren, wie dies versucht werden könnte.

Methode 1: Bearbeiten des Speicherorts während der Installation von apt-get

Mit apt-get wäre dies nicht möglich. Wenn Sie mit .debDateien installieren , ist dies wiederum nicht möglich. Der Grund ist einfach, dass der Speicherort für die Installation in diesen Paketen fest codiert ist.

Um den Installationsort zu bearbeiten, müssen Sie ihn sageaus dem Quellcode kompilieren und ändern, makefilebevor Sie ihn installieren. Dies wird mit der Verwaltung der Abhängigkeiten verbunden sein.

Es gab jedoch Diskussionen darüber. Vielleicht haben es die Leute getan. Vielleicht haben sie den Installationsort irgendwie manipuliert. Sehen Sie hier und hier . Wenn Sie einen Weg finden, dies zu tun, fügen Sie bitte einen Kommentar hinzu.

Methode 2: Ändern des Speicherorts des Ordners / usr

Sie können den Speicherort des /usrOrdners selbst ändern und auf Ihre externe Karte übertragen. Normalerweise wird davon abgeraten, aber da Sie sagen, dass Sie es immer eingefügt lassen, sollte es in Ordnung sein.

Dazu gibt es zwei Möglichkeiten:

  1. (Vorzuziehen) Erstellen Sie eine Partition auf Ihrer externen Karte und übertragen Sie den gesamten Inhalt des aktuellen /usrOrdners auf diese Partition. Ändern Sie dann Ihre /etc/fstab, um diese Partition als /usrOrdner bereitzustellen, und entfernen Sie den alten /usrOrdner vollständig. Um all dies zu tun, müssen Sie von einer Rettungs-CD oder einer Live-CD / USB booten.

  2. Booten Sie auch bei dieser Methode zuerst von einer Rettungs-CD oder einer Live-CD / USB, verschieben Sie den /usrOrdner auf die externe Karte und erstellen Sie dann einen Symlink zum neuen /usrOrdner.

PS

Dies ist eine interessante Frage, über die ich in letzter Zeit nachgedacht habe, als meine Festplatte voll wurde. Ich werde einige dieser Dinge ausprobieren und meine Antwort aktualisieren. Kommentare sind willkommen, um einige dieser Methoden zu kritisieren.

AKTUALISIEREN

Siehe auch @gilles Antwort. Sein Vorschlag ist besser. Anstatt den gesamten /usrOrdner auf die externe Karte zu verschieben, verschieben Sie den Ordner einfach /usr/lib/sagemathauf die externe Karte, da diese etwa 3,1 GB Ihrer Installation belegt. In Methode 2 können Sie diesen Ordner also anstelle von verschieben /usr.

Shivams
quelle
Wenn Sie /usrauf die SD-Karte wechseln, wird das System unbrauchbar, wenn die SD-Karte nicht vorhanden ist. Das ist keine gute Idee.
Gilles 'SO - hör auf böse zu sein'
Ja. Das OP hat jedoch erwähnt, dass die Karte IMMER eingelegt bleibt. Ich habe dies in meiner Antwort erwähnt.
Shivams
@ Gilles ich nur deine Antwort. Ihr Vorschlag ist definitiv besser.
Shivams