Reconfigurar o CPAN

3 de agosto de 2009

Ao tentar atualizar a versão do Bugzilla em um de meus servidores encontrei um problema com o módulo Perl “Template”. O Bugzilla dizia que a versão instalada era antiga e incompatível com os requisitos atuais, mas quando tentava atualizar o módulo Template através do CPAN, recebia uma mensagem dizendo que o módulo estava atualizado.

Depois de muito procurar no Google, descobri que minhas configurações para o CPAN é que estavam erradas: estavam apontando para um mirror antigo. Para reconfigurar o CPAN, o basta entrar no CPAN e reconfigurá-lo (inclusive escolhendo os novos mirrors de download de módulos) com os seguintes comandos:

perl -MCPAN -e shell
o conf init
o conf init urllist
o conf commit

Ajustes no Gnome após a instalação do openSUSE

28 de julho de 2009

Uma instalação padrão do openSUSE instala o Gnome como ambiente gráfico padrão, mas eu não gosto de algumas configurações pré-determinadas:

  • Na tela de login aparece o nome do usuário e seu login: não gosto disso por questões de segurança;
  • Ao iniciar uma aplicação, a janela do Application Browser fecha automaticamente: não gosto disso pois sempre tenho que ficar voltando no Application Browser para abrir mais de uma aplicação;
  • Não gosto do botão de menu do Gnome (o Slab): prefiro o estilo antigo, tipo KDE ou Windows mesmo.

Para não exibir o nome/login do usuário na tela de login, como usuário root, acesse o Gnome Configuration Editor (Application Browser -> System -> Gnome Configuration Editor). Na lista de propriedades (as pastas na parte esquerda), vá para apps -> gdm -> simple-greeter. Nesse momento as propriedades aparecerão na parte direita da tela. Marque a opção “disable_user_list” e depois clique com o botão direito do mouse sobre essa mesma opção e escolha “Set as Mandatory”. Isso configurará essa opção de não mostrar a lista de usuários como mandatória (obrigatória) para todos. Outras opções que podem ser interessantes para você são: “banner_message_enable” e “banner_message_text”, que exibem uma mensagem na tela de login, e “disable_restart_buttons”, que desativa os botões de restart na tela de login.

Para fazer com que o Application Browser não feche após escolher uma aplicação, ainda no Gnome Configuration Editor vá para desktop -> gnome -> applications -> main-menu e desabilite a propriedade “ab_exit_shell_on_action_start“. Coloque como mandatória se quiser.

Para colocar o menu antigo do Gnome na barra, basta clicar com o botão direito do mouse sobre a barra, escolher a opção “Add to Panel” e acrescentar o “Traditional Main Menu“.

Ajuste das tabs no Firefox 3.5

22 de julho de 2009

O Firefox continua sendo o melhor browser da atualidade e, com o lançamento da versão 3.5, temos ainda mais novidades e melhorias. Entretanto, 3 alterações no comportamento padrão do Firefox nessa nova versão me desagradaram bastante:

  • O botão de fechar não aparece quando só tem uma tab aberta;
  • Quando fechamos a última tab (com o comando Ctrl-W), o Firefox inteiro fecha também; e
  • Quando temos várias tabs abertas, o botão de fechar somente aparece na tab ativa.

Entretanto, com alguns ajustes, é possível configurar esses comportamentos.

1. Para mostrar o botão de fechar quando só tem uma tab aberta (a última tab), edite o arquivo ~/.mozilla/firefox/7dewbsta.default/chrome/userChrome.css e adicione as seguintes linhas (note que o diretório mostrado aqui - 7dewbsta.default - é criado aleatoriamente pelo Firefox, portanto em sua máquina o nome pode ser outro):

.tabbrowser-tabs[closebuttons="alltabs"] > .tabbrowser-tab > .tab-close-button {
 display: -moz-box !important;
 }
 .tabbrowser-tabs:not([closebuttons="noclose"]):not([closebuttons="closeatend"]) >
.tabbrowser-tab[selected="true"] > .tab-close-button {
 display: -moz-box !important;
 }

Encontrei essa dica no endereço: http://mozillalinks.org/wp/2009/07/disable-tab-tearing-and-six-other-firefox-3-5-tab-tweaks/ que também tem outras dicas interessantes.

2. Para que ao fechar a última tab o Firefox continue aberto, digite na barra de endereços a URL especial “about:config” (sem as aspas), procure a propriedade browser.tabs.closeWindowWithLastTab e altere para “false”.

3. Para que o botão de fechar seja exibido mesmo se existirem várias tabs abertas, digite na barra de endereços a URL especial “about:config” (sem as aspas), procure a propriedade browser.tabs.tabClipWidth e altere seu valor para “50″.

Como remover dados EXIF de suas fotos com o ImageMagick

24 de maio de 2009

Em algumas situações você precisa remover qualquer dado EXIF e/ou comentários de suas fotos digitais. Eu, por exemplo, fiz um script que prepara diversas fotos para publicação em um site (www.casadealegria.com.br), mas quando os fotógrafos gravam os originais com EXIF, algumas vezes a orientação da foto sai “errada”, pois ela está gravada de um jeito (por exemplo, horizontal) mas o EXIF me diz outra coisa (por exemplo: vertical).

Nessas situações é necessário remover o EXIF das fotos e, no linux, uma das melhores maneiras para fazer isso é utilizando o excepcional ImageMagick. O comando é simples:

mogrify -strip foto.jpg

Se necessário, você pode remover o EXIF de todas as fotos em um diretório, usando o comando:

for i in `ls *.jpg`; do mogrify -strip $i; done;

Visite o site do ImageMagick (www.imagemagick.org) e conheça todas suas funcionalidades! É um dos melhores softwares para tratamento em lote de fotos que eu já utilizei!

Doutrinação comunista nas escolas

13 de maio de 2009

Todo mundo que tem um filho na escola, pública ou particular, deve estar atendo à doutrinação “esquero-sócio-comunista-marxista” que os professores empurram para os alunos. A coisa é tão nojenta que deveria ser combatida por todos, mas nada é feito.

Se você, assim como eu, tem filho na escola, é bom prestar atenção. Vou postar aqui alguns links sobre o assunto. Leia, aprenda e proteja seu filho!

Repositórios de pacotes do openSUSE

12 de maio de 2009

Após a instalação do openSUSE, você terá que definir quais repositórios de pacotes utilizará para manter seu sistema atualizado e para fornecer novos softwares. Como existem diversos repositórios de pacotes, oficiais e de terceiros, a escolha de quais repositórios utilizar (e em qual ordem de prioridade) pode ser um pouco difícil para os iniciantes no openSUSE.

Os repositórios básicos estão detalhados na documentação do openSUSE:

Obviamente os repositórios que você utilizará dependem de suas necessidades, mas para facilitar os iniciantes apresento aqui uma configuração básica de repositórios que devem ficar habilitados, em ordem de prioridade:

Esses repositórios servem para manter seu sistema atualizado e com softwares de terceiros disponíveis. Minha sugestão é que você comece com esses repositórios e acrescente outros de acordo sua demanda (por exemplo: pacotes fonte, outros pacotes de terceiros, etc.).

Oracle SQL Developer para acessar diversos bancos de dados no linux

7 de maio de 2009

Se você trabalha com o banco de dados Oracle, certamente conhece o Oracle SQL Developer, um software gratuito para auxiliar o desenvolvimento, implementação e administração de bancos de dados Oracle. Com ele é possível navegar pelos objetos do banco de dados, rodar scripts, criar relatórios, criar e debugar procedimentos PL/SQL, e realizar algumas tarefas específicas caso você também utilize o Oracle Application Express.

Por muito tempo eu utilizei o TOra (Toolkit for Oracle) para desenvolvimento Oracle no Linux mas, há mais de um ano, mudei para o Oracle SQL Developer por duas razões:

  1. Estava tendo muita dificuldade em fazer o TOra compilar e rodar corretamente tanto no openSUSE quanto no SuSE Linux Enterprise Server (essa dificuldade ocorria com as versões 1.x do TOra; em novembro/2008 foi lançada a versão 2.0 do TOra, mas não cheguei a testá-la e portanto não sei se os problemas de compilação e execução ainda continuam ou se já foram solucionados); e
  2. Outros desenvolvedores de meu grupo utilizam Windows e o TOra é somente para Linux.

Mas o fator decisivo para que eu utilizasse o Oracle SQL Developer é sua capacidade de acessar e trabalhar com outros bancos de dados a partir do linux, utilizando conexões JDBC. Especificamente, eu acesso e utilizo diariamente os seguintes bancos de dados através do Oracle SQL Developer:

O único banco de dados que ainda não consegui acessar é o PostgreSQL: apesar de já existir um JDBC para o PostgreSQL (PostgreSQL JDBC Driver), ele não parece funcionar com o Oracle SQL Developer. Quem utiliza Windows consegue ainda trabalhar com bancos Access, mas eu nunca usei essa opção.

Em resumo: se você precisa acessar e trabalhar com diversos bancos de dados no linux, o Oracle SQL Developer é uma das melhores opções. O único problema é se você precisar trabalhar com o PostgreSQL (mas mesmo assim você pode utilizar outras formas de conexão, como o bom e velho Emacs Wink)!

Onde fica a lixeira no openSUSE?

27 de abril de 2009

As vezes, depois de muito tempo utilizando a interface gráfica (eu uso o Gnome), a lixeira em seu desktop fica lotada de arquivos e outras coisas que você apagou. Para limpar a lixeira basta clicar com o botão direito do mouse e escolher a opção apropriada, nada mais fácil.

Entretanto, em algumas situações onde a lixeira está muito cheia, digamos 600 MB ou mais com um número muito grande de arquivos pequenos, o processo de esvaziá-la via desktop pode ser um pouco demorado. Nesses casos eu prefiro apagar a lixeira via linha de comando. Mas onde exatamente fica a lixeira?

Em ~/.local/share/Trash ! Lá você encontrará dois diretórios: files e info. Basta apagar o conteúdo desses dois diretórios (via rm, por exemplo) que sua lixeira será esvaziada.

Capture FireWire no openSUSE 11.1

25 de abril de 2009

Quando eu tentei usar uma placa ExpressCard com portas FireWire em meu laptop rodando openSUSE 11.1, ao espetar a câmera digital (Sony Handycam DCR-HC32), o linux não reconhecia o dispositivo corretamente. Não achei ainda uma solução definitiva, mas o procedimento para correção é simples: coloque a placa, conecte a câmera, ligue a câmera e só então dê o boot com o openSUSE. Agora tudo vai ser reconhecido e funcionar corretamente.

Como montar um arquivo ISO no linux

20 de abril de 2009

Se você tem a imagem de um CD ou DVD (geralmente é um arquivo *.iso) e precisa acessar seu conteúdo, não precisa queimar uma mídia somente para obter alguns arquivos. Basta montar a imagem em qualquer diretório. No linux, faça o seguinte:

mount -t iso9660 -o ro,loop=/dev/loop0 arquivo.iso diretorio

Esse comando monta a imagem do CD/DVD dentro do diretório especificado, que pode ser acessado normalmente pelo sistema. Quando terminar, basta executar o comando umount diretorio.

Como instalar presets no XMMS

12 de abril de 2009

Instalar presets no XMMS é muito fácil. Em primeiro lugar faça o download do arquivo necessário:

wget http://xmms.org/misc/winamp_presets.gz

Depois descompacte o arquivo no diretório correto:

gunzip -c winamp_presets.gz > ~/.xmms/eq.preset

Agora é só abrir o XMMS e carregar os presets.

Crash do XMMS ao usar double size

11 de abril de 2009

Algumas vezes, ao utilizar o XMMS em tamanho duplo (double size), o XMMS simplesmente congela ou dá um crash total. Para resolver esse problema, ajuste a seguinte variável na chamada do programa:

XLIB_SKIP_ARGB_VISUALS=1 /usr/bin/xmms

SSH e SCP sem senha

4 de abril de 2009

Em situações nas quais você precisa transferir periodicamente arquivos entre computadores, uma solução bastante utilizada é criar scripts para realizar a transferência via SCP. O problema é que, por padrão, os computadores sempre solicitam uma senha para autorizar as conexões via SSH/SCP. Para que seu script funcione sem a presença humana para digitar as senhas, basta configurar o SSH/SCP para autenticação via chaves pública e privada.

Leia o resto desse post »

Como usar o Wget para fazer o mirror de um site

3 de abril de 2009

Com certeza você já passou por uma situação na qual gostaria de ter uma cópia exata de algum site em seu computador para leitura local off-line ou para servir de fonte de referência rápida. Existem alguns utilitários específicos para fazer esse mirror, mas eu utilizo o bom e conhecido Wget. O comando é o seguinte:

wget -m -k -np --wait=20 --limit-rate=20k -U Mozilla URL

Explicando as opções do comando:

  • -m: habilita outras opções necessárias para fazer o mirror do site;
  • -k: converte os links das páginas para ajustá-los à visualização local;
  • -np: não faz o mirror do diretório pai, garantindo assim que somente os arquivos abaixo de uma certa hierarquia são baixados;
  • –wait=20: faz com que o wget aguarde 20 segundos entre tentativas de retrievals. Essa opção é necessária para diminuir a carga no servidor e impedir que você seja colocado em uma blacklist;
  • –limit-rate=20k: limita a velocidade do download para 20KB/s. Essa opção é necessária para diminuir a carga no servidor e impedir que você seja colocado em uma blacklist;
  • -U Mozilla: faz com que o wget se identifique para o servidor como o browser Mozilla ao invés de se identificar como Wget. Isso é necessário pois alguns servidores se recusam a exibir o conteúdo caso o cliente não se identifique como um browser válido; e
  • URL: é o endereço da URL com a qual você iniciará o mirror (por exemplo, a página inicial do site).

Apesar de ser possível fazer o mirror, lembre-se de que o tamanho do site pode ser muito grande, o que levará muito tempo para o download. Também não é uma boa idéia sair fazendo mirrors de todos os sites por aí: seja criterioso e faça somente o mirror de alguma coisa que você realmente precisa usar com freqüência, mesmo estanto off-line.

fsck congela a inicialização do SLES

1 de abril de 2009

Há alguns dias reiniciamos um servidor de banco de dados para manutenção de rotina e, ao dar boot, o SLES forçava uma checagem dos discos via fsck que congelava o computador (um Dell PowerEdge 2900, com 2 processadores 64 bits, 8 GB RAM, 10 discos SAS de 300GB cada, com placa controladora Dell Perc6, sendo os discos configurados como RAID 10).

Ainda não descobrimos porque o fsck congelava essa máquina, mas para colocá-la novamente on-line, tivemos que entrar no Rescue System do SLES (com o DVD de instalação), montar o sistema de arquivos e utilizar o comando tune2fs para desabilitar a checagem do fsck durante o boot. Quem descobriu o problema e a solução foi o pessoal da Spirit Linux!

O comando tune2fs -l /dev/sda6, por exemplo, lista diversos parâmetros do filesystem. Preste atenção aos parâmetros:

  • Maximum mount count: define o número máximo de vezes em que o sistema pode ser montado antes de ter uma checagem forçada pelo fsck; e
  • Check interval: define o intervalo de tempo máximo que o sistema poderá ficar antes de ter uma checagem forçada pelo fsck.

No nosso caso, o maximum mount count era de 500, e o check interval de 2 meses. Para desabilitar a checagem forçada do fsck, fizemos:

tune2fs -c 0 /dev/sda6
tune2fs -i 0d /dev/sda6

Esses comandos configuram o sistema de arquivos para ignorar a contagem de quantas vezes o sistema é montado e o intervalo sem uma checagem pelo fsck. Feito isso o sistema foi inicializado normalmente.

Para maiores informações, veja a documentação do tune2fs.

Como desligar a tela de splash na inicialização

29 de março de 2009

Quando você instala o SuSE Linux Enterprise Server (SLES) ou o openSUSE, por padrão é instalada uma tela de splash (splash screen) que é exibida durante a inicialização do sistema.

Fica bonitinho, mas existe um problema: se ocorrer algum erro que congele o sistema durante a inicialização, você estará vendo a tela de splash, não conseguirá ver a mensagem de erro e não terá a menor idéia do que está ocorrendo. Na verdade, estou escrevendo essa dica pois exatamente hoje tive um problema em um servidor: ao dar boot o sistema imediatamente congelava e a única coisa que eu via era a tela de splash do SLES… não sabíamos que problema estava causando o congelamento do sistema (a saída foi utilizar o DVD do SLES para dar boot, logar no Rescue System e alterar o Grub para não mostrar a tela de splash).

Portanto, aprendemos da maneira mais difícil possível que é melhor deixar essa tela de splash desligada de uma vez por todas. Para fazer isso edite o arquivo /boot/grub/menu.lst (via shell ou YaST) e faça o seguinte:

  • Para mostrar as mensagens de inicialização, altere opção de splash e mude para splash=verbose
  • Se quiser, além de alterar a opção de splash, retire também a opção vga=0×317 para que o boot seja totalmente em modo texto

Instalação do Subversion 1.6.0 no SuSE Linux Enterprise Server 10

27 de março de 2009

Para quem ainda não instalou a nova versão do Subversion, aqui vai um tutorial completo e detalhado da instalação do Subversion 1.6.0 no SuSE Linux Enterprise Server 10 (SLES-10).

Este tutorial é uma atualização do meu tutorial antigo (Subversion 1.5.6 no SLES-10) com algumas modificações específicas para a versão mais nova do Subversion.

Por favor: se você seguiu o tutorial da versão 1.5.6 (ou se já instalou alguma outra versão do Subversion) e agora está seguindo este tutorial para atualizar, tome o cuidado de retirar as bibliotecas antigas do sistema (a Seção 2.4 mostra como fazer isso) para que a compilação não link a nova versão com as bibliotecas da versão antiga.

Acesse o documento em HTML (para leitura on-line) ou PDF (para impressão).

Subversion 1.6 liberado!

25 de março de 2009

No dia 20/03/2009 a versão 1.6 do Subversion foi liberada para uso em sistemas de produção, e os administradores de sistemas que o utilizam devem considera seriamente a possibilidade de atualizar para a última versão (a leitura das Release Notes é indispensável para saber o que foi mudado e se isso irá impactar nos sistemas legados).

A atualização é muito simples: basta instalar os novos binários e bibliotecas sobre as versões antigas.

Alguns pontos importantes:

  • Mesmo que o Subversion seja atualizado para a versão 1.6, os repositórios não são atualizados automaticamente. Para fazer isso deve-se usar o comando svnadmin upgrade;
  • Como o formato das working copies também mudou, clientes antigos (1.5 e anteriores) não serão capazes de trabalhar com as working copies produzidas por um servidor 1.6;
  • Se um cliente 1.6 encontrar uma working copy antiga, ele irá atualizar automaticamente a working copy; e
  • Para compilar a partir dos fontes, um novo pré-requisito é necessário: SQLite (use a opção --with-sqlite) no comando configure.

Se você usa o TortoiseSVN como cliente em máquinas Windows, deve atualizar também para a versão 1.6 (disponível para download em http://tortoisesvn.tigris.org).

Assim que puder, atualizarei meu tutorial de instalação do Subversion para a versão mais nova.

Instalação do PostgreSQL no SuSE Linux Enterprise Server 10

23 de março de 2009

A versão do PostgreSQL que é disponibilizada para o SuSE Linux Enterprise Server 10 (SLES-10) é a 8.1. Se você quiser utilizar uma versão mais nova terá que baixar os fontes e instalar manualmente. Esse procedimento também é recomendado se você quiser um controle preciso do locale e do encoding de seu database cluster.

O procedimento que eu uso também inclui atualizar a versão da Tcl do SLES, principalmente porque a Tcl padrão do SLES não é thread-safe, mas se você não precisa dessa linguagem, esse passo pode ser pulado. O processo é o seguinte:

Instale os RPMs oficiais do PostgreSQL para o SLES

Pode parecer estranho fazer isso, já que esse iremos instalar uma versão mais nova manualmente. Mas instalar os RPMs oficiais (postgresql, postgresql-server, postgresql-devel, etc.) adianta uma série de tarefas, como criar o usuário e o grupo postgres, e os scripts de inicialização automática (que mais adiante serão modificados).

Instalação da Tcl:

Faça o download da versão mais nova da Tcl em www.tcl.tk (atualmente é a versão 8.5.6),  configure e instale com os comandos:

./configure --enable-threads --prefix=/usr/local/lib/tcl8.5.6
make
make install

Instalação do PostgreSQL:

Faça o download da versão mais nova do PostgreSQL em www.postgresql.org (atualmente é a versão 8.3.7), configure e instale com os comandos:

./configure --prefix=/usr/local/pgsql --enable-nls --with-perl \
--with-python --with-tcl --with-tclconfig=/usr/local/lib/tcl8.5.6/lib \
--with-openssl --with-ldap --enable-thread-safety

make
make check
make install

Esses comandos irão instalar o PostgreSQL em /usr/local/pgsql. Agora você deve acertar o owner:group, as permissões desse diretório, e criar uma senha para o usuário postgres:

chown postgres:postgres /usr/local/pgsql -R
chmod 750 /usr/local/pgsl
passwd postgres

Ajuste o diretório /usr/local/pgsql como o HOME do usuários postgres, editando seu arquivo /etc/passwd para ficar parecido com:

postgres:x:26:26:PostgreSQL Server:/usr/local/pgsql:/bin/bash

Crie um arquivo “.bashrc” no diretório HOME do usuário postgres para alterar o PATH e a LD_LIBRARY_PATH:

export PATH=/usr/local/pgsql/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/pgsql/lib:/usr/local/lib/tcl8.5.6/lib:$LD_LIBRARY_PATH

Criação do database cluster com locale e encoding específicos:

Como usuário postgres, crie dois diretórios em seu HOME e um arquivo (server.log):

mkdir data
chmod 700 data
mkdir log
touch log/server.log

Agora crie o database cluster com locale = C e enconding padrão = UTF-8:

initdb --locale=C --encoding=utf8 -D /usr/local/pgsql/data

Com essas configurações você está dizendo que o encoding padrão é UTF-8 (opção –encoding=utf8), mas que você poderá criar bancos de dados com quaisquer outros encoding suportados pelo PostgreSQL (opção –locale=C). Teste iniciando o PostgreSQL e verificando seu status:

pg_ctl start -s -w -p /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data -l /usr/local/pgsql/log/server.log
pg_ctl status -D /usr/local/pgsql/data

Ajuste de /etc/init.d/postgresql:

A última coisa a ser feita é ajustar o arquivo /etc/init.d/postgresql apontando corretamente as variáveis para os novos diretórios. Um modelo já ajustado pode ser baixado aqui. Para que o PostgreSQL inicie automaticamente durante o boot, use o YaST e ajuste os runlevels.

Crie senhas fortes com o pwgen

21 de março de 2009

Se você precisa criar senhas fortes, aleatórias, difíceis de serem quebradas, uma boa alternativa é utilizar o Password Generate (pwgen). Sua sintaxe é extremamente simples:

pwgen [ OPTION ] [ pw_length ] [ num_pw ]

onde pw_length indica o tamanho da senha, num_pw indica quantas senhas diferentes serão geradas e as opções mais importantes são:

  • -c: inclui pelo menos 1 caractere maiúsculo (ativada por padrão)
  • -n: inclui pelo menos 1 número (ativada por padrão)
  • -y: inclui pelo menos 1 caractere especial
  • -1: gera uma senha por linha
  • -s: gera senhas absolutamente aleatórias e de muito difícil memorização (se essa opção não é utilizada, as senhas geradas são de memorização mais fácil)

Alguns exemplos:

pwgen 10 1
ohTai7aiy1

pwgen -s 10 1
k3KLQgoOsV

pwgen -y 10 1
jaZ5poon%i

pwgen -sy 10 1
=?Fh;V2JK$

pwgen -1sy 15 2
<]T-,v9cT.Jm[Y^
^_?<><x1Ai+k#Uc

Senhas geradas com a opção -s são mais recomendadas para tarefas administrativas (não-humanas) do computador pois do contrário, conforme o próprio manual do pwgen informa, “… it’s almost guaranteed that users will simply write the password on a piece of paper taped to the monitor”.

Para consultas as outras opções, leia a man page do comando.