Instalando programas em uma unidade flash para que eles possam ser executados no lugar

3

Ao ler respostas para este post , Eu me pergunto se podemos fazer os programas que costumamos usar em nossos computadores portáteis (no sentido do Windows), para que possamos fazer uma cópia deles em nosso pen drive, para que não tenhamos que nos preocupar se não o fizermos. ter acesso aos programas que gostamos em outros computadores?

É possível fazer essas instalações portáteis?

    
por Tim 30.09.2014 / 21:51

2 respostas

4

Sim, você pode fazer isso. É mais trabalho do que depender de um gerenciador de pacotes - a principal atração de instalações “portáteis” no Windows é não ter que lutar contra a falta de um gerenciador de pacotes decente.

Você precisará organizar os programas para encontrar suas dependências: arquivos de dados, bibliotecas, etc. Muitos programas suportam variáveis de ambiente para isso. Alguns verificam o diretório em que o binário está localizado ou os diretórios relativos, como ../lib , para arquivos complementares

Instale o software em algum diretório raiz. Crie os diretórios de categoria usuais sob essa raiz: bin , lib , man , etc. Para gerenciar todo o software, instale cada um deles de forma independente e use um programa como Stow crie uma floresta de links simbólicos para vinculá-los aos diretórios de categoria. Consulte Como acompanhar os programas para obter uma introdução ao Stow. Você terá links simbólicos como

bin/foo -> ../stow/foo-1.42/bin/foo
bin/foobar -> ../stow/foo-1.42/bin/foobar
man/man1/foo.1 -> ../../stow/foo-1.42/man/man1/foo.1
…

Você desejará um script para configurar variáveis de ambiente. Coloque-o na raiz da sua instalação e use $0 para localizar o script. Como um script não pode influenciar seu pai, a abordagem usual é fazer com que o script produza uma saída que possa ser avaliada pelo shell de chamada. Vamos chamar esse script setup.sh .

#!/bin/sh
set -e
root=$(dirname -- "$0")
cd -- "$root"
printf "PORTABLE_ROOT='%s'\n" "${PWD}" | sed "s/'/'\\''/g"
prepend () {
  eval "set -- \"\\" \"\\" \"${$1}\""
  case :$3: in
    *:$PORTABLE_ROOT/$2:*) :;; # already there (at any location)
    :: echo '$1=$PORTABLE_ROOT/$2; export $1';; # the path was empty
    *) echo '$1=$PORTABLE_ROOT/$2:$3; export $1';; # prepend
  esac
}
prepend PATH bin
prepend MANPATH man
prepend LD_LIBRARY_PATH lib
prepend PERL5LIB lib/perl
prepend PYTHONPATH lib/python
…

(Aviso: código não testado)

Para usar a instalação portátil a partir de um shell, execute eval "'/path/to/setup.sh'" .

    
por 01.10.2014 / 01:43
0

Claro. Algumas linguagens como Java ou Python atingem um nível de portabilidade, embora possam ser derrotadas com a inclusão de chamadas específicas do sistema.

    
por 30.09.2014 / 23:22