Sobrevivendo com um Ubuntu antigo

Este mini-artigo fornece algumas dicas úteis para quem vive degladiando com uma distribuição linux antiga instalada no seu computador de trabalho. No meu caso, trabalho em uma máquina com o Ubuntu 11.04 64 bits instalado e não faço um upgrade nela porque algumas pessoas utilizam a máquina remotamente além do que uma série de programas compilados a partir do código-fonte estão instalados nela. Acho que estes são motivos suficientes para que eu não me atreva a parar a máquina para fazer um upgrade de software e invertir um bom tempo compilando tudo novamente. Uma opção mais honesta, seria partir para uma distribuição rolling-release, como o Gentoo ou o ArchLinux, mas por enquanto, está fora de cogitação, principalmente quando tudo está funcionando como deve. Ou não.

O Ubuntu 11.04 já encerrou seu ciclo de atualizações e suporte. Estamos em junho de 2013, e estamos falando de uma distribuição de abril de 2011. O Ubuntu é uma distribuição que lança suas versões a cada 6 meses. Então, a versão mais atual do Ubuntu, é a 13.04, ou seja, estou utilizando uma distribuição que já foi atualizada 5 vezes! Quanto software já não foi atualizado, quantas melhorias já não foram aplicadas e quantos bugs já não foram sanados? Muitos, com toda certeza. Mas o fato é que com uma distribuição mais antiga sendo executada a todo vapor em uma máquina estável, garante menos dor de cabeça, porque já não há mais atualizações a se fazer, e o sistema como um todo mostra-se bastante estável. O fato é que vez ou outra, é necessário atualizar alguma biblioteca, instalar algum software marciano e é aí quando que a situação começa a complicar um pouco.

O ciclo de vida de uma distribuição linux instalado em um computador passa por uma série de transformações. E é nesse ponto que eu acho o linux extremamente saudável: é um sistema robusto suficiente para aguentar este “tranco” (instalar software, desinstalar software, uptime etc) e simples o suficiente para permitir que simples ações resolvam os seus problemas. Depois de 3 anos utilizando a mesma distribuição no mesmo computador (na verdade esse tempo é muito pequeno), ocorre de você querer instalar outros ambientes gráficos (como o XFCE, KDE3/4 etc) para dar uma variada no visual. Obviamente, esta é uma ação que requer a instalação de muitos pacotes, coisa que o apt faz brilhantemente bem. Além do mais, esta é uma ação que, de certa forma, vai contra o princípio de se manter a máquina em ordem. Pode acreditar, a confusão de pacotes e dependência que é gerada no seu cache não é pequena. E depois de um bom tempo, é certo que surgirá a necessidade de se organizar a casa.

Esses dias, descobri a página EOL Ubuntu – “End Of Life Ubuntu” (https://help.ubuntu.com/community/EOLUpgrades), que traz algumas dicas para se manter as diversas versões mais antigas do Ubuntu em dia a acabar de vez com os erros de atualização dos repositórios da versão que você está usando. É bastante frequente acontecer dos repositórios estarem offline porque novas versões foram lançadas, e isso acontece mais com os repositórios de terceiros. Logo, a solução é bastante simples e envolve manter apenas os repositórios principais (main, retricted, backport, extras etc) em dia.

Com as instruções mostradas nesta página, consegui resolver alguns problemas que eu estava enfrentando com alguns pacotes do Ubuntu (na verdade pacotes de terceiros também) que teimavam em me mostrar uma atualização, mesmo quando eu não queria (eu sabia que alguma coisa iria “quebrar” em decorrência destas atualizações).

A solução foi a seguinte:

1) Fechar todas as janelas do synaptic, software center, atualização etc;
2) Fazer um backup do sources.list:

$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.old

3) Criar um novo sources.list com o seguinte conteúdo:

## EOL upgrade sources.list
# Required
deb http://old-releases.ubuntu.com/ubuntu/ CODENAME main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ CODENAME-updates main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ CODENAME-security main restricted universe multiverse
# Optional
deb http://old-releases.ubuntu.com/ubuntu/ CODENAME-backports main restricted universe multiverse

No meu caso, como estou utilizando o Ubuntu 11.04, cujo codinome é Natty-Narwhal, eu substituí a palavra “CODENAME” por “natty” (sem as aspas), e ficou assim:

## EOL upgrade sources.list
# Required
deb http://old-releases.ubuntu.com/ubuntu/ natty main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ natty-updates main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu/ natty-security main restricted universe multiverse
# Optional
deb http://old-releases.ubuntu.com/ubuntu/ natty-backports main restricted universe multiverse

4) Depois de salvar o arquivo, atualize e caso seja necessário, instale novamente o meta-package principal do seu ambiente gráfico (o que pode trazer de volta algumas dependências fundamentais da sua distribuição):

$ sudo apt-get update
$ sudo aptitude install update-manager-core update-manager
$ sudo apt-get install ubuntu-desktop

É isso!

Anúncios

Consumo excessivo de memória RAM no Linux

Minha máquina de trabalho possui 16GB de memória RAM. Tenho nela o Ubuntu 11.04, o qual consegue consumir – sem a menor cerimônia, 6GB de memória depois de alguns dias ligada. Isso ocorre porque qualquer sistema operacional (principalmente o Linux) faz o cache dos programas que você mais usa. Essa atividade do sistema operacional, permite que você possa acessar mais rápidos os seus programas.

A partir do kernel 2.6.16, foi adicionada uma função que permite limitar o consumo de memória para esse tipo de cache. Para limitar o consumo de memória para cache no sistema, basta usar o comando

# sysctl -w vm.drop_caches=3

Esse comando irá alterar o valor (conteúdo) do arquivo /proc/sys/vm/drop_caches de “0” para “3”.

O comando acima limpa o arquivo de paginação (caso exista uma partição swap), arquivos, pastas e “ponteiros” armazenado naquele local.

Para limpar apenas o arquivo de paginação, execute o comando:

# sysctl -w vm.drop_caches=1

Para limpar apenas os arquivos, pastas e “ponteiros”, execute o comando:

# sysctl -w vm.drop_caches=2

Veja o resultado, antes e depois, com o comando “free -m”:

Antes:

carlos ~ $ free -m
             total       used       free     shared    buffers     cached
Mem:         16064      15840        223          0       1093       8369
-/+ buffers/cache:       6377       9687
Swap:            0          0          0

Depois:

root /home/carlos # free -m
             total       used       free     shared    buffers     cached
Mem:         16064       5843      10220          0         18        193
-/+ buffers/cache:       5632      10431
Swap:            0          0          0

Se você tem pouca memória RAM e quer destruir tudo o que está em cache (swap!), basta “desligar/ligar” sua aprtição swap:

$ swapoff -a
$ swapon -a

Referências: