Inicialmente este blog foi criado para armazenar algumas dicas e links de UNIX/Linux, OpenVMS, linguagem C, Assembly, TCP/IP e nerdezas afins. No entanto devido ao autor ter abandonado o seu plano de ser um super hacker e dominar o mundo (devido esposa, família, filhos, trabalho), a partir de 2012 este blog tem um tipo de nerdeza mais light (Android, Linux, RetroPie (retrogames), produtividade, e por aí vai). Estas dicas raramente serão criações minhas.

sexta-feira, 6 de junho de 2008

cygwin no pendrive

Se você está lendo isso, provavelmente já sabe o que é o cygwin. Caso não saiba dê uma olhada em http://aurelio.net/cygwin/.

ATENÇÃ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:

  • você tem medo de instalar o Linux na sua máquina;
  • você tem medo de particionar seu HD;
  • você não quer/não conhece o VMware;
  • você é obrigado a usar o Windows (trabalho/escola).

    Ainda existe uma vertente deste último caso que é a seguinte:
  • você é obrigado a usar o Windows e a política de TI da sua instituição não permite a instalação de softwares, se você desrespeitar pode ser penalizado ou o acesso cortado (ou alguma punição do tipo).

    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:
  • Um computador onde você possa instalar o cygwin inicialmente (chamemos este computador de maquina1);
  • Um pendrive de 512MB atende tranquilamente a usuários medianos;
  • Outros computadores para plugar o pendrive e usar o cygwin ;-)


    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
  • 6 comentários:

    Mateus C. Lopes disse...

    Obrigado, estava querendo isso a algum tempo e não encontrava um tutorial que funcionasse.
    Vou testar e depois aviso.

    C# Dicas disse...

    big Meleuuu....

    vou testar depois essa dica aki


    vlw veiu...

    Anônimo disse...

    nesse cygwin nao tem o comando tree nao??
    flw meleuuuu

    paulo diogo UCAM

    Anônimo disse...

    Isso que é o foda de vocês linuxers: não tem respeito por ninguém e ainda se acham o máximo, exemplo disso são os motivos citados no ínicio: porque não tem lá um motivo "Programadores de verdade que são obrigados a aprender shell script para receber um maldito diploma".
    Nunca vi um windowser se importar com o sistema que outra pessoa usa mas em compensação nunca vi um linuxer capaz de aceitar que outras pessoas não usem o linux.
    No mais o post e o blog estão perfeito exceto, claro, pelas partes ofensivas e desrespeitosas. Mas valeu pela iniciativa.

    Aco disse...

    o Cygwin.bat bem mais fácil e funciona. O que esta no artigo testei e não funciona o meu deixei assim e funciona que é uma maravilha.

    @echo off

    echo Configurando o Ambiente....
    set drive=%CD:~,2%
    set home=%drive%\cygwin\home\work

    %drive%
    chdir %drive%\cygwin\bin


    echo Entrando no bash
    bash --login -i

    Anônimo disse...

    E uma excelente dica!
    Mas para quem não quer ter muito
    trabalho pode tentar o "gow" pacote
    que não precisa configurar,mas o bash não funciona.
    Outra opção e shell.32-ix86 , neste
    caso e so modificar start_shell.bat
    e configurar uma home qualquer no pendrive e também fazer alguns ajustes finos em .bashrc e ele roda perfeitamente.So não vai ter startx :-(.
    Um abraço.

    tags