sábado, julho 29, 2006

Instalando um .tar.gz a la Debian


Este post vai para o Filipe Guimarães, que faz o mestrado na UFF. Eu fui comentar que ao usar uma máquina Windows para atualizar o firmware de um access point Linksys, o arquivo foi salvo em um lugar que eu não encontrava (Local Settings) mas tinha o path completo. Ele disse que a relação minha com Windows era a mesma dele com peixe: ele odeia peixe e toda vez que tenta comer, acha espinha.

Ele recebeu os CDs da Canonical e instalou o Ubuntu. Alguns comentários dele são pertinentes, outros são totalmente inexplicáveis ("O visual do Windows é melhor que o do Linux"). Claro que não visitou http://www.gnome-look.org, http://www.kde-look.org, etc. O comentário dele era que é "muito chato instalar tar.gz". Ele sabe programar portanto compilar não é problema: o grilo são as dependências. Enquanto o fantástico APT resolve dependências e mostrar que procurar e instalar programas no Linux pode ser mais fácil que no Windows, quando o programa não está ainda empacotado, o problema é mais sério, concordei. Mas será que o projeto Debian não pensou em facilitar a vida em algo tão importante quanto instalar programas a partir dos fontes ? A resposta é: é claro que sim!!! Assim, apresento a vocês o auto-apt.

Vou demonstrar usando um pacote chatíssimo de instalar mas que vale a pena: o Xmoto. Escolhi este programa, pois assim apresento o "The Linux Game Tome", em http://happypenguin.org, assim ele não vai dizer que precisa do Windows para os jogos ;) A versão do Dapper é a 0.1.10 e já saiu a versão 0.2.0 (em outro post vou mostrar como atualizar pacotes ;)
O Xmoto depende do X, SDL, SDL_mixer, OpenGL, Lua, etc.. Em primeiro lugar instalamos e atualizamos o auto-apt

sudo apt-get install auto-apt
sudo auto-apt update
sudo auto-apt updatedb
sudo auto-apt update-local

Baixe o arquivo xmoto-0.20.src.tar.gz, por exemplo, de http://xmoto.free.fr/. Descompacte o arquivo (eu faço isto em uma pasta Pacotes). Vá para ela e rode

cd Pacotes
tar -zxvf xmoto-0.20.src.tar.gz
cd xmoto-0.2.0
auto-apt run ./configure

O auto-apt vai perguntando pelos pacotes à medida que o script configure vai rodando. Ao selecionar Install, tome o cuidado de esperar que o pacote seja baixado antes de mandar instalar o seguinte (isto é meio esquisito, concordo), senão vai dar erro de lock.

Free Image Hosting at www.ImageShack.us

Se der erro, rode o comando novamente. Se for a primeira vez que você compila, o processo vai demorar um pouco pois precisaremos baixar todas as dependências.
Agora é só compilar o programa

make

O Filipe reclamou que não sabe onde o Linux coloca os arquivos também (claro que ele ainda não aprendeu sobre a LSB (em http://lsb.freestandards.org/ ;). Eu vou mostrar como criar um pacote a partir do fonte compilado: não é a maneira recomendada, mas é útil para iniciantes: você pode retirar o seu programa quando for lançada a versão do pacote oficial (que, entre outras coisas, coloca um link no menu). Instale o checkinstall

sudo apt-get install checkinstall

e rode no diretório onde você acabou de compilar o xmoto:

checkinstall make install

Responda às perguntas e a descrição do pacote. Isto vai criar o arquivo xmoto_0.2.0-1_i386.deb que você pode instalar

sudo dpkg -i xmoto_0.2.0-1_i386.deb

Pronto, você já tem o xmoto no seu computador, compilado a partir dos fontes. Em resumo, você precisa de três comandos para instalar um pacote a partir dos fontes: auto-apt run ./configure; make e checkinstall make install.

Se o auto-apt não encontrou alguma dependência é porque a mesma não foi empacotada. Aí a coisa fica um pouco mais chata, pois você tem que compilar a dependência, seguindo os passos acima. O arquivo que vai te dar a dica do que está faltando é o config.log.

P.S.: se você já se sentir confortável compilando pacotes, é uma boa rodar o ./configure --help. Pode ser que alguma opção de compilação não seja ativada por default no pacote mas que pode te interessar.

P.S.: um guia de referência sobre como criar pacotes e atualizá-los está no Manual do SysAdmin do IFUFF, em Wiki do Operador.

quinta-feira, julho 27, 2006

Migrando páginas pessoais de servidores Web

Nós lançamos a nova homepage da Física em http://www.if.uff.br . A página agora está hospedada em um servidor Dell e rodando o Dapper. A dor de cabeça é a migração das páginas pessoais do servidor velho para o novo servidor: eu não queria fazer um copy direto pois várias homepages estão desatualizadas e deixando por conta do usuário, só aqueles em interesse em manter uma homepage farão a migração. O problema é como manter as páginas antigas na máquina velha ainda acessíveis, principalmente pelos mecanismos de busca ?

A resposta vem em uma linha ( eu amo o Apache!!!): no novo servidor, edite o /etc/apache2/sites-enabled/nome-do-site com uma linha semelhante a

UserDir /var/www/users http://servidor-velho/~*

onde as novas contas foram criadas no /var/www/users e o antigo endereço é o http://servidor-velho. Veja que maravilha: se a página ainda não foi migrada, o servidor manda para o antigo, sem intervenção do usuário :) Eu acho que o pessoal do Apache pensa o tempo todo em mim ...

Eu não sabia desta característica do UserDir, mas foi mão na roda :)

sábado, julho 22, 2006

Este Blog é lido nos cinco continentes

O mapinha na barra à direita, do clustrmaps.com, marca os locais dos visitantes do fórum. Eu precisava de uma visita da África para dizer que meu blog é lido em todos os 5 continentes. Obrigado ao ilustre visitante do Continente Mãe que me visitou: me deixa ainda mais metido e arrogante :)

Uma curiosidade (de físico): os visitantes da Oceania, Ásia e África, estão todos no litoral. Brasil, Europa e USA estão espalhados. Será que a web também é concentrada nos litorais destes continentes ? Ou será devido à tradição pesqueira de nossos colonizadores portugueses (já que a maioria do pessoal que lê este blog deve ler português ) ?

Para quem gosta de Física e Linux


Para quem gosta de Física (tem gente que gosta de Windows, e daí???), eu mantenho um fórum: Fórum da Física. Lá colocamos as notícias mais quentes sobre Física e Ciências, em liguagem para leigos, tanto quanto possível, além de debatermos sistemas operacionais "alternativos": a coisa é tão off que o Mac OSX está vencendo a enquete sobre sistemas operacionais :)

Alguns fóruns são específicos da UFF mas vários são de interesse geral. Sejam bem vindos: a inscrição é necessária para postagem mas o fórum é aberto. Agora mesmo rola uma enquete sobre o wallpaper da próxima atualização dos nossos laboratórios: vamos migrar do Debian Etch para o Dapper. Observe o logo do Instituto na página principal do fórum e submeta seu wallpaper.

sexta-feira, julho 21, 2006

Repositório com Lighttpd e Awstats

Resolvi instalar o Ubuntu em um K6-II 450 com 128Mb de RAM. Eu tenho uma particular atração por K6-II: quando eu me mudei para Boston em 1997, eu comprei um K6-200 assim que cheguei lá e ainda tenho meu notebook K6-366 com 96Mb de RAM. Eu atualizei o desktop umas três vezes em um ano e meio que morei lá. Lembro que na última atualização comprei memórias PC 100 (128Mb) e um HD de 10Gb. A placa de vídeo era uma fantástica Matrox G200, uma das primeiras a ter aceleração no Linux, já que a Matrox era amiga (não sei como está a situação hoje, é tão difícil encontrar Matrox, por aqui).

Mas vamos lá: instalei o Breezy e optei por server (a máquina vai ser uma servidor). A instalação foi sem problemas e me dei ao luxo de fazer um LVM (caso venha adicionar outro HD). O mais legal foi a BIOS identificar o HD de 160Gb como sendo de 8Gb!! O que um linuxer faz nesta hora ?? .... Morre de rir e manda seguir a instalação. Depois de instalado o Breezy, fiz um aptitude update e voltei no dia seguinte.

No dia seguinte (hoje), resolvi montar o repositório: usei os scripts do post anterior e decidi não fazer espelho do cypherfunk e do plf: o do Seveas cobre este pessoal e é mais atualizado. Resolvi fazer um mirror do Edgy também. Vejam no post Criando espelhos do Ubuntu, é tão fácil quanto entrar no vi e dar :%s/dapper/edgy/g e :wq ;)

Para servir o repositório resolvi instalar o lighttpd: "A fast webserver with minimal memory footprint". Simples e rápido

aptitude install lighttpd

Acreditam que já temos o webserver funcionando ??? Eu ainda achei a página inicial e como ele mostra diretórios muito mais bonito que o Apache:

Agora é só colocar os repositórios em /var/www e permitir acessos externos, alterando no /etc/lighttpd.conf

## bind to localhost only (default: all interfaces)
#server.bind = "localhost"


De quebra vamos colocar o awstats para ter estatísticas de acesso.

aptitude install awstats

Adicione a seguinte linha no /etc/lighttpd/lighttpd.conf (procure por alias.url)

alias.url += ("/awstats-icon/" => "/usr/share/awstats/icon/")

O formato do log do lighttpd é um pouco diferente do Apache. Se você não quiser identificar o sistema operacional e o browser, já está pronto mas porque perder a chance de ter um site com 100% Linux e 100% Firefox ;)

Copie o /etc/awstats/awstats.conf para /etc/awstats/awstats.SEU_HOSTNAME.conf (eu usei espelho como hostname). Edite o arquivo criado, modificando as seguintes linhas

LogFile="/var/log/lighttpd/access.log"
SiteDomain="espelho.if.uff.br"
LogFormat="%host %host_r %other %time1 %methodurl %code %bytesd %refererquot %uaquot"


Reinicie o lighttpd:

sudo /etc/init.d/lighttpd restart

e acesse http://SEU_SERVIDOR/cgi-bin/awstats.pl?config=SEU_HOSTNAME

Agora acerte os sources.list dos micros que irão acessar seu servidor :)

UPDATE: a instalação do awstats cria uma entrada no /etc/cron.d só que preparada para o apache. Edite o arquivo /etc/cron.d/awstats para algo como:

0,10,20,30,40,50 * * * * www-data [ -x /usr/lib/cgi-bin/awstats.pl -a -f /etc/awstats/awstats.espelho.conf -a -r /var/log/lighttpd/access.log ] && /usr/lib/cgi-bin/awstats.pl -config=espelho -update >/dev/null

sexta-feira, julho 14, 2006

Reempacotando os pacotes


No post que eu conto minhas experiências com aplicações de 32 bits no amd64, eu disse que era fácil atualizar o Firefox32 rodando o

$ sudo firefox32

O problema é que se eu quiser replicar o processo ou instalar nas outras máquinas terei que rodar as atualizações em todas elas e isto não é automático, certo? ..... Errado, pois tem coisas que só Debian faz para você. Existe um utilitário, o dpkg-repack, que refaz um pacote debian a partir de um pacote instalado. Ele é ideal para quando você configurou algum pacote e gostaria de salvar aquela configuração ou replicá-la em outra máquina.

Veja como é simples:

$ sudo apt-get install dpkg-repack
$ sudo dpkg-repack firefox-32

Note que ele vai reconstruir o pacote mantendo o nome, que era firefox-32_1.5.0.3-preview0_amd64.deb
Para consertarmos a informação, vamos usar as dicas anteriores

$ mkdir tmp-firefox
$ dpkg -e firefox-32_1.5.0.3-preview0_amd64.deb tmp-firefox/DEBIAN
$ dpkg -x firefox-32_1.5.0.3-preview0_amd64.deb tmp-firefox
$ vi tmp-firefox/DEBIAN/control

Mude a linha correspondente para

Version: 1.5.0.4-1

Reconstrua e instale o pacote

$ dpkg -b tmp-firefox/ firefox-32_1.5.0.4-1_amd64.deb
$ sudo dpkg -i firefox-32_1.5.0.4-1_amd64.deb

Pronto, você agora tem o firefox atualizado prontinho para distribuição.

segunda-feira, julho 10, 2006

Gerenciando Nobreaks APC


Quedas de luz são bastante frequentes por estas bandas. A maioria delas é curta (menos de 10 minutos) mas algumas são muito mais sérias. Para evitar perdas de dados usamos os chamado nobreaks inteligentes, que se comunicam com o computador.
Nós temos aqui vários simpáticos nobreaks como este: O Back-UPS ES 600 da APC


Ele vem com um CD que fazemos questão de jogar fora assim que recebemos. Vocês vão notar três entradas tipo telefone na lateral. A inferior é ligada a um plug USB no computador. Para que o nobreak possa enviar comandos como o shutdown, faça o seguinte procedimento. Instale o apcupsd (existem várias opções mas este funciona).


sudo aptitude install apcupsd


Edite o arquivo /etc/default/apcupsd e mude para


ISCONFIGURED=yes


Vamos editar o /etc/apcupsd/apcupsd.conf (darwin é o nome da máquina).

UPSNAME darwin
UPSCABLE usb
UPSTYPE usb
DEVICE
NETSERVER on


Agora é só reiniciar o processo


sudo /etc/init.d/apcupsd restart


O que é novo para mim é que o gnome-power-manager reconhece o apcupsd. Vejam o que aparece se retiro o nobreak da tomada e recoloco:

quinta-feira, julho 06, 2006

Dapper em um AMD64-X2 - Google Earth


Rodando o Google Earth :) Baixei o programa beta 4 e rodei o script de instalação. Na hora de rodar o Google Earth é que deu o aviso que a placa não estava acelerada. Troquei o driver ati por fglrx, carreguei o módulo que vem na instalação default (linux-restricted) e pronto. A foto é a do Instituto de Física



Em detalhes (o leitor tem sempre razão):
Verifique se sua placa tem suporte 3D:

glxinfo | grep direct

Se aparecer direct rendering: Yes, siga lendo. Se apareceu direct rendering: No, você precisa configurar sua placa e aí depende do hardware que você tem, não dá para descrever aqui o processo. No meu caso foi simples, a placa é uma Radeon X300SE. Para trocar o driver ati por um fglrx, fiz

sudo apt-get install xorg-driver-fglrx
sudo aticonfig --initial
sudo aticonfig --overlay-type=Xv
echo fglrx | sudo tee -a /etc/modules

A última linha é para forçar a carregar o módulo fglrx na hora do boot. Rebootei só para testar se tudo está correto e realizei o teste acima.

Vá para http://earth.google.com/download-earth.html e baixe a versão Beta 4 (é a única para Linux). Observe se sua configuração pode rodar o programa, lendo a seção Recommended configuration para Linux. Aí basta abrir o terminal e

chmod a+x GoogleEarthLinux.bin
sudo ./GoogleEarthLinux.bin

A instalação é gráfica e o programa deve aparecer no menu Aplicações -> Internet. Se preferir, é só rodar googleearth no terminal. Como aviso: não é lá estas coisas quanto a estabilidade.

Atenção: se você rodou o instalador como sugeri acima, é provável que vocÊ não consiga rodar o googleearth da próxima vez ;) Caso dê o erro de symlink: permission denied é porque o root se apropriou do seu diretório. Tome-o de volta com o comando

chown -R seu_login .googleearth

segunda-feira, julho 03, 2006

Limpando a instalação

Vamos retirar alguns serviços desnecessários na nossa instalação no desktop: PCMCIA, LVM e RAID.
Fácil, basta remover os pacotes:

sudo aptitude purge pcmciautils lvm-common lvm2 mdadm ubuntu-standard ubuntu-minimal


Vá com fé....

Criando espelhos do Ubuntu

Eu deveria ter colocado esta receita antes, mas vou deixar aqui porque o Toninho pediu :)
Fazer um mirror do Ubuntu é fácil. Instale o pacote debmirror (está no Universe):

sudo aptitude install debmirror


Eu uso um script que foi adaptado do Thomas Lange, famoso pelo FAI. Eu ainda vou postar sobre o FAI, que é uma ferramenta poderosíssima para instalações em massa do Debian/Ubuntu. Não vou detalhar aqui a instalação do Apache, estou supondo que já esteja funcionando e com o /var/www como diretório principal.

O script é o seguinte

#!/bin/sh
# proto pode ser http,ftp ou rsync
proto=http
# host é de onde baixar
# Eu mantenho alguns comentados no caso do último falhar
# host=ubuntu.interlegis.gov.br
# host=archive.ubuntu.org
host=espelhos.edugraf.ufsc.br
# root é de onde começa o mirror
# costuma ser /pub/ubuntu em ftps.
root=ubuntu
# onde eu vou colocar os pacotes
destdir=/var/www/mirror
# Baixando 32 e 64 bits...
arch=i386,amd64
# aqui é o trabalho de verdade e está em uma única linha
defopt="-v -p --arch=$arch --host=$host --root=$root --section=main,multiverse,restricted,universe --dist=dapper,dapper-updates,dapper-security,dapper-backports
-e $proto --ignore-release-gpg --postcleanup --nosource"
echo "---- create mirror for dapper - 32 e 64 -------"
debmirror $defopt $destdir/$root


Pronto. Agora é só colocar no cron do root (crontab -e faz o serviço). Eu atualizo às 00:40.
Os outros repositórios de interesse tem scripts semelhantes:

Cipherfunk (multimídia, sem amd64)

proto=ftp
host=cipherfunk.org
root=/pub/packages/ubuntu/
destdir=/var/www/mirror/
arch=i386
defopt="--progress -v -p --arch=$arch --nosource --host=$host --root=$root --section=main --ignore-missing-release --ignore-release-gpg --dist=dapper --proxy=http://10.0.0.1:3128 -e $proto"
echo "------ create mirror for ubuntu -------"
debmirror $defopt $destdir/ubuntu-cipherfunk


Seveas (freenx e drivers da Broadcom, sem amd64)

proto=http
host=mirror2.ubuntulinux.nl
root=.
destdir=/var/www/mirror
arch=i386
defopt="-v -p --arch=$arch --host=$host --root=$root --section=custom,extras,freenx,seveas-meta,all --dist=dapper-seveas -e $proto --ignore-release-gpg --postcleanup --nosource"
echo "----- create mirror for dapper-seveas --------"
debmirror $defopt $destdir/ubuntu-seveas


PenguinLiberationFront (mais multimídia)

proto=http
host=packages.freecontrib.org
root=ubuntu/plf
destdir=/var/www/mirror/
destddefopt="--progress -v -p --arch=i386 --nosource --host=$host --root=$root --section=free,non-free --ignore-missing-release --ignore-release-gpg --dist=dapper -e $proto"
echo "----- create mirror for ubuntu-plf ----"
debmirror $defopt $destdir/ubuntu-plf

Permissões p/ Usuários

Problema: muitos usuários acessarão esta máquina. Para dar permissão de montar floppies, CDs ou áudio, fica impraticável adicioná-los aos grupos toda a vez. Vamos usar um truque sujo do Guia Foca Linux: usar o PAM. Vamos fazer isto para o gdm e para o ssh. Edite o /etc/pam.d/gdm, que deve estar assim:

#%PAM-1.0
auth requisite pam_nologin.so
auth required pam_env.so
@include common-auth
@include common-account
session required pam_limits.so
@include common-session
@include common-password


e adicione a linha

auth required pam_group.so


Edite o arquivo /etc/security/group.conf e adicione as seguintes linhas no final do arquivo:

gdm; * ; * ; Al0000-2400; cdrom, floppy, audio, dip, video, plugdev, scanner
ssh; * ; * ; Al0000-2400; cdrom, floppy, audio, dip, video, plugdev, scanner


Como está comentado no arquivo, a sintaxe de cada linha é
services;ttys;users;times;groups

ou seja, o serviço (gdm e ssh), os terminais (* para todos), os usuários (* para todos), o horário (você pode até permitir só ouvir som depois das 18:00) e os grupos aos quais os usuários serão adicionados.