quarta-feira, 30 de julho de 2008

Corrigindo incompatibilidade do kdemod após o "nascimento" do KDE4.1 no Arch

Os usuários de Arch Linux que utilizam o kdemod como ambiente gráfico e que tentaram fazer uma atualização do sistema (pacman -Syu) nos últimos dias devem ter notado que havia um problema. Como o KDE 4.1 entrou para os repositórios do Arch, passou a haver uma incompatibilidade entre alguns pacotes. E a atualização do sistema pedia que você substituisse alguns pacotes do kdemod pelos do kde.

Logo que percebi este problema busquei ajuda em fórums mas ninguém tinha a solução, portanto decidi reportar este bug para os desenvolvedores do kdemod. A minha surpresa foi chegar no site de bugreport do kdemod e ver que este bug já havia sido identificado. Achei ótimo ver que o bug já havia sido notificado e que já estavam trabalhando em cima do mesmo, como o próprio desenvolvedor "funkyou" me informou.

Hoje, 30/07, o problema já se encontra solucionado e o bug foi fechado no bugreport deles. É preciso seguir um procedimento para normalizar a situação, já que os pacotes do antigo kdemod foram re-construídos e re-empacotados como kdemod3 para fazê-los funcionar no novo upgrade do Arch.

Mudanças que foram feitas:

- Todos os pacotes foram renomeados para kdemod3-$PACKAGE

- KDEmod 3.5.9 agora conflita com KDE 4.1, então não é possível ter ambos instalados simultaneamente

- Não é uma atualização muito comum, você precisará remover todos os pacotes do kdemod primeiramente para depois reinstalar

- Note que muitas coisas do [community] por exemplo precisam ser adaptados ao novo KDE3 renomeando no Arch

- Não force nada, o melhor é reportar os problemas no link a seguir: http://www.kdemod.ath.cx/bbs/viewtopic.php?pid=5303#p5303

- Este repositório deixará de ser suportado até que alguém passe a lhe dar mais amor como nós acasionalmente fazemos

INSTALAÇÃO:
1. Remover todos os pacotes do KDE4: pacman -Rcs kde
2. Remover todos os pacotes do KDEmod4: pacman -Rcs kdemod4-complete
3. Remover todos os pacotes do KDEmod3: pacman -Rcs kdemod-complete
4. Remover _qualquer_ pacote do KDE que ainda exista em seu sistema
5. Checar novamente se tudo foi removido: pacman -Q | grep kde
6. Remover o antigo repositório [kdemod] do seu pacman.conf
7. Adicionar o novo repositório [kdemod-legacy] ao seu pacman.conf

Para i686

[kdemod-legacy]
Server = http://kdemod.ath.cx/repo/legacy/i686
Para x86_64
[kdemod-legacy]
Server = http://kdemod.ath.cx/repo/legacy/x86_64
Em seguida atualize com: pacman -Suy

Instale com:
pacman -S kdemod3 (sistema funcional básico)
ou
pacman -S kdemod3-complete (instalação completa do KDEmod)
ou
pacman -S kdemod3-vanilla (instalação completa do KDEmod, sabor vanilla (baunilha))
ou
pacman -S kdemod3-base (instalação básica do KDE (base))

Instale sua língua(cheque os disponíveis com pacman -Ss kdemod3-kde-i18n)

Feito. ;]

quinta-feira, 24 de julho de 2008

1 Mês de Arch Linux - Meu resultado obtido

Semana passada completei um mês de utilização do Arch Linux, mas como não tive tempo para publicar nada, segue agora um resumo do que tenho obtido com o Arch Linux nesse 1 mês de uso intensivo do mesmo como distribuição oficial.

Performance: No quesito performance o Arch me surpreendou. Ganhou em meus olhos o lugar, com mérito, da distribuição mais rápida que já testei até hoje. Para os que acompanham meus posts, sabem que essa lista não é pequena. O Arch, por vir à luz de forma simples e "pelado", bem como nós viemos a Terra, nos proporciona um maior controle do que queremos ter instalado e rodando. E como fazemos isto manualmente, podemos adquirir uma performance maior. O boot do mesmo é também o mais rápido que já tive em minha máquina. A utilização de recursos é muito bem clara quando se deixa um top rodando. Pude ver que o consumo de memória e processador baixaram muito se comparado a outras distribuições que utilizei durante muito tempo.

Pacotes i686: A maioria dos computadores hoje em dia possuem processadores i686, porém nenhuma distribuição até hoje possuia versões para i686. No máximo possuiam uma versão de sua iso de instalação para i686, mas os pacotes continuavam sendo para i386, desperdiçando o potencial de seu hardware. No Arch Linux, por padrão todos os pacotes já são feitos para arquiteturas i686, possuindo também a versão x64 para aqueles que possuem este tipo de processador. ;]

Gerenciamento de pacotes: Este também foi um pequeno choque no começo para mim. Depois de testar várias distros me apeguei bastante ao Debian e ao Kubuntu pelo fato de eles trazerem consigo a maravilhosa ferramenta Aptitude. Não tiro aqui os méritos da mesma. Ela me manteve entre as espirais Debian por cerca de 2 anos. ;] Utilizar algo diferente, depois de tanto tempo foi mesmo um choque, mas a verdade é que logo na primeira semana o pacman, gerenciador de pacotes do Arch Linux, roubou em meu coração o lugar no qual se encontrava o Aptitude. Ainda gosto do aptitude, e continuo optando por ele como segunda escolha, mas devo ser justo em meus comentários. Acreditem, se depois de 2 anos como um fanático pelo aptitude, e meus posts anteriores não me deixam mentir, eu passei agora a adotar uma nova ferramenta, o pacman, é porque alguma coisa realmente me convenceu de que valeria a pena. Além de muito estável, a forma como o pacman funciona é simples e eficaz. Trazendo respostas rápidas à simples comandos com poucos parâmetros, posso resolver tudo o que preciso relacionado a meus pacotes sem a preocupação de tratar dependências ou quebrar pacotes, já que além de instalar as dependências juntamente com um pacote, ele também as removerá desde que as mesmas estejam orfãns, ou não necessárias para outros pacotes.

Pacotes Atualizados: Uma das coisas que mais me surpreendeu no Arch, é a velocidade com que as coisas acontecem. Desde que adotei o Arch como minha distribuição, adotei a prática de fazer um upgrade completo em meu sistema diariamente através do pacman. Fico muito contente em ver que diariamente, uso os pacotes em suas versões mais recentes. Dois que me chamaram a atenção foram por exemplo o amsn e firefox, já que são de uso diário. Bastou sair publicado no site oficial do amsn uma nova versão com correções de bugs, e no upgrade do dia seguinte, lá estava ele nos meus repositórios e logo em seguida rodando em minha máquina. O mesmo com o Firefox, após o nascimento do tão esperado Firefox 3.0, surgiram também descobertas sobre vulnerabilidades do mesmo. Assim que foi lançada a versão 3.0.1 do mesmo, no meu upgrade do dia seguinte, lá estava em minha máquina a raposa de fogo em sua versão 3.0.1 funcionando perfeitamente. O mesmo acontece com os outros vários pacotes que utilizo.

AUR: Como se já não bastasse o magnífico pacman pra gerenciar meus pacotes, também contamos com o AUR, onde podemos achar aquele pacote em específico que por alguma razão ainda não se encontra nos repositórios oficiais. A organização do AUR é excelente onde podemos criar pacotes e submetê-los para que depois de uma votação adequada, possam finalmente assumir postos mais reconhecidos, até quem sabe um dia entrar para os repositórios. A quantidade de pacotes disponíveis no AUR é surpreendente, o que apenas demonstra a força da comunidade atuante no Arch.

R
olling Release:
Eis um outro fator primordial no Arch Linux. É uma distribuição Rolling Release. O que isso significa? Você não tem que se dar ao trabalho de baixar uma iso e reinstalar cada vez que surge uma versão nova do Arch Linux. O próprio pacman se responsabiliza de fazer este upgrade sem quebrar seu sistema. Você não precisa mais se manter com versões antigas de sua distribuição por não querer perder tanto tempo fazendo seus backups ou reinstalando tudo do zero. Tive a sorte de poder testar este recurso durante este 1 mês de testes com o Arch, já que no mês de Junho tivemos o lançamento da nova versão do Arch Linux, 2008.6 Overlord, e pude pessoalmente atestar a validade desta qualidade do Arch. Resultado? A minha distro foi totalmente atualizada para a nova versão do Arch, sem nenhum trauma. Tudo funcinou perfeitamente. Mais um ponto pro Arch em meu coração.

Segurança: O Linux trás uma característica em comum, independente de distribuição, que é a segurança. Porém quanto menos serviços desnecessários rodando, menores serão as brechas e vulnerabilidades, portanto o Arch tem vantagem nisso. E por trazer algumas características do BSD, procura também uma estabilidade neste sentido. O próprio ports do BSD é utilizado no Arch Linux. ;]

Comunidade: A comunidade do Arch Linux, em especial a comunidade archlinux-br, tem me recebido de braços abertos desde que passei a frequentar e tentar ajudar a mesma, seja na divulgação, resposta de dúvidas ou mesmo na tradução de documentações do Arch. Essa oportunidade de ajudar e ser bem recebido ajudou muito em minha decisão por adotar esta distribuição. Outro ponto a favor, é o fato de termos dois brasileiros atualmente engajados no time de desenvolvedores do Arch Linux, o que significa que nossa voz é mais facilmente ouvida. Deixo aqui os parabéns a ambos que tem feito um ótimo trabalho: Hugo Doria e Douglas Soares. (Perdão, não achei o link para o mesmo)

É isso pessoal, espero que assim como eu, possam experimentar e conhecer esta magnífica distribuição.

segunda-feira, 14 de julho de 2008

Parte II - Limpando memória cache de forma automatizada

Muitos me pediram por aqui ou mesmo por email para explicar como seria a implementação desta técnica de forma automatizada.

B
om, utilizo isto para o servidor que citei no artigo anterior, utilizado pelos nossos amigos desenvolvedores Java. ;] Nada pessoal eim?!

Aqui precisaremos apenas de um mínimo de intimidade com shell script e um pouco de conhecimento sobre o agendamento de tarefas no linux através do cron.

Mãos a obra...

A missão: Uma vez que nossos amigos não conseguem trabalhar de forma harmônica com a alocação e desalocação de memória em nossos servidores, iremos agendar a limpeza de cache para todos os dias no começo do expediente (8:00) e após o almoço. Lembrando que este é apenas um exemplo, mas você pode adaptar os horários de acordo com sua real necessidade.

Soldados Disponíveis: Shell Script e Cron

Plano: Um pequeno e simples script em shell será executado nos dias e horários informados anteriormente de forma a fazer uma limpeza no cache.

Execução:

Primeiro criaremos o script que fará a ação de limpeza do cache. Para isso abra o editor de textos de sua preferência. Particularmente prefiro o vim, mas este pode ser substituido por qualquer outro.

No seu corpo insira o seguinte conteúdo:

#!/bin/bash
#limpando cache

#o seguinte comando é o responsável pela limpeza
echo 3 > /proc/sys/vm/drop_caches

Feito isto, salve o arquivo com o nome de limpacache.sh

Sim, isto é tudo o que o seu script precisa. Com o script criado, você deverá agora lhe dar condições de execução. Utilize o seguinte comando:

# chmod a+x limpacache.sh

Agora que ele está pronto e com permissão de execução, iremos agendar a execução do mesmo. No terminal digite:

# crontab -e

Isto irá abrir um arquivo no qual você deverá fazer o agendamento de sua tarefa. No mesmo insira o seguinte conteúdo:

# mm HH DD MM DS tarefa
00 08 * * * /usr/bin/scripts/limpacache.sh
00 14 * * * /usr/bin/scripts/limpacache.sh


Ps: O caminho /etc/scripts/ precisa ser configurado de acordo com o caminho utilizado por você. ;]

Pronto. Pode salvar e encerrar este aquivo.

Traduzindo o comando as linhas do cron que utilizamos:

mm: minutos
HH: horas
DD: dia
MM: mês
DS: dia da semana
/usr/bin/scripts/limpacache.sh: tarefa a ser realizada

Feito isto, o plano está concretizado. Seu script será executado todos os dias nestes dois horários.

S
inta-se livre agora para customizar os dias e horários da maneira que for mais conveniente para você.

Abraços

quarta-feira, 9 de julho de 2008

Limpando o cache de forma rápida

Aqueles que são administradores de redes e servidores já devem ter passado por problemas parecidos com este.

Nesta dica irei apresentar um comando simples para limpar sua memória em cache.

Resolvi escrever sobre isto por ter visto duas vezes na mesma semana problemas relacionados a isso. Um foi aqui mesmo onde trabalho, onde estávamos percebendo que o consumo de memória em um dos servidores estava muito alto, porém com pouca atividade no mesmo, no qual percebi que nada mais era do que muita memória alocada em cache sem necessidade no momento. Desenvolvedores java...vai entender.. hauhauha (brincadeira.. :p).

Outro caso foi uma dúvida que surgiu, bem parecida, em um fórum do qual faço parte, onde um rapaz estava passando pelo mesmo problema no servidor dele... Com consumo exagerado de memória. Ele até colou o resultado do top no qual podíamos ver claramente que não haviam processos consumindo tudo aquilo de memória, e mais uma vez pudemos ver que o grande vilão era o cache, o que lhe passava essa impressão de memória totalmente consumida.

O comando para se limpar este chache é o seguinte:

# echo 3 > /proc/sys/vm/drop_caches
Exemplo:

Aqui vai uma saída do meu top antes de rodar o comando. ( Reparem no consumo de memória armazenada em Cache na última linha!)
top - 09:40:03 up 1:42, 1 user, load average: 0.06, 0.20, 0.20
Tasks: 83 total, 2 running, 80 sleeping, 0 stopped, 1 zombie
Cpu(s): 4.3%us, 0.5%sy, 0.2%ni, 95.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1944240k total, 898916k used, 245324k free, 51176k buffers
Swap: 996020k total, 0k used, 996020k free, 969000k cached
Repare agora o resultado obtido pelo top depois de executar o comando para limpar o cache:
top - 09:45:03 up 1:47, 1 user, load average: 0.32, 0.16, 0.17
Tasks: 85 total, 3 running, 81 sleeping, 0 stopped, 1 zombie
Cpu(s): 11.2%us, 1.5%sy, 0.0%ni, 63.4%id, 23.9%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1944240k total, 329412k used, 1614828k free, 768k buffers
Swap: 996020k total, 0k used, 996020k free, 69088k cached
A memória armazenada em cache caiu de ~969mb para ~69mb. ;]

Bingo!