¿Es posible instalar un programa en una unidad externa?

9

Ejecuté Ubuntu 14.04 en un Chromebook Toshiba con crouton. La unidad en la que está instalado mi sistema operativo es pequeña, con solo 3.6 GB de espacio libre. Me gustaría instalar sageen mi sistema, pero sagerequiere 6 GB de espacio libre en el sistema.

Sin embargo, siempre mantengo una tarjeta SD insertada en la unidad. La tarjeta tiene 175 GB de espacio libre. ¿Es posible instalar sageen la tarjeta SD?

La forma en que intento descargar sagecon los comandos

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

como se encuentra aquí .

Brian Fitzpatrick
fuente
¿Cómo estás instalando Sage? ¿De paquetes deb? ¿Desempacando un archivo? Al compilar desde la fuente?
Gilles 'SO- deja de ser malvado'
@Gilles Acabo de actualizar la pregunta para incluir cómo estoy instalando sage.
Brian Fitzpatrick

Respuestas:

4

Dividir paquetes Debian en diferentes discos paquete por paquete es difícil. No hay soporte para eso; tendría que invocar por dpkgseparado en los paquetes que desea instalar en una ubicación no predeterminada.

Poner un árbol de directorios en un disco separado es fácil. Afortunadamente para usted, por lo que puedo deducir de una lectura rápida, los paquetes de Sage en el PPA instalan la mayoría de los archivos /usr/lib/sagemath. Puede ponerlo fácilmente en la tarjeta SD. Digamos que la tarjeta SD está montada (cuando está presente) /media/sdcard. Crea un directorio allí y crea un enlace simbólico.

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

Luego, todos los archivos en los que se instala dpkg /usr/lib/sagemathterminarán en la tarjeta SD (independientemente del paquete del que provengan).

Si intenta usar Sage o administrar los paquetes de Sage mientras la tarjeta SD no está presente, recibirá un mensaje de error, y si inserta la tarjeta SD y repite la acción, no habrá daños.

Gilles 'SO- deja de ser malvado'
fuente
Gracias por los consejos. He seguido tus sugerencias e instalado sage. Sin embargo, la emisión de $ sagedevoluciones bash: /usr/bin/sage: Permission denied.
Brian Fitzpatrick
Necesita la unidad externa para tener un sistema de archivos de tipo UNIX (como ext4, btrfs, etc.) si necesita atributos como "ejecutable" e información del propietario / grupo.
Ned64
@ Ned64 Mi tarjeta SD tiene ext4.
Brian Fitzpatrick
@BrianFitzpatrick Iba a decir que necesitas posixovlfs encima de vfat, pero como es ext4 no deberías necesitar nada especial. Aunque ... ¿cómo estás montando la tarjeta SD? Si tiene la useropción /etc/fstab, agregue la execopción.
Gilles 'SO- deja de ser malvado'
@Gilles Mis etc/fstablecturas# UNCONFIGURED FSTAB FOR BASE SYSTEM
Brian Fitzpatrick
4

Esta es una pregunta interesante. Discutamos algunas maneras en que esto podría intentarse.

Método n. ° 1: manipulación de la ubicación durante la instalación de apt-get

Usando apt-get, no sería posible hacerlo. Si está instalando usando .debarchivos, nuevamente no es posible. La razón es simplemente que la ubicación para la instalación está codificada en estos paquetes.

Para manipular la ubicación de instalación, deberá compilar sagedesde la fuente y modificarla makefileantes de instalarla. Esto vendrá con la carga de administrar las dependencias.

Sin embargo, ha habido discusiones al respecto. Quizás, la gente lo ha hecho. Quizás hayan manipulado de alguna manera la ubicación de la instalación. Mira aquí y aquí . Si encuentra alguna forma de hacerlo, agregue un comentario.

Método # 2: Cambiar la ubicación de la carpeta / usr

Puede cambiar la ubicación de la /usrcarpeta y transferirla a su tarjeta externa. Por lo general, esto se desaconsejaría, pero como usted dice que siempre lo mantiene insertado, debería estar bien.

Para hacer esto, hay 2 formas:

  1. (Preferible) Cree una partición en su tarjeta externa y transfiera todo el contenido de la /usrcarpeta actual a esa partición. Luego, modifique su /etc/fstabpara montar esa partición como la /usrcarpeta y elimine la /usrcarpeta anterior por completo. Para hacer todo esto, deberá iniciar desde algún disco de rescate o algún CD / USB en vivo.

  2. También en este método, primero inicie desde algún disco de rescate o CD / USB en vivo y luego mueva la /usrcarpeta a la tarjeta externa y luego cree un enlace simbólico a la nueva /usrcarpeta.

PD

Esta es una pregunta interesante, algo en lo que he estado pensando últimamente cuando mi disco duro se estaba llenando. Probaré algunas de estas cosas y actualizaré mi respuesta. Los comentarios son bienvenidos para criticar algunos de estos métodos.

ACTUALIZAR

También vea la respuesta de @gilles. Su sugerencia es mejor. En lugar de mover toda la /usrcarpeta a la tarjeta externa, simplemente /usr/lib/sagemathmuévala a la tarjeta externa porque ocupa aproximadamente 3.1 GB de su instalación. Entonces, en el Método # 2 , podría mover esta carpeta en lugar de /usr.

shivams
fuente
Pasar /usra la tarjeta SD inutilizaría el sistema cuando la tarjeta SD no esté presente. Esta no es una buena idea.
Gilles 'SO- deja de ser malvado'
Si. Pero el OP ha mencionado que la tarjeta SIEMPRE se mantendrá insertada. He mencionado esto en mi respuesta.
Shivams
@Gilles, acabo de responder. Su sugerencia es definitivamente mejor.
Shivams