Est-il possible d'installer un programme sur un disque externe?

9

J'exécute Ubuntu 14.04 sur un Chromebook Toshiba en utilisant Crouton. Le lecteur sur lequel mon système d'exploitation est installé est petit, avec seulement 3,6 Go d'espace libre. Je voudrais installer sagesur mon système mais sagenécessite 6 Go d'espace libre sur le système.

Cependant, je garde toujours une carte SD insérée dans l'appareil. La carte dispose de 175 Go d'espace libre. Est-il possible d'installer sagesur la carte SD?

La façon dont j'essaie de télécharger sageavec les commandes

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

comme on le trouve ici .

Brian Fitzpatrick
la source
Comment installez-vous Sage? Des paquets deb? En déballant une archive? En compilant depuis la source?
Gilles 'SO- arrête d'être méchant'
@Gilles Je viens de mettre à jour la question pour inclure comment j'installe sage.
Brian Fitzpatrick

Réponses:

4

Il est difficile de diviser les paquets Debian sur différents disques paquet par paquet. Il n'y a aucun support pour cela; vous devez invoquer dpkgséparément les packages que vous souhaitez installer dans un emplacement autre que celui par défaut.

Mettre une arborescence de répertoires sur un disque séparé est facile. Heureusement pour vous, pour autant que je puisse en juger par une lecture rapide, les packages Sage dans le PPA installent la plupart des fichiers /usr/lib/sagemath. Vous pouvez facilement mettre cela sur la carte SD. Disons que la carte SD est montée (lorsqu'elle est présente) sur /media/sdcard. Créez-y un répertoire et créez un lien symbolique.

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

Ensuite, tous les fichiers sous lesquels dpkg s'installe /usr/lib/sagemathse retrouveront sur la carte SD (quel que soit le paquet dont ils proviennent).

Si vous essayez d'utiliser Sage ou de gérer les packages Sage alors que la carte SD n'est pas présente, vous obtiendrez un message d'erreur, et si vous insérez la carte SD et répétez l'action, il n'y aura aucun mal.

Gilles 'SO- arrête d'être méchant'
la source
Merci pour les conseils. J'ai suivi vos suggestions et installé sage. Cependant, l'émission de $ sageretours bash: /usr/bin/sage: Permission denied.
Brian Fitzpatrick
Vous avez besoin du lecteur externe pour avoir un système de fichiers de type UNIX (comme ext4, btrfs, etc.) si vous avez besoin d'attributs comme "exécutable" et d'informations sur le propriétaire / groupe.
Ned64
@ Ned64 Ma carte SD est ext4.
Brian Fitzpatrick,
@BrianFitzpatrick J'allais dire que vous avez besoin de posixovlfs en plus de vfat, mais comme c'est ext4, vous ne devriez pas avoir besoin de quelque chose de spécial. Bien que… comment montez-vous la carte SD? Si vous avez l' useroption dans /etc/fstab, ajoutez l' execoption.
Gilles 'SO- arrête d'être méchant'
@Gilles Mes etc/fstablectures# UNCONFIGURED FSTAB FOR BASE SYSTEM
Brian Fitzpatrick
4

C'est une question intéressante. Laissez-nous discuter de quelques façons dont cela pourrait être tenté.

Méthode n ° 1: manipulation de l'emplacement lors de l'installation d'apt-get

En utilisant apt-get, il ne serait pas possible de le faire. Si vous installez à l'aide de .debfichiers, ce n'est pas possible. La raison en est simplement que l'emplacement d'installation est codé en dur dans ces packages.

Pour manipuler l'emplacement d'installation, vous devrez compiler à sagepartir de la source et le modifier makefileavant de l'installer. Cela entraînera une charge de gestion des dépendances.

Cependant, il y a eu des discussions à ce sujet. Peut-être que les gens l'ont fait. Peut-être qu'ils ont en quelque sorte manipulé l'emplacement d'installation. Voir ici et ici . Si vous trouvez un moyen de le faire, veuillez ajouter un commentaire.

Méthode n ° 2: modification de l'emplacement du dossier / usr

Vous pouvez modifier l'emplacement du /usrdossier lui-même et le transférer sur votre carte externe. Habituellement, cela serait déconseillé, mais puisque vous dites que vous le gardez toujours inséré, cela devrait donc aller.

Pour ce faire, il existe 2 façons:

  1. (De préférence) Créez une partition sur votre carte externe et transférez tout le contenu du /usrdossier actuel vers cette partition. Ensuite, modifiez votre /etc/fstabpour monter cette partition en tant que /usrdossier et supprimez /usrcomplètement l'ancien dossier. Pour faire tout cela, vous devrez démarrer à partir d'un disque de secours ou d'un CD / USB en direct.

  2. Dans cette méthode également, démarrez d'abord à partir d'un disque de secours ou d'un CD / USB en direct, puis déplacez le /usrdossier vers la carte externe, puis créez un lien symbolique vers le nouveau /usrdossier.

PS

C'est une question intéressante, quelque chose à laquelle j'ai pensé récemment alors que mon disque dur se remplissait. Je vais essayer certaines de ces choses et mettre à jour ma réponse. Les commentaires sont les bienvenus pour critiquer certaines de ces méthodes.

MISE À JOUR

Voir aussi la réponse @gilles. Sa suggestion est meilleure. Au lieu de déplacer tout le /usrdossier sur la carte externe, déplacez simplement le /usr/lib/sagemathsur la carte externe car il occupe environ 3,1 Go de votre installation. Ainsi, dans la méthode # 2 , vous pouvez déplacer ce dossier au lieu de /usr.

shivams
la source
Passer /usrà la carte SD rendrait le système inutilisable lorsque la carte SD n'est pas présente. Ce n'est pas une bonne idée.
Gilles 'SO- arrête d'être méchant'
Oui. Mais l'OP a mentionné que la carte sera TOUJOURS insérée. Je l'ai mentionné dans ma réponse.
shivams
@ Gilles, je viens de votre réponse. Votre suggestion est certainement meilleure.
shivams