É possível instalar um programa em uma unidade externa?

9

Eu executo o Ubuntu 14.04 em um chromebook da Toshiba usando crouton. A unidade em que meu sistema operacional está instalado é pequena, com apenas 3,6 GB de espaço livre. Gostaria de instalar sageno meu sistema, mas sagerequer 6 GB de espaço livre no sistema.

No entanto, eu sempre mantenho um cartão SD inserido na unidade. O cartão tem 175 GB de espaço livre. É possível instalar sageno cartão SD?

A maneira como estou tentando fazer o download sagecom os comandos

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

como encontrado aqui .

Brian Fitzpatrick
fonte
Como você está instalando o Sage? Dos pacotes deb? Descompactando um arquivo? Compilando a partir do código-fonte?
Gilles 'SO- stop be evil'
@ Gilles Acabei de atualizar a pergunta para incluir como estou instalando sage.
Brian Fitzpatrick

Respostas:

4

É difícil dividir os pacotes Debian em diferentes discos, pacote por pacote. Não há suporte para isso; você teria que chamar dpkgseparadamente nos pacotes que deseja instalar em um local não padrão.

Colocar uma árvore de diretórios em um disco separado é fácil. Felizmente para você, pelo que sei de uma rápida leitura, os pacotes Sage no PPA instalam a maioria dos arquivos /usr/lib/sagemath. Você pode facilmente colocar isso no cartão SD. Digamos que o cartão SD esteja montado (quando presente) /media/sdcard. Crie um diretório lá e faça um link simbólico.

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

Todos os arquivos sob os quais o dpkg instala /usr/lib/sagemathserão finalizados no cartão SD (independentemente do pacote de origem).

Se você tentar usar o Sage ou gerenciar os pacotes do Sage enquanto o cartão SD não estiver presente, você receberá uma mensagem de erro e, se você inserir o cartão SD e repetir a ação, não haverá danos.

Gilles 'SO- parar de ser mau'
fonte
Obrigado pelas dicas. Segui suas sugestões e instalei sage. No entanto, a emissão de $ sageretornos bash: /usr/bin/sage: Permission denied.
Brian Fitzpatrick
Você precisa que a unidade externa tenha um sistema de arquivos do tipo UNIX (como ext4, btrfs etc.) se precisar de atributos como "executável" e informações de proprietário / grupo.
Ned64
@ Ned64 Meu cartão SD possui o ext4.
Brian Fitzpatrick
@BrianFitzpatrick Eu ia dizer que você precisa do posixovlfs em cima do vfat, mas como esse é o ext4, você não precisa de nada de especial. Embora ... como você está montando o cartão SD? Se você tiver a useropção /etc/fstab, adicione a execopção.
Gilles 'SO- stop be evil'
@Gilles Minhas etc/fstableituras# UNCONFIGURED FSTAB FOR BASE SYSTEM
Brian Fitzpatrick
4

Esta é uma pergunta interessante. Vamos discutir algumas maneiras pelas quais isso poderia ser tentado.

Método # 1: Manipulando o local durante a instalação do apt-get

Usando o apt-get, não seria possível fazê-lo. Se você estiver instalando usando .debarquivos, novamente não será possível. O motivo é simplesmente que o local da instalação está codificado nesses pacotes.

Para manipular o local da instalação, você precisará compilar a sagepartir da fonte e modificá-la makefileantes de instalá-la. Isso virá com um ônus de gerenciar as dependências.

No entanto, houve discussões sobre isso. Talvez as pessoas tenham feito isso. Talvez eles tenham de alguma forma manipulado o local da instalação. Veja aqui e aqui . Se você encontrar alguma maneira de fazer isso, adicione um comentário.

Método 2: Alterando o local da pasta / usr

Você pode alterar o local da /usrprópria pasta e transferi-la para o seu cartão externo. Geralmente isso seria desencorajado, mas como você está dizendo que sempre o mantém inserido, deve ficar bem.

Para fazer isso, existem 2 maneiras:

  1. (Preferível) Crie uma partição no seu cartão externo e transfira todo o conteúdo da /usrpasta atual para essa partição. Em seguida, modifique seu /etc/fstabpara montar essa partição como a /usrpasta e remova a /usrpasta antiga por completo. Para fazer tudo isso, você precisará inicializar a partir de um disco de recuperação ou de um CD / USB ao vivo.

  2. Também neste método, primeiro inicialize a partir de algum disco de recuperação ou CD / USB ativo, mova a /usrpasta para o cartão externo e crie um link simbólico para a nova /usrpasta.

PS

Essa é uma pergunta interessante, algo sobre o qual tenho pensado ultimamente enquanto meu disco rígido estava ficando cheio. Vou tentar algumas dessas coisas e atualizar minha resposta. Comentários são bem-vindos para criticar alguns desses métodos.

ATUALIZAR

Veja também a resposta @gilles. Sua sugestão é melhor. Em vez de mover toda a /usrpasta para o cartão externo, basta movê-lo /usr/lib/sagemathpara o cartão externo, pois ele ocupa cerca de 3,1 GB de sua instalação. Portanto, no método 2 , você pode mover esta pasta em vez de /usr.

shivams
fonte
Mover /usrpara o cartão SD tornaria o sistema inutilizável quando o cartão SD não estiver presente. Esta não é uma boa ideia.
Gilles 'SO- stop be evil'
Sim. Mas o OP mencionou que o cartão SEMPRE será mantido inserido. Eu mencionei isso na minha resposta.
Shivams
@ Gilles eu apenas sua resposta. Sua sugestão é definitivamente melhor.
Shivams