Como instalar aplicativos em um disco rígido separado?

10

Eu era tão bom com janelas, agora estou me sentindo um completo idiota.

Eu tenho um SSD para o ubuntu e quero instalar a maioria dos meus programas em um disco rígido separado, mas não tenho idéia de como.
Todas as pesquisas que eu tentei só aparecem com instalações de inicialização dupla.

  • (RESOLVIDO ->) Também estou com problemas para localizar "/ etc /". Especificamente, para modificar o Conky.
    A pesquisa por esse termo mostra apenas casos em que as pessoas estão dizendo para você acessar esse arquivo, não como acessá-lo.
atormentado
fonte
11
Dê uma olhada em Isto , você começará.
Mitch
Fiquei com a impressão de que tudo se estendia da pasta pessoal. Ops. A página que você vinculou não foi útil em relação ao meu problema, mas estou lendo agora e aprendendo muito, então obrigado.
médico da peste
Eu adicionei as tags mount e fstab; você pode fazer o que está descrevendo configurando manualmente sistemas de arquivos específicos para montar em partições ou unidades específicas.
Belacqua
@belacqua existe alguma outra maneira além disso? Não quero apenas sistemas de arquivos específicos em outra unidade, quero todos os sistemas de arquivos de programas específicos. Dessa forma, posso classificá-los pela intensidade do meu sistema, tendo games / virtualbox / etc inteiramente no meu SSD e coisas como libreoffice / thunderbird inteiramente em um dos HDDs.
médico da peste
Não é tão fácil determinar onde uma determinada instalação e seus arquivos podem residir - veja as respostas no link mencionado por Mitch. Você também pode usar links simbólicos, mas minha recomendação é começar de maneira simples. Encontre um aplicativo de exemplo, faça uma pergunta específica aqui sobre ele (ou modifique-o para ser menos geral) e vá a partir daí. Ou experimente com cautela.
Belacqua

Respostas:

22

Há uma grande diferença entre o Windows e o GNU / Linux. No Windows, é comum que cada programa, juntamente com todas as bibliotecas das quais depende, esteja instalado em uma pasta separada. Isso geralmente leva a muito espaço em disco desperdiçado devido à instalação de bibliotecas várias vezes, para cada programa que as utiliza.

No Linux, os programas são instalados seguindo o FHS ( Filesystem Hierarchy Standard ). Isso significa que as bibliotecas das quais os programas dependem estão todas instaladas em um local dedicado comum, de modo que geralmente são instaladas apenas uma vez, independentemente de quantos programas os utilizam. Além disso, os programas são criados de tal maneira que todos eles usam a mesma versão de uma determinada biblioteca. Isso economiza espaço em disco (e RAM no tempo de execução), mas tem a desvantagem: não é possível instalar livremente programas em diferentes partições ou discos rígidos, pelo menos não sem editar os arquivos de configuração do sistema (por exemplo, /etc/ld.so.conf.d para incluir as diferentes pastas da biblioteca).

Desde que o sistema de pacotes Debian foi implementado com o FHS em mente, não há, até onde eu saiba, maneira fácil de instalar pacotes Debian em uma pasta diferente daquela em que eles deveriam ser colocados e fazê-los funcionar sem mover manualmente e editando arquivos depois. Isso ocorre porque os caminhos geralmente são codificados em tempo de compilação. Portanto, mesmo se você instalar um pacote em uma pasta diferente, por exemplo, usando dpkg --instdir=folder/ package.debna linha de comando, o programa ainda procurará sua configuração em '/ etc', não em 'folder / etc', mas nos arquivos de configuração fornecidos com é claro que o pacote foi instalado na 'pasta / etc' ... O programa também não será adicionado ao menu, pois os arquivos de menu devem estar em '/ usr / share applications', não na pasta / usr / share / formulários.

É claro que você pode configurar e compilar manualmente um programa a partir de seu código-fonte para instalar as partes binárias e de dados onde quiser, enquanto ainda instala arquivos de configuração nos locais compatíveis com a FHS, mas isso é algo que eu recomendaria apenas para usuários avançados. Se você for compilar a partir do código-fonte, dê uma olhada no checkinstall , uma ferramenta que cria automaticamente pacotes debian.

Outra opção, sugerida no linuxfromscratch , é descompactar o pacote em um local adequado e criar links simbólicos para todos os arquivos instalados nos locais correspondentes do FHS.

Como nos comentários que você estava se referindo aos jogos: muitos jogos que não são comprados no Ubuntu Software Center são executáveis ​​como instaladores e, é claro, podem ser instalados em qualquer pasta, geralmente uma subpasta do seu diretório pessoal. Os jogos do Windows que estão sendo executados usando o WINE também podem ser instalados em qualquer diretório que você desejar. Para o vinho, existe uma variável de ambiente chamada WINEPREFIX, com a qual você pode configurar várias pastas independentes do WINE, cada uma incluindo sua própria unidade C: virtual. Leia a página do manual WINE para obter mais informações.

Mesmo que jogos / programas venham como pacotes Debian, você pode ver o conteúdo do pacote no seu gerenciador de arquivos favorito. Se o jogo for instalado em / opt, geralmente você pode instalá-lo com segurança em uma pasta diferente, pois / opt é frequentemente usado como local de instalação para programas que não aderem ao FHS.

soulsource
fonte
Correto e digno de
votos positivos
11
No entanto, não está completo, pois não expliquei em detalhes o que seria necessário para que um pacote fosse instalado em um local arbitrário funcionando, quais arquivos seria necessário editar e quais variáveis ​​de ambiente precisariam ser definidas. Só tenho medo que então ele se tornou um romance de tamanho médio ...
soulsource
11
Eu não me incomodaria. Basta montar / etc / em outro lugar. Leva 90% da carga do disco do ssd.
Rinzwind
5

TL; DR

  1. Inicialize o disco USB externo com a versão do Ubuntu que você acabou de instalar e suponho que /dev/sdaseja o seu SSD e o /dev/sdbseu HDD.

  2. Crie uma partição no seu HDD para conter todos os aplicativos que você deseja instalar (digamos 64 GB) usando o gparted e suponho que essa seja a terceira partição que você criará no seu HDD ( /dev/sbd3)

  3. execute os seguintes comandos:

    mkdir /media/apps
    mount /dev/sdb3 /media/apps
    mkdir /media/apps/usr
    cp --preserve=all --recursive /opt /media/apps
    cp --preserve=all --recursive /usr/bin /media/apps/usr
    
  4. sudo nanoo fstabsobre /dev/sda1/etc/para incluir o seguinte logo após a /entrada (o diretório root)

    /dev/sdb3  /media/apps          ext4   errors=remount-ro  0   0 
    /opt       /media/apps/opt      none   defaults,bind      0   0
    /usr/bin   /media/apps/usr/bin  none   defaults,bind      0   0
    
  5. reinicie e teste

A versão longa:

O Unix / Linux / Ubuntu foi concebido para ser um SO de servidor com uma área de trabalho como uma reflexão tardia, enquanto o Windows foi concebido para ser um SO de área de trabalho e o servidor como uma reflexão tardia.

Portanto, o Linux Filesystem Hierarchy Standard permite que você tenha uma quantidade ilimitada de unidades / partições a serem localizadas em qualquer lugar e as vincule à unidade ou partição correta com total transparência ao usuário, enquanto o sistema operacional Windows é limitado a um máximo de 24 unidades acessíveis / partições ( C:através Z:de A:e B:são reservados para disquetes.)

A maioria dos aplicativos que você instala é instalada /opt/e /usr/bin, portanto, instale o Ubuntu normalmente e siga as etapas abaixo em que assumo que /dev/sdaé seu SSD, /dev/sdbseu HDD e /dev/sddseu pendrive:

  1. Inicialize o disco USB externo com a versão do Ubuntu que você acabou de instalar.
  2. Crie uma partição no seu HDD para conter todos os aplicativos que você deseja instalar (digamos 64 GB) usando o gparted e suponho que essa seja a terceira partição que você criará no seu HDD ( /dev/sbd3)
  3. Monte essa partição em um diretório temporário:

    mkdir /media/apps
    mount /dev/sdb3 /media/apps
    
  4. copie o existente /opte /usr/binpara lá:

    mkdir /media/apps/usr
    cp --preserve=all --recursive /opt /media/apps
    cp --preserve=all --recursive /usr/bin /media/apps/usr
    
  5. sudo nanoo fstabsobre /dev/sda1/etc/para incluir o seguinte logo após a /entrada (o diretório root)

    /dev/sdb3  /media/apps          ext4   errors=remount-ro  0   0 
    /opt       /media/apps/opt      none   defaults,bind      0   0
    /usr/bin   /media/apps/usr/bin  none   defaults,bind      0   0
    
  6. reinicie e teste

  7. Se tudo funcionar corretamente, reinicie o pen drive novamente e exclua tudo no /dev/sda1/opte /dev/sda1/usr/binpara recuperar o espaço em disco ainda em uso pelos diretórios obsoletos já montados em outro lugar.

Aviso: o último comando também pode causar uma falha no sistema no caso improvável de /dev/sbd3não montar devido a uma falha de HW

Fabby
fonte
O Windows, na verdade, tem o mesmo suporte para montar unidades em caminhos não raiz, há cerca de uma década. E essas letras de unidade também podem ser mapeadas por usuário; portanto, H: \ pode ser um diretório inicial por usuário. Não é grande surpresa: a linha Windows NT é inspirada no VMS, um sistema multiusuário. O Unix também não foi concebido como sistema operacional para servidor: a AT&T fez comutadores de telefone. E o UNIX difere especificamente de sua inspiração Multics por ser menos orientado a vários usuários no início - simplesmente não havia necessidade disso em uma central telefônica.
MSalters
@MSalters Uau, não conhecia o bit de troca de telefone da AT&T ... Lembro- me da parte VMS / NT e que a M $ contratou o Principal Engineer da DEC e a parte OS / 2 também, mas antes disso , era um Single- usuário, com várias tarefas preventivas, no shell da área de trabalho. > :-) Atualizado!
Fabby
11
O Windows também suporta unidades sem letra ( 1:, !:etc.), assim como algumas versões do DOS (com outros caracteres, [:etc.). O Windows não está limitado a 24 partições (procure pontos de montagem de volume). As versões anteriores do Windows (antes de 95) usavam multitarefa cooperativa, não preventiva, entre os processos do Windows; somente as VMs do DOS eram multitarefas preventivamente (no modo avançado).
Stephen Kitt
11
Eu trabalhava na AT&T, no grupo UNIX. Não começou a vida como um interruptor de telefone.
stevegt
O @MSalters Unix parece não ter nada a ver com comutadores telefônicos, exceto pelo fato de a empresa responsável ter desenvolvido os dois; e parece ter sido multiusuário desde o início, quando o nome foi cunhado. Veja esta resposta no SE RC.
Peter - Restabelece Monica
2

A solução que usei para o meu Chromebook é não instalar pacotes, mas fazer o download da versão .tar.gz.

Pode não ser o que você está procurando, mas se você tiver uma unidade muito pequena e desejar dividir seu software vital (área de trabalho GNOME, navegador da Web) do seu software adicional (GIMP, IDE, jogos) para economizar espaço e mantenha seu computador funcionando sem a unidade externa, é a melhor solução até agora IMO.

acerspyro
fonte