cygwin no pendrive
Escrito por meleu em 07 Jun 2008ATENÇÃO! Esta dica não funciona mais! Quando eu conseguir solucionar este problema atualizarei isso aqui.
A motivação de usar o cygwin é uma (ou várias juntas) das seguintes:
Ainda existe uma vertente deste último caso que é a seguinte:
Caso você se enquadre especialmente neste último caso, este texto é para você. Seguindo o que está descrito aqui você irá instalar o cygwin em um pendrive e poderá usá-lo em qualquer computador que plugá-lo. Isso mesmo! poderá executar o cygwin em computadores que não possuem ele instalado!
Vale ressaltar que alguns pendrives tem tempo de acesso um pouco lento o que poderá ser um pouco irritante para quem é impaciente...
Chega de blablabla, vamos pôr a mão na massa!
Você vai precisar de:
Passo 1:
Instale o cygwin do jeito que você bem entender na sua maquina1. Não cobrirei aqui como é feita a instalação. Se não sabe fazer isso consulte as referências.
Passo 2:
Após instalar copie inteiramente o diretório que você definiu como raiz (Root Directory) e cole na raiz do seu pendrive. Este diretório deve se chamar cygwin. Por exemplo: se você plugou o pendrive na maquina1 e a unidade do pendrive se chama 'E:', você deve colar o conteúdo do diretório raiz em 'E:\cygwin'.
Só para deixar bem claro, após a cópia dos arquivos devem existir os diretórios 'E:\cygwin\bin', 'E:\cygwin\lib', 'E:\cygwin\usr', 'E:\cygwin\etc', e etc. Ah! E o mais importante, o arquivo 'E:\cygwin\cygwin.bat'.
Lembrando: o drive E: é só um exemplo!
Passo 3:
Abra o arquivo \cygwin\cygwin.bat do seu pendrive para edição, apague o que estiver lá, copie e cole o que está a seguir (abaixo do <++> e acima do <-->):
<++> cygwin.bat
@echo off
echo Configurando o ambiente...
set drive=%CD:~,2%
set desmonta=%drive%\cygwin\usr\local\etc\desmontar.bat
set user=user
set home=%drive%\cygwin\home\user
set path=%drive%\cygwin\bin;%path%
chdir %drive%\cygwin\bin
echo umount -s --remove-all-mounts > %desmonta%
mount -m >> %desmonta%
umount -u --remove-all-mounts
mount -u -b -f %drive%/cygwin/bin /usr/bin
mount -u -b -f %drive%/cygwin/lib /usr/lib
mount -u -b -f %drive%/cygwin/ /
mount -c -u /cygdrive
chdir %drive%\cygwin\home\user
echo Entrando no bash...
bash --login -i
echo Saindo do cygwin e restaurando o ambiente...
%desmonta%
<-->
Conheço pouquíssimo de programação .bat, e esse pouquíssimo que sei só aprendi devido a este desejo de executar o cygwin a partir do pendrive. Portanto não vou ficar explicando o que este cygwin.bat faz, até porque está bem intuitivo.
Só gostaria de deixar claro que toda essa parafernália de %desmonta% serve tão somente para não bagunçar uma instalação local do cygwin. Explicando melhor: o %desmonta% serve para que quando você executar o cygwin a partir do pendrive em uma maquina que já tenha o cygwin instalado, este cygwin da máquina não fique bagunçado (diretórios montados em pontos errados).
Passo 4:
É necessário garantir que todos tenham acesso ao %desmonta%, ou seja '\cygwin\usr\local\etc\desmontar.bat' no seu pendrive. Isso pode ser feito com o cygwin do pendrive já em execução:
prompt$ chmod 777 /usr/local/etc/desmontar.bat
Isto serve para que não se tenha problemas de acesso ao desmontar.bat quando você executar o cygwin do pendrive em um computador como o usuario fulano, e depois que acabar o usuário siclano quiser usar. Se não fizer o isso o siclano terá acesso negado ao desmontar.bat quando quiser salvar seus "mount points" durante o "cygwin.bat".
Passo 5:
Desplugar o pendrive com segurança. Plugar no(s) computador(es) do seu trabalho/colégio/faculdade, abrir a "pasta" cygwin no seu pendrive e dar um duplo clique no "cygwin.bat". O resto é só alegria!
Referências
http://aurelio.net/cygwin/ - portal brasileiro de cygwin
http://forums.qj.net/archive/index.php/t-138434.html - tem um cygwin.bat de um tal de sakya, usei-o como ponto de partida
manpage do mount no cygwin - explica como usar o mount no cygwin
help set no command.com - explica como fazer a substituição de variáveis nos arquivos .bat-->