Hamacker’s Palace

8 de Maio de 2008

Criando seu próprio LiveCD Ubuntu

Arquivado em: GNU/Linux, ubuntu — hamacker @ 15:49

Criar um livecd com Ubuntu incluindo o instalador é muito fácil com a utiliazação de um programa chamado remastersys.

Como o remastersys funciona ?

Você está com o Ubuntu instalado e configurado, seguiu todo o “Ubuntu Paradise” e acrescentou seus próprios programas, pois então, que tal transformar sua instalação num LiveCD ?
Este é o propósito do programa remastersys, ele jogará para dentro dum livecd a sua instalação já personalizada contendo programas, wallpapers, configurações especiais, de fato, tudo o que você já produziu pós-instalação com o seu Ubuntu. Já imaginou que maravilha é isso ? Quando tiver necessidade de ir até uma Lanhouse, põe o LiveCD e use sem medo de ter suas senhas capturadas por um “keylogger”. Ou então compartilhar seu Ubuntu para com um amigo sabendo que ele não terá que fazer uma instalação de 30 minutos e ter que quebrar a cabeça por dias a fio para deixar funcionando perfeitamente, incluindo os problemáticos codecs. Até mesmo para você é um facilitador, simplesmente após a instalação estará tudo lá, sem downloads posteriores, sem ter que seguir guia nenhum, não haverá mais uma instalação de 30 minutos e 2 horas com guias e downloads cansativos. Eu por exemplo, antes de colocar um VMWare para funcionar tenho que sair aplicando patches (ocorreu com o 8.04), já pensou ter que fazer isso de novo quando for instalar o mesmo sistema em mais 5 máquinas ? É por isso que o remastersys é muito bom !

Como instalar ?

Vá até o terminal e e execute :

sudo gedit /etc/apt/sources.list

Ao final do arquivo acrescente a seguinte linha :

deb http://www.remastersys.klikit-linux.com/repository remastersys/

Salve o arquivo e retorne ao terminal, e execute :

sudo apt-get update
sudo apt-get install remastersys

Pronto ! O remastersys foi instalado.

O que fazer antes de usar o remastersys ?

Como eu disse, antes de usar o remastersys é conveniente personalizar o ubuntu de acordo com o seu bel-prazer, isso inclui instalar todos os programas que você irá requerer no livecd. Instalações pessoais, aqueles que se localizam /home/usuário não irão parar no LiveCD, a menos que queira usa-lo da forma “backup” (explico mais adiante), onde /home e as contas também vão parar no LiveCD. Por essa razão, para modelar uma distro LiveCD, precisará instalar e configurar programas que possam ser instalados globalmente, isto é, que funcione para a distro inteira e não para uma única conta. Você não é obrigado a fazer nenhuma personalização, ela apenas lhe é conveniente, se gosta do jeito que sua distro está pode pular este tópico. Caso contrário, se gosta de personalizar, é possível incluir nessas instalações globais coisas como temas, ícones, extensões para o FF, splashes screens, etc… veja a dica a seguir de como fazer isso :

Papéis de parede :

sudo cp /local/onde/estao/os/papeis/de/parede/* /usr/share/backgrounds

Se quiser substituir o papel de parede padrão do Ubuntu pelo seu próprio (formato .PNG) :

sudo cp /local/onde/estao/os/papeis/de/parede/meu-papel-de-parede.png /usr/share/backgrounds/warty-final-ubuntu.png

A lista de papeis de paredes que podem ser selecionados depois da instalação pode ser incrementada se você editar o arquivo :

/usr/share/gnome-background-properties/ubuntu-wallpapers.xml

E replicar dentro dele a relação de arquivos contido em /usr/share/backgrounds.

Temas para o GNOME :

sudo tar zxvf /local/onde/estao/meus/temas/tema-para-gnome.tar.gz -C /usr/share/themes

Para definir um tema padrão, execute :

sudo gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type string --set "/desktop/gnome/interface/gtk_theme" "Human-Clearlooks"

Para definir uma “margem da janela” (metacity) padrão :

sudo gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type string --set "/apps/metacity/general/theme" "Human"

Troque Human pelo tema “margem da janela” (metacity) que tenha copiado e queira usar como padrão.

Temas para o GDM :

sudo tar zxvf /local/onde/estao/meus/temas/tema-para-gdm.tar.gz -C /usr/share/gdm/themes

Para mudar o tema padrão de inicialização, execute no terminal :

sudo gedit /etc/gdm/gdm.conf

Abaixo da seção [gui] troque a linha :

GtkTheme=Human
GtkThemesToAllow=Human
para
GtkTheme=[Tema-De-Sua-Preferencia]
GtkThemesToAllow=[Tema-De-Sua-Preferencia]

Claro que você deverá usar como nome, os temas que você copiou para /usr/share/gdm/themes.

Depois disso, você deve executar :

sudo gdmsetup

E ajustar o tema padrão e as características de login que deseja usar no livecd. Poderá até configurar para autologin, ou login para convidado após [n] minutos.

Conjunto de ícones temáticos :

sudo tar zxvf /local/onde/estao/meus/icones/tematicos/icones-tematicos.tar.gz -C /usr/share/icons

Para definir um conjunto de ícone temático padrão, execute :

sudo gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type string --set "/desktop/gnome/interface/icon_theme" "Human"

Troque Human pelo nome do tema de conjunto de ícones temático que tenha copiado e queira usar como padrão.

Sons temáticos :

sudo tar zxvf /local/onde/estao/meus/icones/tematicos/audio-tematicos.tar.gz -C /usr/share/sounds

Splashes Screen para o GNOME :

sudo cp /local/onde/estao/os/splashes/* /usr/share/pixmaps/splash

O splash padrão do gnome é um link simbólico em /etc/alternatives/desktop-splash apontando para qualquer arquivo de splash. Ex:

sudo rm -f /etc/alternatives/desktop-splash
sudo ln -s /usr/share/pixmaps/splash/splash/meu-splash-favorito.jpg /etc/alternatives/desktop-splash

Mas ele não é carregado automaticamente a menos que que uma chave do GNOME diga para faze-lo, assim é necessário executar os comandos :

sudo gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type bool --set "/apps/gnome-session/options/show_splash_screen" "true"
sudo gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type string --set "/apps/gnome-session/options/splash_image" "/usr/share/pixmaps/meu-splash-favorito.jpg"

Executando estes dois comandos, o splash escolhido será o padrão a ser usado por novos usuários criados no sistema.

Atalhos no Menu :

Criar um atalho no menu do GNOME é muito fácil, basta criar um arquivo em /usr/share/applications com a extensão .desktop, pode fazer isso executando :

sudo gedit /usr/share/applications/gnome-control-center.desktop

com o seguinte conteúdo :

[Desktop Entry]
Name=Gnome Control Center
GenericName=Gnome Control Center
Comment=Painel de Controle do GNOME
Exec=gksu /usr/bin/gnome-control-center
Icon=/usr/share/pixmaps/control-center2.xpm
Terminal=false
MultipleArgs=false
Type=Application
Encoding=UTF-8
Categories=Applications;GTK;System;Settings

No exemplo acima, criei um atalho para um aplicativo que embora sempre esteja instalado, por padrão não é adicionado no menu do GNOME. Use o modelo acima para criar seus próprios atalhos.

Teclas de Atalho :

As teclas de atalho do GNOME também podem ser programas, mas também via gconftool-2 onde você precisa saber o endereço e a combinação da tecla.
O problema maior em personalizar atalhos é que um atalho não pode conflitar entre mais de um aplicativo, por exemplo, o CTRL+ALT+DEL está ligado ao “desligar” do ubuntu, se eu quiser programar essa combinação para chamar o gnome-system-monitor vou ter que aprender a desligar essa combinação e depois programar o atalho para chamar o gnome-system-monitor. No caso específico do CTRL+ALT+DEL para desliga-lo teria de executar a sentença :

sudo gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type string --set "/apps/gnome_settings_daemon/keybindings/power" ""

As vezes, nem sempre é fácil descobrir a quem pertence o atalho e qual chave de registro preciso modificar, mas isso só é requerido para combinações de teclas muito manjadas como foi o caso do CTRL+ALT+DEL. Uma vez, desligando qualquer possibilidade de conflito de tecla de atalho é só programar :

sudo gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type string --set "/apps/metacity/keybinding_commands/command_1" "gnome-system-monitor"
sudo gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type string --set "/apps/metacity/global_keybindings/run_command_1" "<Control><Alt><Delete>"

Para bom entendedor, estou dizendo que o run_command_1(que esta relacionando ao command_1) é chamado pelo CTRL+ALT+DEL e roda o aplicativo gnome-system-monitor(command_1).

Diretórios não documentados :

Alguns arquivos também são importantes para personalização :

/etc/skel
/etc/gnome
/etc/gconf
/etc/alternatives
/etc/xdg

Mas nesse caso, vou deixar que você faça a sua pesquisa e descobrir para que servem ou como utiliza-los para criar suas personalizações.

Importância do gconftool-2 :

Muitos ajustes podem ser personalizados com um único comando :

sudo gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type string --set "/caminho/para/o/nome/da/chave" "Conteúdo-ou-valor-chave"

Com este comando você muda icones, cores, cursores, painéis,… sua imaginação é o limite!
Quando estamos executando o gconftool-2 em cima do arquivo /etc/gconf/gconf.xml.defaults, estamos modificando o padrão global das contas, assim se você criar um novo usuário ele receberá os valores pré-programados. Quando criarmos o LiveCD, esses mesmos padrões globais terão de ser respeitados.
Pena que para usar o gconf-tool-2 temos de saber exatamente qual o nome da chave a ser modificada e o seu valor, mas uma vez descoberto é só rodar a sintaxe acima.

Como usar ?

Para carregar o remastersys, vá até o menu Sistema->Administração->Remastersys Backup :
Limpando arquivos temporarios prévios

Antes de usar o remastersys é conveniente limpar arquivos temporários criados anteriormente por ele próprio, não é necessário faze-lo da primeira vez, mas é obrigatório nas vezes seguintes, por isso execute a opção destacada na imagem acima chamada de “Clean - Remove temporary files”.
Depois para gerar a imagem do livecd, execute uma das opções do menu :

  • “Dist” - Como a descrição sugere, ela cria uma distribuição a partir do que você possui instalado e omite propositalmente a partição /home - Ótima para compartilhar sua distro com os amigos
  • Backup - Igual a anterior, mas também copia todos os seus dados que estiverem na partição /home

Fazer o backup da partição /home é útil para ser usada por você em futuras reinstalações ou em LanHouses, porém é muito perigoso andar com arquivos pessoais em CD/DVD. Além disso, o tamanho da imagem será maior dependendo da quantidade de arquivos que já possui em /home, há o risco de que a imagem gerada não caiba em DVD de 4GB ou 8GB (dupla camada). Visto que o remastersys também funciona na linha de comando (veja remastersys --help), eu penso em testar a opção “backup” para fazer backup de servidores, onde normalmente há contas administrativas e contas comuns para emails/samba, etc…, pois num eventual desastre posso recuperar a parte mais básica dum servidor, deixando apenas arquivos criados posteriormente de fora que poderão ser restaurados pelo sistema de backup comum.

Cadê o livecd ?

Após ter executado o comando remastersys com uma das opções dist/backup, o sistema irá reunir todos os arquivos necessários, inclusive instalando novos programas se precisar. Não se anime muito, pois é um processo demorado. Para gerar um livecd de 2,1GB foram quase 30 minutos. E ao final apresentará uma janela com a seguinte mensagem :
Sucesso na geração da imagem livecd
Essa mensagem de saudação é a indicação de que o arquivo .iso foi gerado com sucesso, a saber, ubuntu-hamacker.iso e ubuntu-hamacker.iso.md5 na pasta :

/home/remastersys/remastersys/[nome-da-imagem].iso

Antes de começar a usa-la, o ideal é testa-la num Virtualizador de Máquina, por exemplo, o VirtualBox ou VMWare, ambos os programas permitem usar um arquivo .iso como sendo uma representação de unidade física de leitora CD/DVDROM e com isso você testará não somente o CD/DVD sem precisar queima-lo, mas também o resultado final da instalação. Não é obrigatório testar a imagem .iso num Virtualizador, são raras as vezes que o instalador não consegue completar uma instalação, mas se você já tem um Virtualizador instalado então não há um “porque” de não usa-lo para testar previamente a imagem.

Como queimar o CD/DVD ?

Se você testou sua imagem num Virtualizador e ocorreu tudo como planejado, então agora é a hora de queimar o CD/DVD, feche a máquina virtual antes de prosseguir.
Para gravar você pode usar o próprio GNOME, use o nautilus para navegar até a pasta onde foi gravado o arquivo .iso, geralmente :

/home/remastersys/remastersys/[nome-da-imagem].iso

Então clique com o botão direito do mouse sobre este arquivo e escolha a opção “Gravar em CD/DVD” como na imagem abaixo :
Queimar o cd usando o nautilus
O tempo para queimar um CD/DVD vai demorar de acordo com o tamanho, no entanto, por já estar com um arquivo no formato .iso prontinho, economizará uns 5 minutos !

Referencias

https://help.ubuntu.com/community/LiveCDCustomization?action=show&redirect=LiveCDCustomization%2F6.06

Conclusão

Atualizando meu sistema com o que há de mais recente nos repositórios, aplicando o inteiro guia “Ubuntu Paradise” , acrescentando muitos temas, papeis de parede, todas as ferramentas de compilação e geração de pacotes que normalmente utilizo nos meus artigos, eu consegui criar um arquivo .iso de 2,1GB usando a opção “dist”. Fico até pensando no que vou ter que me esforçar para preencher um DVD que cabe 4.4GB.

O remastersys é um programa para criar um livecd personalizado, geralmente para compartilhar com os amigos. Não é porque você criou um livecd “boladão” que deve-se se achar no dever de inaugurar uma nova distro com o seu nome. Se compartilhar um livecd personalizado com os amigos diga que é um “Ubuntu 8.04 personalizado”.

6 de Maio de 2008

Pérola do dia : Trocamos linux por windows porque …

Arquivado em: GNU/Linux, ubuntu — hamacker @ 22:52

Estava lendo esta matéria no NoticiasLinux e resolví ir até a página da Microsoft ler a noticia por completo. Dentre as inumeras vantagens que um colega de TI pôde citar em trocar Linux por Microsoft estava :

De acordo com Ricardo Tavares, gerente de TI da Conbras, com o aumento do número de usuários de correio eletrônico nos últimos anos de uso do Linux, a solução começou a apresentar muita instabilidade a ponto de cair no descrédito da equipe gerencial. “Tivemos passagens em que um e-mail da equipe do Rio de Janeiro para a de São Paulo demorou uma hora e meia”, relembra Tavares. Esse tipo de situação começou a desestimular a troca de informações entre os profissionais.

Pois é, com o software da Microsoft não há mais nuvens na internet, os interlocutores na internet conspiram quando o destino é um SMTP da Microsoft, de repente, o link e os roteadores ficam mais rápido. :)
Alguém pode explicar ao diretor de TI que o SMTP só repassa a mensagem quando a recebe ?
Ouvindo isso de um diretor de TI, eu fico envergonhado. Quando me perguntarem o que faço para viver vou ter que responder que faço uns “bico” aí e acolá, mas “Diretor de TI” nem pensar.

2 de Maio de 2008

Já experimentou GTK+ Engine “Candido” ?

Arquivado em: GNU/Linux, ubuntu — hamacker @ 12:52

O inteiro ambiente GNOME é modelado com peças que se encaixam, uma delas é o GTK+ Engine que é o motor por trás dos controles usados na aparência GTK+. Assim como existem motores de automóveis com características diferentes, o motor GTK+ Engine diferencia-se de um para o outro, uns mais rápidos e outros um tanto lentos.

O Candido é um exemplo de GTK+ Engine rápido e agradável ao mesmo tempo. Sua velocidade rápida é porque ele é baseado no Cairo assim como o Murrine, outro GTK+ Engine muito bom. Quem possui uma placa gráfica com aceleração deveria usar GTK+ Engine baseadas no Cairo, mesmo que possua uma super e potente máquina ou que utilize ambientes gráficos considerados leves como Xfwm4, Openbox, XFCE e afins.

Que tal experimentar o Candido ?
Visite essa página :
http://candido.berlios.de/pages/engine.php
E faça o download do pacote intitulado “Ubuntu Package (Version 0.9) ” :
Download do Candido

Dê um duplo clique no arquivo que foi baixado e efetuar a instalação :
Duplo clique para instalar

Agora basta escolher um dos temas disponíveis em :
http://candido.berlios.de/pages/downloads.php

Eu recomendo o tema de mesmo nome chamado de Candido, pois ele é o mais leve e agrada bastante. Faça o download dele, os temas estão em formato de temas para gnome e possuem a extensão .tar.bz2. Para instalar basta arrastar esses arquivos para dentro da janela de temas do GNOME.

Apenas inicie menu->Sistema->Preferencias->Aparencia, estando na guia onde seleciona-se temas basta arrastar e soltar os arquivos .tar.gz2 que foram baixados para essa guia. Veja um exemplo :
Arrastando e soltando temas

Enfim arraste e solte todos os temas que tiver baixado, e por fim escolha um deles na guia de seleção de temas :
Selecionando o candido na  guia Temas
Um defeito colateral ao realizar essa operação pela primeira vez é que o Firefox 3b5 vai simplesmente sumir, portanto se houver alguma janela em edição dentro do FF3 é melhor salvar antes de selecionar este tema pela primeira vez.

Vai notar que em :
http://candido.berlios.de/pages/downloads.php
Também há temas para o GDM, para instalar o método é semelhante. A diferença é que você deve chamar menu->Sistema->Administração->Janela de inicio de sessão e arrastar o tema GDM para a guia “Temas” e seleciona-lo :
Instalando um tema GDM
Uma coisa maluca com o Janela de inicio de sessão é que as vezes ele demora muito para aparecer se voce estiver usando o compiz, nessa ocasião eu desativo o compiz para fazer a instalação do tema e depois reativo-o.

Também vai notar que em :
http://candido.berlios.de/pages/downloads.php há “patterns” para o Nautilus, se voce nunca ouviu falar em “patterns”, é melhor demonstrar como funciona, baixe o tema “Candido-Graphite” e aplique-o conforme foi demonstrado nos passos anteriores.

Depois baixe o arquivo “Candido-Graphite-Nautilus.tar.gz” e em seguida descompacte-o.

Execute o Nautilus e vá até onde os arquivos foram descompactados, vá em seu menu do Nautilus->Editar->Plano de Fundo e Emblemas, clique no botão “Padrões” e em seguida clique no botão “+ Adicionar um Novo Padrão” e na janela de dialogo que se seguirá selecione os arquivos que foram descomprimidos, como mostra a figura :
Mudando patterns no Nautilus
Após acrescentar todos os arquivos patterns -em nosso exemplo havia apenas 2 deles- basta selecionar um deles e arrastar para o centro do nautilus como mostra a figura :
Aplicando novos patterns no nautilus
Eu poderia ter dito que “patterns” são como “papeis de parede” para o nautilus, não é ? Pois é, é isso mesmo. :)

Ao final seu desktop ficará mais ou menos assim :
Desktop com o candido

Conclusão

O candido é apenas uma das opções novas bastante promissoras em GTK+ Engine mais rápidas. Não há ganho nenhum em não experimenta-la, alias, você vai se beneficiar-se muito da velocidade.

30 de Abril de 2008

VirtualBox no Ubuntu 8.04

Arquivado em: GNU/Linux, ubuntu — hamacker @ 15:00

O VirtualBox possui uma versão OpenSource Edition. Além dela existe a versão comercial onde paga-se uma licença de uso, mas se for para uso pessoal e não comercial não é preciso pagar nada. Eu já falei dela aqui em artigos passados e acho que não preciso repetir tudo novamente.
A versão OpenSource ou apenas OSE é equivalente a versão comercial com exceção dos seguintes itens que estão presentes apenas na versão comercial :

  • Suporte a USB (mas você pode compartilhar arquivos entre a anfitriã e maquina virtual nem necessitar do suporte a USB)
  • USB over RDP
  • iSCSI initiator

Nos outros itens, ambas as edições são exatamente iguais.

Passo 1) Se quer experimentar o VirtualBox-OSE siga os procedimentos abaixo :

Abra o terminal e execute :

sudo apt-get install virtualbox-ose virtualbox-ose-modules-generic

Após a execução do comando acima, voce vai encontrar o ícone para carrega-lo em menu->Aplicações->Ferramentas do Sistema->VirtualBox OSE.

É claro que nem tudo é perfeito, se você tentar executar o virtualbox de forma crúa pela primeira vez vai receber uma mensagem como essa :

vbox-erro-iniciar-vm

O que fazer ?
Primeiramente, cadastre seu usuário no grupo ‘vboxusers’ :

sudo adduser seulogin vboxusers

É intrigante que você seja obrigado a reiniciar sua sessão gnome para que o comando acima passe a valer, portanto feche o seu login e entre novamente.

Passo 2) Atualizou o kernel e infelizmente o VirtualBox não roda mais ?

A solução mais rápida é a seguinte :

sudo m-a auto-install virtualbox-ose-source

Esse método criará um pacote virtualbox-ose-modules-generic para o kernel que foi atualizado e em seguida o instalará automaticamente. Se por necessidade quiser compartilhar essa atualização com outras máquinas não precisa mais recompila-lo como fez no passo acima, basta transportar o pacote :

/usr/src/virtualbox-ose-modules-[versao]-generic[versao].deb

para a máquina de destino e dar um duplo clique sobre ele, ou se preferir via terminal :

sudo dpkg -i /local/onde/voce/colocou/o/pacote/virtualbox-ose-modules-[versao]-generic[versao].deb
sudo apt-get install -f

Passo 3) Como criar uma máquina virtual Windows

Carregue o VirtualBox, e siga o tradicional passo-a-passo :
Clique no botão Novo :

criando uma nova virtual machine

Na próxima tela voce deverá formalizar algumas propriedades da máquina virtual como por exemplo, o Nome, o qual voce pode informar qualquer um, eu pessoalmente não gosto de colocar espaços e acentos :

definindo um nome para a vm

Também será preciso informar a quantidade de Memória RAM, essa quantidade depende do que você vai rodar no XP, 192M é suficiente para muita coisa :

memória ram para a virtual machine

Depois será necessário informar o uso do disco, como será a primeira vez que voce executa será necessário voce criar um. Portanto, clique em criar, como mostra a figura :

Criando um disco virtual

Opte por criar um disco de tamanho dinamicamente expansível :

vbox-criar-disco-dinamicamente-expansivel

O tamanho do disco e nome pode definir ao seu bel-prazer :

nome e tamanho do disco virtual

Confirme se todas as definições do disco estão prontas :

definições do disco prontas

Depois, é só escolher utilizar este disco virtual recém-criado :

No passo seguinte será apresentado um resumo de como ficará sua Máquina Virtual :

Resumo da máquina virtual

Escolha finalizar para completar a criação da máquina virtual.

Essa é uma boa hora para voce inserir o disco “bootável” contendo o sistema operacional Windows na unidade leitora de CD.

Mas ainda não acabamos a configuração, infelizmente teremos que voltar e reconfigurar a máquina virtual. Selecione a máquina virtual recém-criada e clique no botão Configurações :

Configurando a VM

Vá até a opção CD/DVD-ROM e marque as opções :

  • Montar unidade de CD/DVD
  • Drive de CD/DVD do Hospedeiro e informe a unidade se voce tiver mais de uma
  • Habilitar o passtrhough

Como mostra a figura :

Configurando o cdrom

Clique em [OK] para finalmente finalizarmos a configuração da máquina virtual.
Agora, na tela principal clique finalmente em [Iniciar].
Depois de ser notificado que sua tecla de host será o Control do lado direito, voce passará para a instalação a partir do cdrom que voce colocou no drive :

Instalando o Windows

Aguarde a instalação do Windows até o seu final, lembre-se de que para sair da máquina virtual é só teclar Control do lado direito :

Tela 2

Quando completar a instalação do Windows, retire o CDROM da unidade e reinicie o sua máquina virtual.

Passo 4) Instalando as ferramentas “adicionais para convidado”

Antes de você prosseguir, confirme que voce tenha retirado o cdrom do sistema operacional e tenha reiniciado a sua máquina virtual.
Na realidade as ferramentas guest são os drivers que precisam ser instalados na sua máquina Virtual para dar-lhe alguns recursos extras, incluindo até mesmo a performance. Para instalar, acesse o menu do VirtualBox e escolha Menu->Dispositivos->Instalar adicionais para convidado como você vê na figura abaixo :

Instalando ferramentas para convidado

Na primeira execução do Instalar adicionais para convidado, voce será questionado se deseja fazer o download do programa, infelizmente sua única resposta é sim porque o VirtualBox-OSE não acompanha nativamente Instalar adicionais para convidado. Então responda Sim para fazer o download, como mostra a figura abaixo :

Download de Instalar adicionais para convidado

Ainda será necessário confirmar o download novamente :

Download de Instalar adicionais para convidado

Ao completar o download da ferramenta, uma outra questão surgirá perguntando se deseja montar o a imagem do cdrom que acabamos de efetuar o download, responda “Montar” (ou Mount em inglês) :

Montar Instalar adicionais para convidado

Nem sempre o autostart do Windows da máquina virtual aparece automáticamente, por isso, precisaremos dar um WIN+E para abrir o explorer do Windows e selecionar a unidade de CDROM de nossa máquina virtual :

usando o winexplorer para instalar as ferramentas para convidado

Dê um duplo clique na unidade de cdrom que a essa altura está com o nome “VBOXADDITIONS_1.5.6_28241″, isso será o suficiente para exibir o autorun e a tela a seguir :

executando o ferramentas para convidado

O processo de instalação já o conhecido Next->Next->Finish que todos os usuários de windows estão habituados. Fique atento para confirmar também a instalação de drivers como essa tela aqui :

ainda instalando as ferramentas para convidado

O motivo da atenção é que as vezes a tela acima de confirmação de instalação de driver aparece abaixo das outras janelas e não é vista, as vezes erroneamente você pode pensar que instalado parou, quando na realidade está simplesmente aguardando você confirmar a instalação.
Ao completar a instalação do ferramentas adicionais para convidado voce será convidado a dar um boot, por favor, dê um boot na máquina virtual :

Ferramentas adicionais para convidado instalado com sucesso

Após a instalação ferramentas adicionais para convidado voce terá muitas novas opções como :

  • rodar o Windows em tela cheia
  • um novo recurso chamado SeamLess (HOST+L) que permite jogar uma janela do windows para fora da Virtual Machine, dando a impressão de executar um aplicativo nativo do windows no linux
  • Redimensionamento de resolução de tela dinâmico
  • Compartilhar pastas

Configuração de Rede

Este tópico é um problema para os mais novatos, o VirtualBox por padrão cria uma subrede abaixo da máquina hospedeira, mas a virtual machine tem conectividade com a máquina hospedeira através de Roteamento por NAT, assim, a placa de rede interna da virtual machine recebe um ip da classe 10.0.0.0 e tem como getway a máquina hospedeira. Isso é suficiente por exemplo, para conseguir acessar a internet se a máquina hospedeira tiver tal acesso. O que parece ser um problema para os mais novatos, é colocar a máquina virtual na mesma rede que sua hospedeira, neste caso voce tem de ir até a configuração de rede do VirtualBox para a máquina virtual selecionada, veja as telas de exemplo :

Entrando em Configurações, acesse o item “Rede” :

Agora configure sua interface de rede no virtualbox conforme sua necessidade, pode inclusive designar mais de uma placa de rede ou redes diferentes. Na prática se voce não tiver mais de uma placa de rede sobrando lhe sobra apenas usar NAT mesmo, ou então voce tem que criar no seu Linux uma interface virtual que chamamos de bridge e neste caso usar a interface de bridge para colocar a virtual machine na mesma rede da máquina hospedeira. O vmware ele cria uma interface de bridge assim que é instalado em seu sistema porque considera o [sim] como padrão para as suas respostas, o virtualbox não faz isso. Se voce deseja criar uma interface virtual para usar como bridge use este tutorial :
http://www.jragomes.com/content/view/17/5/
Ou se preferir, use a minha maneira no tópico a seguir.

Criando um script para criar uma bridge para uso no VirtualBox

Faça o download do script abaixo e salve-o com o nome de /etc/minha_bridge.sh, ele está com a extenção .odt apenas para ludibriar o WordPress que não aceita essa extensão, por isso o arquivo abaixo terá de ser renomeado :
minha_bridge.sh
Renomeia-o para o nome certo e dê permissão de execução :

sudo mv /local/onde/baixei/minha_bridge.odt /etc/minha_bridge.sh
sudo chmod a+x /etc/minha_bridge.sh

Edite o arquivo acima, e tome atenção para as seguintes linhas :

#
# Login que receberá permissao
#
BRIDGE_LOGIN=”seulogin”

Em [seulogin], coloque o seu login.
Ainda em :

#
# Interface de rede envolvida
#
BRIDGE_NIC=”eth0″

Confirme acima, se a placa para executar o bridge é realmente eth0, em notebooks geralmente há a interface Wifi e a Local e nem sempre a que queremos usar é eth0.
Ainda mais :

#
# Usar DHCP ou IP fixo ?
#
BRIDGE_USE_DHCP=”S”

Se há um DHCP na sua rede, deixe-o como “S”, caso contrário, para usar IP Fixo na interface de bridge use “N”.

Se voce optou por usar IP Fixo, terá de modificar as seguintes linhas :

#
# Se for ip fixo fornecer os dados abaixo
#
BRIDGE_IP_ATUAL=”192.168.1.14″
BRIDGE_IP_DESEJADO=”192.168.1.15″

Onde BRIDGE_IP_ATUAL é o seu atual IP da interface que voce forneceu e BRIDGE_IP_DESEJADO será o IP que será atribuído a nova interface de bridge que será criada.

Não estou dando nenhuma garantia ao script acima, ele simplesmente funciona para mim e estou distribuindo a voce. Não espere que se houver situações diferentes na sua rede um suporte neste blog, para isso existe os canais costumeiros.

Uma vez executado este script, a saber :

sudo /etc/minha_bridge.sh

Vá até a tela de configuração do VirtualBox, na guia “Rede” e em “Ligado a” escolha “Interface do hospedeiro” e adicione “tap1″ ao item “Nome da placa de rede” :
Configurando rede TAP no VirtualBox
Tenho quase certeza que há um método melhor criando um script para “Configurar Aplicação” e “Terminar Aplicação” conforme exibe essa janela de configuração, mas como não sei como usa-los então vai do jeito “feijão com arroz”.

Agora só resta configurar a interface dentro da máquina virtual, não espere que o Windows vá pegar um IP automático, simplesmente configure o Windows como se fosse um IP fixo, repassando os DNSs e o Gateway de sua rede :
Configurando rede no Windows
É assim que costumo configurar bridge no VirtualBox, tem funcionado para mim desde o Gutsy. Tem como colocar o script “minha_bridge.sh” para inicialização no boot, mas vou deixar isso como fonte para sua pesquisa.

Conclusão

Acho que isso encerra a instalação do VirtualBox, espero que voce usufrua da melhor forma possível.

28 de Abril de 2008

Crie seu próprio pacote do aMSN usando a versão snapshot SVN.

Arquivado em: GNU/Linux, ubuntu — hamacker @ 16:26

(artigo revisado e re-editado)
A versão atual do aMSN 0.97 (considerada final) está disponível de modo fácil nos repositórios atuais. No entanto, há novos recursos no aMSN disponível na versão versão snapshot (sempre em modificação) que podem interessa-lo. Por exemplo, suporte antialising para as fontes, suporte a webcam e conversação, mensagens offline, dentre outros recursos.

Este guia foi realizado com as informações obtidas atualmente. Trata-se dum repositório SVN onde as modificações nos fontes é algo constante e portanto algumas coisas podem não funcionar conforme o esperado para aquele dia que estiver aplicando este artigo. As dependências, as referencias e os links podem mudar e então força-lo a atualizar-se a respeito destes. Por essa razão, o grau de dificuldade deste artigo pode variar conforme a sua experiência em lidar com surpresas de compilação e procura por links desaparecidos ou arquivos desatualizados.

Algo diferenciado neste guia é que estou criando um pacote binário .deb para o aMSN que o tornará transportável e tornar obsoleto novas compilações, a menos que você queira. Até mesmo facilitando o compartilhamento com os amigos, onde um duplo clique por parte dele será o suficiente para a instalação.

Este guia foi produzido numa instalação limpa do Ubuntu 8.04 (Hardy Heron) e depois que apliquei o guia Ubuntu Paradise. Enfim vamos ao guia :

1) Instale as dependências :


(abaixo é tudo na mesma linha)
sudo apt-get install tcl8.5 tcl8.5-dev tk8.5 tk8.5-dev \
tclreadline dpatch debhelper fakeroot \
libpng12-dev libjpeg62-dev \
esound-clients libsnack2 libsnack2-dev \
libgstreamer0.10-dev libfarsight0.1-2 libfarsight0.1-dev \
subversion build-essential

No inicio do mês de abril/2008 na primeira versão deste artigo eu tinha que instalar tcl8.5/tk8.5 e também tcl8.4/tk8.4, um absurdo, já que os fontes são 100% compiláveis apenas com tcl8.5/tk8.5. Nesta última revisão consegui acertar essa regra absurda e nos passos seguintes estarei suprimindo completamente qualquer referencia a tcl8.4/tk8.4.

2) Baixe os fontes do aMSN :


cd /usr/src
sudo mkdir amsn-src
cd amsn-src
sudo svn co https://amsn.svn.sourceforge.net/svnroot/amsn/trunk/amsn

Aguarde, pois os fontes não são poucos arquivos, são cerca de 84M.

3) Suporte a áudio de conversação : (opcional)

Este aMSN, por omissão não tem suporte a áudio, parece entristecedor, não ? Não desanime, na versão SVN, este suporte já existe, pena que o repositório do Ubuntu não possua os pacotes necessários para a compilação :(
Parece que alguém se comoveu com isso e resolveu criar extra-oficialmente os pacotes necessários que servem para o Ubuntu Gutsy e o Hardy, vamos baixar e instala-los :

cd /usr/src/amsn-src/
sudo wget -vc http://people.collabora.co.uk/~kakaroto/gutsy-debs/libgstfarsight0.10-0_0.0.2-1ubuntu1_i386.deb
sudo wget -vc http://people.collabora.co.uk/~kakaroto/gutsy-debs/gstreamer0.10-plugins-farsight_0.12.8-1ubuntu1_i386.deb
sudo wget -vc http://people.collabora.co.uk/~kakaroto/gutsy-debs/libgstfarsight0.10-dev_0.0.2-1ubuntu1_i386.deb
(abaixo é tudo na mesma linha)
sudo dpkg -i libgstfarsight0.10-0_0.0.2-1ubuntu1_i386.deb \
gstreamer0.10-plugins-farsight_0.12.8-1ubuntu1_i386.deb \
libgstfarsight0.10-dev_0.0.2-1ubuntu1_i386.deb
(daqui em diante é outro comando)
sudo apt-get install -f

Obviamente, são estas as versões na data deste artigo. Faça as necessárias modificações nos nomes e referencias quando o copiar/colar simplesmente não funcionar mais.

4) Consertando um bug de pacote :

Os fontes para a criação dos pacotes .deb do aMSN estão com um pequeno problema que teremos de corrigir, edite o arquivo ./debian/control e faça as seguintes modificações :

cd /usr/src/amsn-src/amsn
sudo gedit ./debian/control

Na linha Build-Depends: contém referencias aos pacotes tcl8.4-dev, tk8.4-dev, troque essas duas referencias por tcl8.5-dev, tk8.5-dev. Vai ficar assim :

Outra modificação, na linha Depends: troque as referencias tcl8.4, tk8.4 por tcl8.5, tk8.5 e remova da mesma linha a referencia tcltls, ficando assim :

Uma outra sugestão conforme pode ser vista acima, acrescente o programa esound-clients na linha que contém a sentença :Suggests:. Assim o pacote sugerirá o esound-clients quando for instalado o aMSN. Na realidade, para mim, o esound-clients é tão importante que deveria ir na sentença Depends: para tornar obrigatório a instalação dele. O que o esound-clients faz ? É responsável por ter som nos eventos do aMSN. Só não sugiro como dependência obrigatória porque muita gente pode preferir usar o próprio tcl/tk manipulando os mesmos sons (que na minha opnião é pior).

Com as modificações acima já realizadas, salve o arquivo e saia do editor. Essas modificações tornam a dependência do tcl 8.4/tk 8.4 completamente desnecessária.

Outra modificação de peso será no arquivo ” amsn”, execute :

cd /usr/src/amsn-src/amsn
sudo gedit amsn

Por volta da linha 3, voce encontra :

exec wish $0 $@, troque por :
exec wish8.5 $0 $@
Ficará assim :
amsn-wish85

Salve o arquivo e saia. Com esse ajuste, o pacote amsn.deb já conterá a modificação que resolve o problema com o “wish” que será detalhado no passo 6.

Estes ajustes provavelmente serão feitos pela equipe de desenvolvimento, acontece que estamos experimentando uma versão SVN que está em constante desenvolvimento.

5) Compilando o aMSN :

cd /usr/src/amsn-src/amsn
sudo make uninstall
sudo make clean
sudo ./configure --with-tk=/usr/lib/tk8.5/ --with-tcl=/usr/lib/tcl8.5/
sudo make deb

Não se preocupe se ‘make uninstall’ e o ‘make clean’ der uma mensagem como :

make: *** Sem regra para processar o alvo `uninstall’. Pare.

Isso acontece porque esses são comandos preventivos, eu quero que antes de compilar, possiveis arquivos instalados ou criados sejam removidos. Se voce está executando o artigo pela primeira vez, obviamente não há nada previamente instalado ou arquivo criado para ser removido, por isso a razão da mensagem.

Se a compilação e a geração do pacote foi bem sucedida, então provavelmente surgirá uma mensagem como esta :

dh_builddeb --destdir="./distrib/DEB" --filename="amsn_0.98b-svn9762M.deb
dpkg-deb: construíndo pacote `amsn’ em `./distrib/DEB/amsn_0.98b-svn9762M.deb‘.
make[1]: Saindo do diretório `/usr/src/amsn-src/amsn’
rm -f debian/changelog
rm -rf debian/amsn

Deve ter reparado que foi gerado o pacote ./distrib/DEB/amsn_0.98b-svn9762M.deb. Para instala-lo, basta dar um duplo clique sobre este arquivo, ou se voce ainda está no terminal então executar :

sudo dpkg -i ./distrib/DEB/amsn_0.98b-svn9762M.deb
sudo apt-get install -f

Lembre-se: Praticamente é uma versão nova diariamente, portanto o nome do arquivo gerado .deb sempre vai mudar.

6) Resolvendo o problema com o utilitário wish :

(Se voce seguiu todas as orientações no passo 4 poderá pular este passo)
O arquivo ‘/usr/bin/amsn’ que é o responsável pelo carregamento do amsn é na realidade é um script bash, este faz referencia a um outro utilitário chamado wish que é instalado juntamente com os pacotes tcl/tk, no entanto, o nome desse utilitário é wish, mas no Ubuntu ele chama-se wish8.5. Talvez um link simbólico resolvesse, mas não resolve, já tentei :). Se voce insistir em executar o aMSN messmo assim então vai receber a seguinte mensagem de erro :
Erro com o utilitario wish
Para corrigir o problema, é necessário editar o arquivo ‘/usr/bin/amsn’ , como demonstra as linhas abaixo :

sudo gedit /usr/bin/amsn

procure por wish e troque por wish8.5. É apenas uma única linha logo no começo do arquivo. Depois salve o arquivo e saia.

5) Testando o aMSN

Carregue-o a partir do menu GNOME->Internet->aMSN :
Carregando o aMSN - tela de login e about
Note porém que toda primeira execução do aMSN é precedida pela instalação dinamica do módulo TLS :
amsn-tls
Mas não se preocupe a instalação é bastante rápida :
amsn-tls-progress
E em poucos segundos ó modulo está instalado :
amsn-tls-complete

6) Ajustando as preferencias :

Após o aMSN carregado vá no menu Conta->Preferencias->Outros e ajuste os seguintes parâmetros :

Navegador Web : firefox $url
Gerenciador de Arquivos : nautilus $location
Comando para abrir arquivos : gnome-open $file
Cliente de email : gnome-open mailto:$recipient
Servidor de Sons : habilite a opção “usar a biblioteca Snack (interna do TCL)”, embora se desejar também poderá usar um programa diferente como “esdplay $sound”.
Que eu saiba, estes são os ajustes mais exotéricos, digo importantes para integrar o aMSN ao GNOME.

7) Transportando o aMSN para outro computador

Sem dúvida, a melhor parte deste artigo é a criação de pacote .deb, o qual permitirá que possamos instalar este programa em qualquer micro sem a necessidade de compila-lo novamente. Leve o pacote para onde voce quiser e para instalar basta um duplo clique sobre o arquivo, mais fácil que isso é impossivel. Lembrando que para termos o audio na conversação é necessário a instalação dos pacotes já descritos nos passos anteriores : libgstfarsight0.10 e gstreamer0.10-plugins-farsight.

8) Aviso aos novos usuários da rede MSN :

Urghhh. Não é necessário ter uma conta no hotmail para usar o aMSN, parece óbvio para mim, mas muita gente não sabe disso. Alias o próprio aMSN na janela de autenticação já mostra uma opção para criar uma conta na rede MSN que requererá um email, qualquer email serve.

Conclusão

Para quem não necessita de mensagens offline ou uso de câmeras, o pidgin ainda é a melhor opção porque já vem instalado e tirando os dois recursos citados, possue muito mais recursos.
Eu já havia dito isso no artigo, mas é bom repetir: Todas estas versões citadas, links para downloads e afins ficam desatualizados, assim como modificações no repositório SVN. Por essa razão é sempre sugerível que voce entenda a idéia acima e repense-as quando houver mudanças para não desistir quando o copiar/colar não estiver mais funcionando. Ou seja, decore as idéias e não as palavras e será bem sucedido.

Serenatas com gnome-art-manager.

Arquivado em: GNU/Linux — hamacker @ 12:16

O gnome-art-manager quando surgiu em versões anteriores ao Ubuntu 7.10 Gutsy, era um aplicativo bom, no entanto, muito instável e pouco prático para uso diário para os aficcionados por personalização. Por exemplo, ao tentar instalar um papel de parede, eu tinha que baixar uma lista enorme de snapshots(=telas pequenas de amostra) de cada uma delas. Mas se por um acaso eu fechasse o gnome-art-manager e mais tarde fosse escolher outro papel de parede teria de baixar todos os snapshots novamente. Além disso, aplicar os temas era angustiante porque as vezes não instalava e quando instalava as vezes não aplicava. Obviamente, o gnome-art-manager ainda estava em evolução, mesmo assim alguns usavam-no prematuramente.
Atualmente, o gnome-art-manager (ou Art Manager) já está mais maduro e é capaz de guardar em cache snapshots de temas e não “crasha” mais como antigamente.

Sua instalação é simples e bem delineada no artigo Ubuntu Paradise, este é o momento de demonstrar como utiliza-lo. Carregue-o a partir do menu :
ubuparadise-gnome-art-from-menu

Com o gnome-art-manager você baixa tudo que for postado em http://art.gnome.org/, um repositório na internet onde internautas postam papéis de parede, splashes e temas. Temas para gnome não é algo muito fácil de explicar, pois um tema para gnome pode envolver uma ou várias peças que afetam a aparencia e que quiser pode baixa-los separadamente e combina-los entre sí.

Vamos demonstrar como baixar novos temas? Já com o gnome-art-manager carregado, vá até seu menu em Art->Desktop Themes->Application, nele voce tem temas que caracterizam as aplicações como bordas, controles e cores quem podem vir completos ou parciais. Veja a quantidade de snapshots sendo carregadas :

Definitivamente, o Art manager não é um aplicativo para ser usado porque quem não possui banda larga.
Agora selecione um tema da lista, se voce nunca usou o Art Manager antes, sugiro começar com temas mais completos, por exemplo, selecione o “CleanestBrushedGnome” na lista :

Clique no botão “Install”, e por alguma razão que talvez voce não saiba explicar, ao invés de aplicar o tema escolhido, a janela de Preferências de Aparência aparece. É isso, mesmo ! O Art manager não aplica os temas, ele apenas baixa e instala, mas é você que tem que aplica-lo usando o processo habitual com o Preferências de Aparência. Irá reparar que na relação de temas prontos há um com o nome de “CleanestBrushedGnome”, clique nele :

Algo que é uma benção e uma maldição ao mesmo tempo no gnome é a seleção e aplicação automática dos temas. Voce clica num deles e pimba! já está aplicado, supondo que voce tenha baixado um monte de temas novos e quer ver a aparência de cada um deles então vai achar isso uma benção, mas quando você conhecer a maioria dos temas e por alguma razão quer apenas exibir a lista e não aplicar nenhum tema, verá como ele também pode ser é uma maldição, lembra muito aquele seriado PUSHING DAISIES onde o primeiro toque salva e o segundo destroi.
A escolha do tema “CleanestBrushedGnome” foi proposital, pois este é um tema mais completo e que por sí só faz aparece-lo na tela principal, mas alguns temas da seção Art->Desktop Themes->Application são apenas parciais e podem não aparecer na tela principal. Trazendo suporte parcial a apenas os controles você precisará selecionar um tema qualquer e depois personalizar(botão : Personalizar) o tema escolhido, daí então ele aparecerá na guia “Controles”. Exemplo de uma tela exibindo todos os temas de “Controles”, nem todos estes aparecem na tela principal :

Verá uma subjanela com guias adjacentes como Controles, Cores, Margem da Janela, Ícones e Cursor. Temas da seção “Application” carrega um ou mais desses itens. Portanto, quando voce baixar um tema Application e não encontra-lo na janela principal do Preferências de Aparência, experimente procura-lo em “Personalização”.

Voce viu Art Manager sendo utilizado para baixar temas da seção “Application”, mas há também uma seção de Backgrounds (papéis de parede), Window Borders(bordas de janelas) e Ícons(ícones) . Além destes, é possível baixar telas de login manager (temas para fazer a autenticação inicial de login), splash screen (aquela janela de “carregando…” após o login) e GTK+Engine que é um mecanismo de tema que voe não irá aplicar a menos que compile-o também.

Uma verdade sobre os temas : Existem temas que deixam seu sistema mais rápido, por outro lado, há temas que deixam o gnome uma carroça. Depois de experimentar um tema e gostar dele, voce tem que resolver se ele não está sacrificando performance a ponto deixa-lo aborrecido. Um belo exemplo disso, são os temas “Murrina”, eles são nota “10″ em performance e tem visuais limpos, eles contrastam com os temas cujos nomes terminam com “ish” que possuem até simulação de escovação de metal nos controles e são terminantemente proíbidos para quem tá com um equipamento de configuração mais lenta. Nunca olhe para um tema e julgue pela sua aparência que ele é lento ou rápido, pois existem temas bem “eunucos” (onde parecem faltar partes) e são bem lentos, e também há temas fantásticos com visual limpo e que são rápidos. A mágica disso é que alguns designers se preocupam com “pintar”, enquanto outros se preocupam com o “pintar” e “escovar”, isto é, indexam as cores, limpam as imagens e só depois de muito trabalho na “escovação” postam seu trabalho. Qualquer dia desses eu falo sobre o Candido, uma GTK+Engine que faz seu ambiente gráfico voar, baseado no Cairo, ele foi o mais veloz que já usei, superando os considerados “leves” como o FWM, leve, mas sem abrir mão da beleza.

20 de Abril de 2008

Na busca do torrent perfeito

Arquivado em: GNU/Linux, ubuntu — hamacker @ 22:13

Muito tempo se passou desde meu ultimo post sobre o torrent perfeito, testei vários e minhas últimas recomendações foram ao deluge e o transmission. No artigo Ubuntu Paradise minha recomendação era usar o transmission. A escolha do transmission é porque ele é rápido, eficiente e fácil de instalar. Naquela época  para obter um debule um pouco mais estável que compilar a partir dos repositórios SVN.

Mas agora sou obrigado a pedir perdão por ter recomendado o Transmission. Aconteceu que alguns dias atrás, ouvi de alguns, uns relatos de trackers que barravam o transmission. O motivo é que em versões anteriores o transmission sabotava as redes P2P, isto é, enganava os seeders/peers para obter taxas de downloads maiores. Parece que a versão atual do transmission não faz mais isso, e esse “bug” (digamos que fosse um bug) foi corrigido, mesmo assim alguns trackers ainda barravam-no. Ok, presenciei um que barrava o transmission, mas a maioria absoluta aceitava o transmission e não tinham nenhuma restrição.

Recentemente resolvi testar o deluge e fiz alguns testes e comparações com o transmission, as comparações revelaram que ambos possuem as mesmas taxas, competem de igual para igual nos mesmos recursos, embora o transmission seja mais leve. Mas descobri também um tracker gosta de sabotar o transmission, isso mesmo, sabota-o, como ? Ele faz o transmission receber taxas de download de 6K e compartilhar o seu upload no máximo que você permitir (no meu teste 9K). Acontece que usando o debuge o download era de 36~50K e a taxe de upload continuando a 9K. Deixei o Transmission em teste por uma semana inteira para saber se isso não era momentâneo, e infelizmente não era, se ainda quer saber mais, as vezes com o transmission sequer chegava 1K de download e continuava a fazer o upload no máximo que eu permitia, isto é,  9K.

Testei o transmission versão 1.11 e o anterior 1.06, os resultados obtidos com esse tracker era exatamente o mesmo, isto é, download no mínimo e upload no máximo, não sei como conseguiram fazer isso. O deluge por outro lado, não teve nenhum problema ou restrição desse tipo.

Minhas últimas observações sobre o deluge é que ele está bem mais estável do que há 10 meses atrás quando testei-o da última vez. Não que ele fosse ruim na época, ele era bom, mas tinha seus problemas, as vezes duma hora para outra fechava sozinho. Eu deixo o cliente de torrent 24×7 ligado e chegar em casa e ver que o cliente foi finalizado sozinho é decepcionante. Testando por uma semana inteira, esta última versão do Deluge está me surpreendendo, ainda não ví nenhum crash acontecer.

Portanto aí vai meu aviso a quem está usando o transmission : Ele é um ótimo programa, mas saiba que você tem de desconfiar de alguns trackers, eles podem estar sabotando o ritmo de seu download e “chupando” seu upload. Se não quer correr este risco, pode manter o deluge em paralelo ou substituir o transmission pelo deluge.

Brevemente estaremos usando o Ubuntu Hery Heron 8.04, e o cliente de torrent padrão dele é o Transmission, por isso, é bom se preocupar.

O melhor lugar para apanhar a ultima versão do Deluge e o Transmission é : www.getdeb.net.

O tracker que apanhei sabotando o transmission foi http://tracker.prq.to.

14 de Abril de 2008

Wine : Borland Delphi 6

Arquivado em: Banco de dados, GNU/Linux, ubuntu — hamacker @ 17:06

Atenção : Este artigo tem nível de dificuldade intermediário e é recomendado apenas para programadores mais experientes com Linux.

As vezes somos forçados a usar ferramentas já consideradas legadas para dar algum tipo de manutenção e sobrevida à eles. Quando você tem tais ferramentas consideradas legadas instaladas no seu computador então não há problemas, mas e quando não as tem e elas não são compatíveis com o sistema operacional em uso ? A única solução que realmente atende essa solução chama-se virtualização. Virtualização é um conceito bastante oportuno e prático, no entanto, há também a opção "B" que estava em oculto, a utilização do WINE no ambiente Linux. O wine é capaz em algumas oportunidade - não são todas - de criar um ambiente hospedeiro que possa tornar compátiveis nosso sistema Linux com ambientes Win95, Win98, WinMe, Win2000, WinXP e WinVista. Para demonstrar a utilização dum sistema como esse, vou praticar um passo-a-passo como de custume para criar um ambiente Wine simulando um Windows 98 que é compátivel com uma das ferramentas de programação mais conhecidas, o Delphi - neste artigo o Delphi 6 com conectividade com o banco de dados MSSQL 6.5 (legado).

Muitas vezes instalar um ambiente WINE é fácil, mas há ambiente mais complexos, por exemplo, neste artigo farei a instalação do WINE + Delphi 6 + MSSQL Client numa partição separada do ~/.wine comum, isto permitirá que o que fizer para fazer o Delphi6 funcionar não interfira nos demais aplicativos e também o inverso, isto é, que outros aplicativos instalados no WINE não interfiram na minha instalação WINE. Estou usando neste artigo Ubuntu Gutsy(7.10) e WINE versão 0.9.59.

Passo 1) Instalando o WINE

cd /tmp

wget http://wine.budgetdedicated.com/apt/387EE263.gpg

sudo apt-key add 387EE263.gpg

sudo wget http://wine.budgetdedicated.com/apt/sources.list.d/gutsy.list -O /etc/apt/sources.list.d/winehq.list

sudo apt-get update

Agora há duas opções : instalar ou atualizar o WINE.

Se já tiver o wine instalado :
sudo apt-get -y upgrade

Se não tiver o wine instalado :
sudo apt-get -y install wine

Passo 2) Criando um diretório para armazenar nossa instalação :

Eu vou utilizar $HOME para referir-se a pasta pessoal de cada usuário, se a pessoa chamar-se “fulano”, a pasta WINE será /home/fulano/delphi6. Isso é apenas um exemplo e voce pode modificar se achar necessário. Execute no terminal :

cd
mkdir /home/$USER/delphi6
export WINEPREFIX="/home/$USER/delphi6"
wineprefixcreate

A variável WINEPREFIX faz um particionamento do WINE, isto é, da sua criação em diante, o WINE achará que seus aplicativos e suas configurações estarão armazenadas na pasta especificada por $WINEPREFIX.

Crie também estes diretórios : (mais tarde eu explico)

mkdir /home/$USER/delphi6/drive_c/desktop
mkdir /home/$USER/delphi6/drive_c/meus_documentos
mkdir /home/$USER/delphi6/drive_c/imagens
mkdir /home/$USER/delphi6/drive_c/musicas
mkdir /home/$USER/delphi6/drive_c/videos
mkdir /home/$USER/delphi6/drive_c/temp

Se por alguma razão, voce interromper a execução desse artigo ou for obrigado a abrir um novo terminal, lembre-se de executar :

export WINEPREFIX="/home/$USER/delphi6"

Antes de executar os novos procedimentos, isto avisará o WINE para reutilizar o que criamos.

Passo 3) Configurando o WINE :

Execute no terminal :

winecfg

Nesse instante um aplicativo gráfico trará os principais parametros do WINE para o qual voce queira ajustar. Iremos ajustar alguns parâmetros :

Na guia “Applications” configure o campo “Windows Version” de “Windows XP” para “Windows 98″.

Isso é requerido porque nosso aplicativo Delphi6 só é compátivel com o Win98, poderia até rodar em versões posteriores do Windows, mas nesse caso, no meu exemplo, o Delphi6 só roda no Win98.

Na guia “Graphics” deixe marcado o checkbox “Allow the window manager to control the windows”.

Isso fará com que o tema que voce tem instalado possa manipular as janelas dos aplicativos WINE.

Na guia “Desktop Integration” existe uma área chamada de “Shell Folder”, nela você precisará configurar alguns caminhos :
“Area de Trabalho” para “/home/$USER/delphi6/drive_c/desktop”
“Meus documentos” para “/home/$USER/delphi6/drive_c/meus_documentos”
“Minhas imagens” para “/home/$USER/delphi6/drive_c/imagens”
“Minhas musicas” para “/home/$USER/delphi6/drive_c/musicas”
“Meus Videos” para “/home/$USER/delphi6/drive_c/videos”

Foi para isso que no passo 2 voce criou as pastas que eu explicaria mais tarde.

Alerta : Alguns mais experientes com o WINE já estariam tentados a incluir DLLs nativas, por gentileza, não façam isso.

Feche o winecfg e a seguir execute no terminal :

wine regedit

Isso abrirá um aplicativo muito conhecido no mundo Windows, o regedit. Precisaremos modificar algumas váriaveis.  Localize a chave “HKEY_CURRENT_USER\Control Panel\International” e mude o valor em sShortDate de “d/M/yyyy” para “dd/MM/yyyy”. Acredite, isso é importante.

Ainda no regedit, localize a chave “HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment” e mude seu conteúdo atual que provavelmente é :

C:\windows\system32;C:\windows

Para :

C:\windows\system32;C:\windows;c:\Arquivos de programas\Borland\Delphi6\Bin;c:\Arquivos de programas\Borland\Delphi6\Projects\Bpl;c:\mssql\binn

Essa variável é o “caminho de busca” do Windows, você incluiu alí os caminhos dos binários do Delphi e do cliente MSSQL.
Pronto, pode fechar o regedit.

Em versões posteriores do Ubuntu, não sei porque razão, alguns aplicativos deixam de ser executados com a seguinte mensagem de erro :

winevdm: unable to exec ‘C:\caminho\aplicativo.exe’: DOS memory range unavailable

Não sei porque acontece isso, mas sei a solução, execute no terminal :

sudo sysctl -w vm.mmap_min_addr=0

Agora nosso WINE parece estar razoavelmente configurado e pronto para prosseguir.

Passo 4) Paranóia de segurança :

Elimine o arquivo “/home/$USER/delphi6/dosdevices/z:”, execute :

rm -f  "/home/$USER/delphi6/dosdevices/z:"

A unidade Z: usada pelo WINE dá livre acesso ao seu disco desde a partição raíz (/). Eu considero isso uma falha na segurança grave, talvez seja paranóia minha, mas os aplicativos sob WINE não deveriam enxergar amplitudes maiores do que realmente está programado para fazer.

Passo 5) Criando letra de drive D: para o CDROM no WINE

Assim que um cdrom é inserido e seu conteúdo é exibido pelo GNOME, o WINE cria automáticamente o drive D: apontando para essa unidade. No entanto, as vezes o WINE é  configurado de maneiras diferentes e as vezes essa letra de drive pode não ser criada automática. Para os casos onde D: não foi criado automáticamente voce pode executar no terminal :

ln -s /media/cdrom "/home/$USER/delphi6/dosdevices/d:"

Voce criou um D:  apontando diretamente para o CDROM.

A partir desse instante voce vai ter que inserir o cdrom de instalação do Delphi. Se voce não tem o Delphi em CDROM, mas sim uma cópia de seus arquivos então use o comando acima para ao ínves de D: apontar para o CDROM então apontar para esses arquivos.

Passo 6) Instalando o Microsoft Installer

Benvindo a nossa primeira é única biblioteca nativa. O WINE inclui um fake MSI, isto é, um MSI falso porém funcional para a maioria dos aplicativos, mas existem vezes que surgem aplicativos que se comportam de maneira diferente no fake-msi, o Delphi 6 é um deles. Sem o Microsoft Installer incluso no WINE voce não conseguirá passar da tela de digitação do serial key. Execute os seguintes procedimentos :

Acesse o cdrom do seu Delphi, pois o Microsoft Installer (instmsia.exe) está incluído. Se não estiver, Vá até a página :

http://www.microsoft.com/downloads/details.aspx?familyid=CEBBACD8-C094-4255-B702-DE3BB768148F&displaylang=en

e baixe o programa “instmsia.exe” salvando-o em /home/$USER/delphi6/drive_c/temp

Agora acesse a pasta onde esta o “instmsia.exe”, se foi da internet :

cd /home/$USER/delphi6/drive_c/temp

ou se vai ser do cdrom do Delphi6 :

cd /media/cdrom

E execute-o :

wine ./instmsia.exe

Quando surgir a mensagem :
“Instalação concluída com exito”  ou  “Successfully registered dll L”C:\\windows\\system32\\msi.dll”"

Então a instalação ocorreu conforme era esperado.

Se não aparecer nenhuma mensagem, preocupe-se!, pois provavelmente os passos adiante não funcionarão.

O próximo passo é indicar ao WINE que desejamos usar o MSI nativo e nunca o fake MSI que acompanha o WINE. Execute novamente no terminal :

winecfg

Na guia “Libraries” acrescente a seguinte DLL Override :
msi.dll (native) –> Não use “native, builtin” que é auto-indicado como padrão :

MSI Nativo

Passo 7) Instalando o Delphi :

Vá até o diretório do instalador, e execute :

cd /media/cdrom
wine ./setup.exe

um outro modo de executar o instalador é esse :

wine msiexec /i "Borland Delphi 6.msi"

Não há diferença entre ambos,  pelo menos que eu tenha notado, ambas instalações comportam-se da mesma maneira.

Escolha instalar o item “Delphi 6″ e siga os procedimentos passo-a-passo que são solicitados, Conforme o padrão Next->Next->Finish :
Tela inicial contendo a licença

Se por acaso, você emperrar na etapa do serial number é porque o MSI não foi instalado direito ou você não está usando o msi.dll nativo. Se não houver problema a instalação prosseguirá :

instalação
Durante a instalação poderá ocorrer uma mensagem de erro dizendo que o BDE não teve “merge” para a nova configuração. Nós corrigiremos isso no final :

Erro na instalação do BDE.

Ao final da instalação, execute no terminal :

wineboot

Passo 8) Corrigindo o problema do BDE “unable to merge new configuration”

Se você tentar executar :

wine "/home/$USER/delphi6/drive_c/Arquivos de programas/Arquivos comuns/Borland Shared/BDE/bdeadmin.exe"

Provavelmente o BDE falhará, acontece que há um parametro do BDE pós-instalação que é desprovido de valor e isto impede-o de ser executado, estranho né que o próprio instalador faça isso ?

Para corrigir o problema, terá de criar um idapi32.cfg novinho em folha e para isso será infelizmente será necessário uma máquina com o BDE (SQLLinks incluso) instalado e devidamente configurado. Vá  até a estação Windows, abra o painel de controle, dê um duplo clique no ícone [BDE Administrator]. Selecione a guia “Configuration”, depois abra o item “System->INIT” e procure pelo parâmetro “SHAREDMEMLOCATION” e mude seu conteúdo para “9000″ (sem as aspas) :

Ajustando o BDE
Aplique as novas configurações e em seguida selecione no menu do BDE->Object->Save as Configuration, salve-o com o nome de idapi32.cfg por cima do já existente.

Copie o idapi32.cfg da estação Windows para seu wine em :
"/home/$USER/delphi6/drive_c/Arquivos de programas/Arquivos comuns/Borland Shared/BDE/"

Certifique-se de que haja apenas um idapi32.cfg, pois em algumas oportunidades pode permanecer a versão remanescente do mesmo arquivo, no entanto, em maiúsculo.

Infelizmente, mesmo mudando o parâmetro “SHAREDMEMLOCATION” na estação Windows e exportando-o, ainda assim, o arquivo idapi32.cfg exportado fica com SHAREDMEMLOCATION=nada na máquina onde foi copiado. Isso é irritante, pois forçará nossa intervenção no registro no wine, execute :

wine regedit

E procure pela chave [HKEY_LOCAL_MACHINE\Software\Borland\Database Engine\Settings\SYSTEM\INIT] e localize a variável “SHAREDMEMLOCATION” e troque o valor [em_branco] para [9000]. Pronto ! Agora execute o teste :

wine "/home/$USER/delphi6/drive_c/Arquivos de programas/Arquivos comuns/Borland Shared/BDE/bdeadmin.exe". Se parecer algo como isso aqui :
BDE instalado e configurado.

Então é porque funcionou perfeitamente, caso contrário, isto é, se ainda não estiver funcionando então desista de usar o Delphi. Pois há pouco que se possa fazer com um Delphi onde não se pode usar/manipular o BDE. Aqui comigo funcionou 100%, e reinstalei várias vezes e obtive sucesso em todas, mas o WINE está em constante desenvolvimento e a próxima versão pode estar sabotando.

Passo 9) Executando o Borland Delphi 6 :

Após a conclusão da instalação, precisamos criar um atalho para chamar o Delphi.
É interessante criar um bash-script porque o delphi está numa raiz diferente de ~/.wine e por essa razão não são criados atalhos no menu GNOME/KDE.

Use seu editor favorito para criar este arquivo :
<———– inicio de delphi6.sh ————->
#!/bin/bash
export WINEPREFIX="/home/$USER/delphi6"
# explico mais tarde a opcao : explorer /desktop=Delphi6,1024×768
wine explorer /desktop=Delphi6,1024×768 "c:\\Arquivos de programas\\Borland\\Delphi6\\Bin\\delphi32.exe"
<————- fim de delphi6.sh ————->
Salve o script acima como delphi6.sh e dê permissão de execução :
chmod a+x delphi32.sh

Como o escopo deste artigo é para programadores, voce provavelmente já sabe como criar um atalho para ele na área de trabalho não é mesmo?
Vejamos como fica o delphi 6 quando está carregado :

Note o fundo vazado, onde parte do papel de parede é visto. Pois é, isso é um problema !

Se voce minimizar qualquer uma das janelas do Delphi, elas são minimizadas, porém voce não sabe para exatamente onde ou como retorna-las. Foi por essa razão que usei o paramêtro "explorer /desktop=Delphi6,1024×768", assim todas as janelas são unidas como num desktop virtual e aparecem como uma única aplicação no GNOME Task List :
Virtual Desktop

No exemplo acima, usei 1024×768 como tamanho do desktop virtual, no entanto, é necessário ter cautela no tamanho, pois se voce colocar 100% da sua resolução então vai ter problemas para conseguir manipular direito esta janela enorme. Por isso, ao especificar a resolução tente escolher uma escala menor do que a máxima que seu monitor comporta, por exemplo, seu monitor tiver resolução de 1280×1024 então use um virtual desktop com 1024×768, se seu monitor tem o máximo de 1024×768 então tente 800×600 e assim por diante, essa é apenas uma sugestão porque voce pode usar qualquer tamanho. Meu monitor é widescreen e posso usar tranquilamente 1280×800 e ainda sobra espaço.

Será que compila ? Vejamos :

Compilando programas
Sim, podemos compilar o que quisermos.

Passo 10) Tá tudo liberado !

Tá liberado configurar o WINE do seu jeito, a partir de agora, voce pode acrescentar DLLs nativas, mudar a configuração de Win98 para WinXP, o que voce quiser fazer poderá fazer, mas fique avisado que modificações posteriores podem implicar em melhoria, mas também na inutilização do delphi.

Passo 11) Instalando o cliente do MSSQL 6.5

Um banco de dados legado. Se sua aplicação Delphi acessa um banco desses é necessário a instalação do cliente para esse banco de dados. Especialmente porque o BDE é muito sensível, já no DBExpress é tudo muito mais simples.

Coloque o cdrom do Microsoft SQL e já com a unidade de cdrom montada rode o setup dele :
cd /media/cdrom/sql65/i386
wine ./setup.exe

Vejas as telas em sequencia passo a passo :
Tela de Apresentação

Instalando
Ao se aproximar do FIM, o instalado do MSSQL abre um monte de telas entituladas “gerenciador de programas”, feche todas que aparecerem. E no final voce verá :
Instalação terminada.

Vamos configurar o cliente MSSQL 6.5 :
cd /home/$USER/delphi6/drive_c/MSSQL/BINN
wine windbver.exe

Vejamos algumas telas de configuração :

Configurando NetLibrary

Configurando de forma avançada.

Vamos executar o MSSQL Enterprise Manager :
wine SQLEW.EXE

Vejamos como fica o Enterprise Manager :
Abrindo o Enterprise Manager

12) Instalando o cliente de banco de dados FirebirdSQL

Também é possivel usar essa versão de Delphi para criar e acessar outras base de dados. Tenho usado o Delphi6 para criar aplicações que acessam base de dados FirebirdSQL. Usando componentes IBO, não somente é possivel desenvolver usando a dupla Delphi+WINE, como também os aplicativos gerados também rodam sob o WINE. Se voce quer experimentar isso vai precisar instalar o cliente para banco de dados FirebirdSQL :
Vá até a página :

http://www.firebirdsql.org/index.php?op=files&id=engine_203

e baixe o programa “Firebird-2.0.3.12981-1-Win32.exe” salvando-o em /home/$USER/delphi6/drive_c/temp
cd /home/$USER/delphi6/drive_c/temp
wine ./Firebird-2.0.3.12981-1-Win32.exe

Veja as algumas telas da instalação :

Apenas o cliente.

Note que não é preciso instalar os componentes do Servidor, exatamente porque desejamos ficar apenas com o cliente. Se desejássemos instalar o servidor, teríamos feito no próprio Linux. Vejamos a mensagem de instalação completada :

Termino da instalação.

Será que consigo rodar o Delphi minhas aplicações que acessam base de dados MSSQL e FirebirdSQL ? Certamente que sim.

Passo 13) Testando o acesso a base de dados FirebirdSQL

Um ótimo teste para sabermos se qualquer aplicativo executável win32 acessaria a base de dados Firebird é instalando um gerenciador de banco de dados, existem muitos, mas vou usar o IBOConsole que é bastante simples.

Primeiramente vá até a página :

http://www.mengoni.it/Downloads/

e baixe o arquivo IBOConsoleSetup.exe, salve-o na pasta /home/$USER/delphi6/drive_c/temp.

Para instala-lo execute no terminal :
export WINEPREFIX="/home/$USER/delphi6"
cd /home/$USER/delphi6/drive_c/temp
wine ./IBOConsoleSetup.exe

Prossiga com a instalação com o modo trivial do tipo Next->Next->Finish :
Instalando

Ao completar a instalação, experimente executa-lo no terminal :


export WINEPREFIX="/home/$USER/delphi6"
wine "C:/Arquivos de programas/IBOConsole/IBOConsole.exe"

Registrando um servidor :

Registrando um servidor

Registrando um banco de dados :

Registrando um banco de dados

Recuperando informações do banco de dados :

Recuperando informações do banco de dados

Pois é, funcionou.
Assim podemos ter certeza que a maioria dos aplicativos comerciais que usam Interbase/Firebird podem ser executados no Linux via WINE.

Passo 14) Executando novos aplicativos

Se voce precisar executar novas instalações e agregar mais coisas a instalação do Delphi voce pode executar :

wine explorer shell

Assim voce pode navegar no C:\ e outros drives, executar aplicativos copia-dos para ../drive_c, etc… mas ele é um gerenciador de arquivos e shell simples. Devem existir outros gerenciadores melhores, mas tem que procurar isso no mundo windows e tem que ser um que não dependa do próprio Windows.

Passo 15)Simplificando a vida com um menu seletor

Que tal um script já pronto com um menu seletor semelhante a este :
Menu Seletor.
Baixe este arquivo :

#!/bin/bash
# Borland Delphi 6 for Linux
# Seletor de programas
# By Hamacker (sirhamacker [em] gmail.com)

# Este script só funciona se delphi6 (.wine renomeado)
# estiver no diretorio :

export WINEPREFIX="/home/$USER/delphi6"

if ! [ -d "$WINEPREFIX" ] ; then
echo "Não foi encontrado o diretorio do delphi6 em lugar algum"
echo "Este sistemas esta treinando para encontrar o"
echo "delphi6 nos seguintes lugares :"
echo " /home/$USER/delphi6"
exit 2;
fi

# indo para o diretorio padrao
cd $WINEPREFIX

# setando algumas variaveis a respeito do aplicativo
APP_NAME="delphi6"
APP_DESC="Borland Delphi 6"
app_icon="$WINEPREFIX/delphi6.xpm"

# creating shortcut in desktop area
#SHORTCUT="/usr/share/applications/$APP_NAME.desktop"
SHORTCUT="/home/$USER/.local/share/applications/$APP_NAME.desktop"

if [ -f $SHORTCUT ] ; then
echo "Shortcut for $APP_DESC already exist !"
else
echo "[Desktop Entry]">$SHORTCUT
echo "Encoding=UTF-8">>$SHORTCUT
echo "Version=1.0">>$SHORTCUT
echo "Type=Application">>$SHORTCUT
echo "Exec=$WINEPREFIX/$APP_NAME.sh">>$SHORTCUT
echo "Icon=$app_icon">>$SHORTCUT
echo "X-GNOME-DocPath=">>$SHORTCUT
echo "Terminal=false">>$SHORTCUT
echo "Name=Menu do $APP_DESC">>$SHORTCUT
echo "GenericName=Menu do $APP_DESC">>$SHORTCUT
echo "Comment=Menu do $APP_DESC">>$SHORTCUT
echo "Categories=Development;">>$SHORTCUT
chmod a+x $SHORTCUT
echo "I create a $APP_DESC shortcut for you, enjoy!"
fi;

APP_DELPHI6="c:/Arquivos de programas/Borland/Delphi6/Bin/delphi32.exe"
APP_DBEXPLOR="c:/Arquivos de programas/Borland/Delphi6/Bin/dbexplor.exe"
APP_PCE="c:/Arquivos de programas/Borland/Delphi6/Bin/pce.exe"
APP_SQLMON="c:/Arquivos de programas/Borland/Delphi6/Bin/sqlmon.exe"

clear;
RET="—"
while [ "$RET" != "sair" ] ; do
RET=`zenity –width=700 –height=500 –window-icon=$app_icon \
–list –title "$APP_DESC para Linux" \
–text "Qual aplicativo gostaria de executar ?" \
–column "Nome" \
–column "Descrição" \
"delphi6" "Borland Delphi 6" \
"dbexplor" "SQL Explorer" \
"pce" "Package Collection Editor" \
"sqlmon" "SQL Monitor" \
"mssql" "MSSQL Enterprise Manager" \
"vidylogin" "VIDY Login" \
"iboconsole" "IBOConsole" \
"explorer" "Gerenciador de Arquivos do Windows" \
"taskmgr" "Gerenciador de Tarefas do Windows" \
"regedit" "Editor de Registro do Windows" \
"winecfg" "Configurador do WINE" \
"sair" "Sair"`

if [ "$RET" == "delphi6" ] ; then
echo "Executando $APP_DESC…"
#wine explorer /desktop=Delphi6,1280×800 "$APP_DELPHI6"&
wine explorer /desktop=default,1400×800 "$APP_DELPHI6"&
#wine "$APP_DELPHI6"&
fi

if [ "$RET" == "dbexplor" ] ; then
echo "Executando SQL Explorer…"
wine "$APP_DBEXPLOR"&
fi

if [ "$RET" == "pce" ] ; then
echo "Executando Package Collection Editor…"
wine "$APP_PCE"&
fi

if [ "$RET" == "iboconsole" ] ; then
echo "Executando o iboconsole…"
wine "C:/Arquivos de programas/IBOConsole/IBOConsole.exe"
fi

if [ "$RET" == "sqlmon" ] ; then
echo "Executando SQL Monitor…"
wine "$APP_SQLMON"&
fi

if [ "$RET" == "taskmgr" ] ; then
echo "Executando Windows Task Manager…"
wine taskmgr&
fi

if [ "$RET" == "explorer" ] ; then
echo "Executando Windows Task Manager…"
wine explorer shell&
fi

if [ "$RET" == "vidylogin" ] ; then
echo "Executando o VIDYLogin"
#wine c:/vidy/bin_cs/vidylogin.exe&
wine explorer /desktop=Delphi6 "c:/vidy/bin_cs/vidylogin.exe"
fi

if [ "$RET" == "regedit" ] ; then
echo "Executando Windows Regedit Editor…"
wine regedit&
fi

if [ "$RET" == "mssql" ] ; then
echo "Executando MSSQL Enterprise Manager…"
wine c:/mssql/binn/sqlew.exe&
fi

if [ "$RET" == "winecfg" ] ; then
echo "Executando o configurador do Wine…"
winecfg&
fi
done

unset WINEPREFIX
exit 0;

Salve-o como /home/$USER/delphi6/delphi6.sh. Este é um script-bash que usa um componente chamado zenity, ele fornece alguns componentes graficos para o GNOME. É aconselhável criar ícones no formato .xpm para representar aplicativos como delphi6.xpm, dbexplor.xpm,pce.xpm,sqlmon.xpm.

Sob Licença Creative Commons :

Você pode :

  • criar obras derivadas

Sob as seguintes condições:

  • Atribuição. Você deve dar crédito ao autor original, da forma especificada pelo autor ou licenciante.
  • Uso Não-Comercial. Você não pode utilizar esta obra com finalidades comerciais.
  • Para cada novo uso ou distribuição, você deve deixar claro para outros os termos da licença desta obra.
  • Qualquer uma destas condições podem ser renunciadas, desde que Você obtenha permissão do autor.
  • Nothing in this license impairs or restricts the author’s moral rights.
  • Quando publicado notra mídia, apenas como cortesia, notifique o autor.

Conclusão :

A idéia aqui é apenas instalar algo legado que roda com dificuldades no WINE, mas roda. A maioria dos aplicativos comerciais criados com o Delphi rodam no WINE, e os que não rodam necessitam apenas de modificações pequenas no geral.

Eu estravaguei um pouco instalando o próprio Delphi no WINE para justificar que se o próprio Delphi roda, porque aplicativos criados com ele não rodaria ? Claro que existem excessões, a medida que voce utiliza componentes de terceiros voce começa a comprometer a compatibilidade do WINE, mas não é assim para todos os componentes, por exemplo, estou usando satisfatóriamente a suíte IBO para acessar base de dados do FirebirdSQL, mas poderia usar outras suítes também. Os aplicativos que acessam base de dados MSSQL 6.5 foram feitos com o Delphi6 e estes rodam sob o WINE, inclusive aplicativos que criam sinais na bandeja do Windows fazem o mesmo na bandeja do GNOME.

Este é um blog e não uma página de suporte técnico. O que aprendí passo com prazer a outros, mas não espere que eu apareça e tire as suas dúvidas com programação ou consultoria [não remunerada]. Leve suas dúvidas à listas de discussão onde elas serão apreciadas melhor.

Algo que gostaria de observar é que alguns artigos que postei aqui foram parar em muitos lugares diferentes, eu aprecio isso. No entanto, também foram prar em páginas de assinantes e/ou conteúdo reservado, e disso não gostei muito. A licença de uso dos artigos nesse blog é Creative Commons conforme delineado na página inicial, para evitar o caratér comercial ou exclusividade, daí o motivo de estar colocando neste artigo uma seção dedicada a  Licença de uso para que não passe despercebido pelos copiadores de plantão.

9 de Abril de 2008

A popularidade do GTK tá mesmo em alta!

Arquivado em: GNU/Linux, Geral, ubuntu — hamacker @ 8:07

Pois é, GTK rules !

Kleemann GTK, o supercarro dinamarquês

Foto : Kleemann GTK, o supercarro dinamarquês

7 de Abril de 2008

Backup com unidades usb externas

Arquivado em: GNU/Linux, ubuntu — hamacker @ 11:55

(Novamente o wordpress tá transformando - - seguidos nisso aqui : –, por isso, se houver erros no script atente-se que voce pode estar copiando e colando algo diferente do que planejei).

Certamente um dos maiores atrativos de se usar discos usb’s externos é a realização de backup, isto é, cópia de segurança. Dentro de empresas, não há nada melhor. Os tapes, é claro tem seu lugar ao sol, especialmente para aqueles que tem que guardar backups diários no modo completo (full) ou diferencial por toda vida útil. Para aqueles que preferem um backup incremental, ou mesmo para arquivar mídias como filmes, músicas e afins, o backup em disco usb externo é insuperável, mesmo o pendrive com 4GB já dá para fazer bastante coisa.

Apesar dessas vantagens, no linux, muita gente faz a cópia do modo trivial, isto é, abre um gerenciador  de arquivos e copia os arquivos dum local origem para a unidade usb destino. Isto não está errado, porém dependendo do tamanho do local de origem a ser copiado é melhor esperar sentado, pois vai demorar. Um outro problema para esse tipo de solução é a falha humana para quem tem de lidar com mais de uma unidade de disco usb, a chance de ocorrer num daqueles dias de ressaca a inversão dos discos pode ser fatal e deve ser evitado a qualquer custo. Mas será que há como evitar esses problemas ? Sim, há.

Compreendendo a solução

Programas para a realização de backup já existem, inclusive com interfaces gráficas. Mas se você quer fazer um backup do seu jeito e com características pessoais ou da sua empresa então talvez a melhor solução seja programar. “Ah, mas eu não sou programador !” - talvez você diga, calma espere. A programação é algo simples, um simples script-bash resolve e vou detalhar como fazê-lo.

Para resolver o problema de não ter que copiar todos os arquivos de uma única vez e sempre, vamos usar o rsync, um utilitário que existe em praticamente em todos os sistemas, este utilitário é capaz de fazer um backup incremental onde copiaria apenas os arquivos que modificaram desde o ultimo backup e com a possibilidade de sincronizar entre origem e destino até mesmo as exclusões.

Para evitar que façamos o backup na unidade de disco usb errada, podemos usar o UUID que cada um desses discos possuem em sua tabela de particionamento. Para você entender melhor, cada partição do disco possui um volume de identificação (volume-id) que em nosso sistema linux vai chamar-se UUID. Quando particiona um disco, essa nova partição (ou volume) recebe um UUID novo que raramente será igual a de outro, é quase um SERIAL NUMBER. Isto pode ser utilizado de diversas formas a seu favor. Você deve lembrar-se que antigamente os discos recebiam uma sequencia em função da ordem dos discos, particionamento e dos jumpers, assim se estivesse rodando um Sistema Operacional que foi inicialmente instalado no HD-0 como master, este sistema poderia não funcionar se mudássemos essa ordem. No Windows eu tinha um problema com discos externos, pois dependendo da porta USB onde eu plugasse, a letra do drive poderia ser diferente. No Debian de versões atrás também era assim, dependendo donde plugava era sdc, sdd,… Hoje, no linux usando o UUID evitamos esse problema porque o UUID do disco é mais relevante que a localização(ou ordem) física desse dispositivo. Usando o UUID podemos evitar que backups de segunda-feira venham parar no disco de terça-feira por exemplo.

Mão na massa

Abra o terminal do seu sistema linux e plugue o disco usb em seu sistema, se quiser experimentar com o pendrive pode faze-lo também. No terminal digite :

$dmesg

O resultado será algo como  :

(...)
[ 3079.250948] scsi 6:0:0:0: Direct-Access     SAMSUNG  HM121HI               PQ: 0 ANSI: 2 CCS
[ 3079.258015] sd 6:0:0:0: [sdc] 234441648 512-byte hardware sectors (120034 MB)
[ 3079.258711] sd 6:0:0:0: [sdc] Write Protect is off
[ 3079.258716] sd 6:0:0:0: [sdc] Mode Sense: 00 38 00 00
[ 3079.258720] sd 6:0:0:0: [sdc] Assuming drive cache: write through
[ 3079.259834] sd 6:0:0:0: [sdc] 234441648 512-byte hardware sectors (120034 MB)
[ 3079.260473] sd 6:0:0:0: [sdc] Write Protect is off
[ 3079.260478] sd 6:0:0:0: [sdc] Mode Sense: 00 38 00 00
[ 3079.260482] sd 6:0:0:0: [sdc] Assuming drive cache: write through
[ 3079.260487]  sdc: sdc1
[ 3079.833370] sd 6:0:0:0: [sdc] Attached SCSI disk
[ 3079.833443] sd 6:0:0:0: Attached scsi generic sg3 type 0

As indicações acima dizem que o dispositivo está atachado e foi reconhecido como [sdc], este é o endereço físico, memorize-o para a próxima seção. Se nada aparecer é porque seu disco não foi reconhecido.

E o UUID ? Execute no terminal :

$ ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 2008-04-07 06:01 188669D9075BD3E6 -> ../../sda1
lrwxrwxrwx 1 root root 10 2008-04-07 06:01 2C88743C8874071C -> ../../sda2
lrwxrwxrwx 1 root root 10 2008-04-07 09:52 4741-75E1 -> ../../sdc1
lrwxrwxrwx 1 root root 10 2008-04-07 06:01 47c8851f-d196-4d18-bed3-ae7ed353076a -> ../../sda4
lrwxrwxrwx 1 root root 10 2008-04-07 06:01 589dedee-71e8-49ab-a7eb-f8b06c977446 -> ../../sdb1
lrwxrwxrwx 1 root root 10 2008-04-07 06:01 5ecb70c1-57bc-48f4-9226-9de9f7176e0f -> ../../sda3

Na relação acima voce deve procurar o seu disco, lembre-se que o UUID da(s) sua(s) partição(ões) é aquele que iniciar-se com [sdc], portanto só há uma partição :

lrwxrwxrwx 1 root root 10 2008-04-07 09:52 4741-75E1 -> ../../sdc1

O código seqüencial 4741-75E1 é o UUID para a partição usada neste disco (sdc1). Repare que esse UUID está apontando para ../../sdc1. Agora matamos a charada, se eu achar o UUID acho também o /dev/sdc1, isso será útil para montarmos sempre o mesmo disco e evitarmos o erro de troca de unidade.

Criando um script básico para backup usando o UUID

Carregue seu editor preferido e copie para ele as linhas abaixo :

     1	#/bin/bash
2	# Script desenvolvido por :
3	# Hamacker <sirhamacker em gmail.com>
4	# Licença : GNU GPL 3
5	# pasta no meu sistema que preciso fazer o backup
6	# o parametro especificado a baixo é o meu HOME"
7	# altere conforme suas necessidades
8	backup_origem="/home/$USER"
9
10	# pode ser unidades remotas também se do outro lado houver
11	# o openssh-server instalado. Ex :
12	#backup_origem="root@192.168.1.2:/home/fulano"
13
14	### Nem todo tipo de arquivo precisa ir para o backup
15	### então é uma boa idéia criar um arquivo que possua
16	### dentro o nome de pastas que deverão ser ignoradas
17	### Este arquivo pode ter este conteúdo :
18	### .recycle/*
19	### /home/fulano/Desktop/*
20	### /home/fulano/downloads/*
21	### *.log
22
23	backup_lista_negra="/etc/backup_lista_negra.txt"
24	if  ! [ -e "$backup_lista_negra" ] ; then
25	   sudo touch $backup_lista_negra
26	fi
27
28	### meu disco de backup tem sempre o mesmo UUID
29	### para evitar que eu faça backup num disco errado
30	### altere o UUID abaixo para o UUID do volume desejado
31	backup_disco=”4741-75E1″
32
33	if  ! [ -e "/dev/disk/by-uuid/$backup_disco" ] ; then
34	   echo “O disco [$backup_disco] não foi encontrado no sistema.”
35	   exit 2;
36	fi
37
38	### Onde montaremos nosso disco de backup ?
39	### altere o caminho abaixo conforme suas necessidades.
40	backup_montagem=”/media/backup”
41
42	if ! [ -d $backup_montagem ] ; then
43	  sudo mkdir -p $backup_montagem
44	fi
45
46	### Que pasta deverá ser criada dentro da unidade usb para
47	### armazenar o backup ?
48	### Do jeito que esta abaixo o nome da pasta será AAAA-MM
49	### isto é, ano seguido do mes, porém voce pode alterar para
50	### algo como :
51	### backup_subpasta=”meus_backups”
52	### se desejar.
53	backup_subpasta=”meus_backups”
54	#backup_subpasta=”`date +%Y-%m`”
55
56	### Nao altera a linha abaixo
57	backup_destino=”$backup_montagem/$backup_subpasta”
58
59	### Tipo de partição usado no volume
60	backup_particao=”auto”  # serve para ext2, ext3 e vfat
61
62	# Opcoes de montagem
63	# Eu uso o async por ser mais rápido, porém no modo sync
64	# é mais confiável especialmente com pendrives.
65	# Altere conforme suas necessidades, lembrando que cada
66	# tipo de partição pode ter algumas opções que não
67	# funcionam noutro tipo.
68	backup_montagem_opcoes=”async,rw,users”
69
70	### Montando a unidade de destino do backup
71	sudo mount -t $backup_particao /dev/disk/by-uuid/$backup_disco  $backup_montagem -o $backup_montagem_opcoes
72
73	### Realizando o backup com o RSYNC
74	# -r = recursivamente
75	# -p = preservar permissões
76	# -t = preservar a data/hora
77	# -v = verbose, ie. exibe na tela mensagens do que está ocorrendo
78	# -z = para fazer a compressão dos arquivos antes de enviar pela rede.
79	#      longos backups sem compressão pela rede é suicidio, especialmente
80	#      se houver usarios de sistema sistema remoto com ssh ou X.
81	# Há muitas outras opções que podem se aplicar a backup incremental,
82	# diferencial ou sincronização absoluta, ou aplicar novos sufixos para
83	# pastas, remover arquivos antes ou depois da cópia, etc…
84	# PS: exclude-from logo abaixo é precedido por dois - - juntos e não um único
85	#     traço, isso é culpa do wordpress.
86	sudo rsync -rptvz $backup_origem $backup_destino –exclude-from=$backup_lista_negra
87
88	### Se houve erros então…
89	if [ $? -ne 0 ] ; then
90	    echo “backup falhou totalmente ou parcialmente.”
91	fi
92
93	# concluido o backup entao desmontar a unidade
94	sudo umount $backup_montagem
95	if [ $? -ne 0 ] ; then
96	  # se nao desmontou da 1a tentativa, tentar de novo
97	  sudo umount $backup_montagem
98	  # se falhou na segunda tentativa entao é melhor avisar
99	  if [ $? -ne 0 ] ; then
100	    echo “Não foi possivel desmontar a unidade $backup_montagem”
101	    echo “Isso terá de ser feito manualmente.”
102	  fi
103	fi
104
105	echo “Fim do backup”

PS: Eu identei direitinho, mas o wordpress simplesmente suprime os espaços no inicio do paragrafo, arghhh! Ele não fazia isso antes, é a primeira vez. Para solucionar isso, tive que numerar as linhas. Sei que vai lhe dar trabalho para retirar os numeros no inicio, mas se não fizesse isso voce poderia perder a capacidade de concentrar-se no que o script está fazendo linha por linha.

Salve o arquivo acima como backup-fulano.sh e pimba! você vinculou o backup de $backup_origem ao disco com o volume 4741-75E1. Se você é nova