Este vídeo do CollegeHumor faz uma paródia do Matrix, mostrando o que aconteceria se rodasse num Windows. Excelente. Destaque para os segundos finais…
Archive for the ‘Linux’ category
Matrix rodando no Windows
November 24th, 2008Script para verificar o status da conexão PPPoE
November 24th, 2008No meu computador pessoal, o acesso a Internet é através de um link de rádio. A autenticação no provedor utiliza PPPoE. Para configurar a autenticação no Windows XP, basta usar o cliente PPPoE que vem por padrão. No Ubuntu também é muito simples, basta executar o comando pppoeconf, e seguir os passos de configuração. Na maioria das perguntas só precisei selecionar a opção default. Fora isso, são solicitados username e senha do provedor. Ao término da configuração, a interface PPP já está configurada, e é ativada automaticamente na inicialização.
Apesar de a configuração acima ter funcionado no Ubuntu, a conexão parava de funcionar com freqüência (a cada 20 ou 30 minutos, aproximadamente). Apesar de continuar aparecendo como ativa, eu não conseguia acessar nada. Quando isto ocorria, eu precisava executar o comando poff para encerrar a conexão e, em seguida, pon dsl-provider para restabelecê-la. A princípio, achei que fosse algum problema do provedor; porém, isso não ocorre no Windows XP.
Encontrei algumas referências a esse problema nos forums do Ubuntu, mas nenhuma solução definitiva. Para resolver, criei um script que verifica periodicamente se a conexão está ativa (na verdade, tenta pingar o site do provedor 3 vezes, aumentando o timeout a cada tentativa). Em caso negativo, executa os comandos poff e pon, conforme descrito acima, e repete o procedimento. Segue o script abaixo (salvei-o como /home/guilherme/scripts/internet.sh):
#!/bin/bash
cmd_ping="/bin/ping"
cmd_pon="/usr/bin/pon"
cmd_poff="/usr/bin/poff"
provider="dsl-provider"
host="www.radlink.com.br"
frequency="10s"
verbose=0
while [ true ]
do
ok=0
for timeout in 1 2 3
do
`$cmd_ping -q -c 1 -W $timeout $host > /dev/null 2>&1`
if [ $? -eq 0 ]
then
ok=1
break
fi
done
if [ $ok -eq 1 ]
then
sleep $frequency
continue
fi
`$cmd_poff $provider > /dev/null 2>&1`
`$cmd_pon $provider > /dev/null 2>&1`
if [ $? -ne 0 ]
then
$verbose && echo "Erro na conexão com o provedor"
exit 1
fi
sleep $frequency
done
exit 0
Os parâmetros no início do script definem os paths para os comandos utilizados (ping, pon e poff), o nome do provedor, conforme foi especificado no comando pppoeconf (o default é dsl-provider), o host que será pingado e a freqüência de execução do loop.
Para completar, coloquei este script na inicialização. Primeiro é necessário criar um script shell e salvá-lo no diretório /etc/init.d (usei este artigo como modelo):
#! /bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/home/guilherme/scripts/internet.sh
PIDFILE=/home/guilherme/scripts/internet.pid
NAME=internetd
DESC="Internet"
test -f $DAEMON || exit 0
set -e
. /lib/lsb/init-functions
case "$1" in
start)
log_begin_msg "Starting $DESC: $NAME"
start-stop-daemon --start --quiet --background -m --pidfile "$PIDFILE" --exec $DAEMON
log_end_msg $?
;;
stop)
log_begin_msg "Stopping $DESC: $NAME"
start-stop-daemon --stop --quiet --pidfile $PIDFILE
rm -f $PIDFILE
log_end_msg $?
;;
restart|force-reload)
log_begin_msg "Restarting $DESC: $NAME"
if start-stop-daemon --stop --quiet --pidfile $PIDFILE; then
start-stop-daemon --start --quiet --background -m --pidfile "$PIDFILE" --exec $DAEMON
fi
log_end_msg $?
;;
status)
echo -n "Status of $DESC: "
if [ ! -r "$PIDFILE" ]; then
echo "$NAME is not running."
exit 3
fi
if read pid < "$PIDFILE" && ps -p "$pid" > /dev/null 2>&1; then
echo "$NAME is running."
exit 0
else
echo "$NAME is not running but $PIDFILE exists."
exit 1
fi
;;
*)
N=/etc/init.d/${0##*/}
echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
exit 1
;;
esac
exit 0
Em seguida, dê permissão de execução ao script (salvei o arquivo com o nome internetd):
sudo chmod +x /etc/init.d/internetd
Finalmente, para colocar o script na inicialização, o comando é:
sudo /usr/sbin/update-rc.d -f internetd defaults
Caso seja necessário interromper ou reiniciar o script, use o comando sudo /etc/init.d/internetd start/stop/restart.
Depois que atualizei o Ubuntu para 8.04 não tive mais esse problema, porém no Ubuntu 7.10 acontecia constantemente. Além disso, este procedimento só é necessário caso o seu ponto de Internet esteja conectado diretamente ao micro, o que era o meu caso na época. Como posteriormente comprei um roteador com Wi-Fi, todo esse procedimento tornou-se desnecessário, pois o próprio roteador passou a fazer a autenticação PPPoE. Para desfazer as configurações, primeiramente retire o script do init.d com o comando:
sudo /usr/sbin/update-rc.d -f internetd remove
Em seguida, remova a interface PPP que foi criada pelo pppoeconf editando o arquivo /etc/network/interfaces e removendo ou comentando as linhas correspondentes a essa interface. No meu caso, as linhas eram as seguintes:
auto dsl-provider iface dsl-provider inet ppp pre-up /sbin/ifconfig eth0 up # line maintained by pppoeconf provider dsl-provider
UPDATE: os scripts acima estão disponíveis no GitHub.
Instalação do Firefox 3.0 no Ubuntu
June 18th, 2008Ontem foi lançada a versão final do Firefox 3.0. Porém, como esta versão ainda não está disponível nos respositórios oficiais do Ubuntu, resolvi fazer o download e a instalação manualmente. Por segurança, optei por manter instalada a versão 2, para o caso de encontrar algum problema, ou alguma extensão que considero essencial não funcionar.
Primeiramente, fiz o download do Firefox 3.0. Em seguida, movi o diretório da versão anterior para outro nome:
cd /usr/lib sudo mv firefox firefox-2.0
Descompactei o Firefox 3.0 neste mesmo local, e movi o diretório para firefox-3.0, criando em seguida um link simbólico para firefox. Desta forma, fica mais fácil voltar a utilizar o Firefox 2 caso eu necessite:
sudo tar xvfj firefox-3.0.tar.bz2 sudo mv firefox firefox-3.0 sudo ln -s firefox-3.0 firefox
Em seguida, você deve habilitar os plugins. Verifique no diretório plugins do Firefox 2 os plugins que estão habilitados:
ls -l /usr/lib/firefox-2.0/plugins/ total 12 lrwxrwxrwx 1 root root 37 2008-05-26 10:03 flashplugin-alternative.so -> /etc/alternatives/firefox-flashplugin lrwxrwxrwx 1 root root 39 2008-02-28 14:19 libjavaplugin.so -> /etc/alternatives/firefox-javaplugin.so lrwxrwxrwx 1 root root 36 2008-02-28 14:10 libtotem-basic-plugin.so -> ../../totem/libtotem-basic-plugin.so lrwxrwxrwx 1 root root 37 2008-02-28 14:10 libtotem-basic-plugin.xpt -> ../../totem/libtotem-basic-plugin.xpt lrwxrwxrwx 1 root root 34 2008-02-28 14:10 libtotem-gmp-plugin.so -> ../../totem/libtotem-gmp-plugin.so lrwxrwxrwx 1 root root 35 2008-02-28 14:10 libtotem-gmp-plugin.xpt -> ../../totem/libtotem-gmp-plugin.xpt lrwxrwxrwx 1 root root 36 2008-02-28 14:10 libtotem-mully-plugin.so -> ../../totem/libtotem-mully-plugin.so lrwxrwxrwx 1 root root 37 2008-02-28 14:10 libtotem-mully-plugin.xpt -> ../../totem/libtotem-mully-plugin.xpt lrwxrwxrwx 1 root root 42 2008-02-28 14:10 libtotem-narrowspace-plugin.so -> ../../totem/libtotem-narrowspace-plugin.so lrwxrwxrwx 1 root root 43 2008-02-28 14:10 libtotem-narrowspace-plugin.xpt -> ../../totem/libtotem-narrowspace-plugin.xpt -rw-r--r-- 1 root root 9104 2008-04-18 13:43 libunixprintplugin.so lrwxrwxrwx 1 root root 43 2008-02-28 14:15 mplayerplug-in-dvx.so -> ../../mozilla/plugins/mplayerplug-in-dvx.so lrwxrwxrwx 1 root root 44 2008-02-28 14:15 mplayerplug-in-dvx.xpt -> ../../mozilla/plugins/mplayerplug-in-dvx.xpt lrwxrwxrwx 1 root root 42 2008-02-28 14:15 mplayerplug-in-qt.so -> ../../mozilla/plugins/mplayerplug-in-qt.so lrwxrwxrwx 1 root root 43 2008-02-28 14:15 mplayerplug-in-qt.xpt -> ../../mozilla/plugins/mplayerplug-in-qt.xpt lrwxrwxrwx 1 root root 42 2008-02-28 14:15 mplayerplug-in-rm.so -> ../../mozilla/plugins/mplayerplug-in-rm.so lrwxrwxrwx 1 root root 43 2008-02-28 14:15 mplayerplug-in-rm.xpt -> ../../mozilla/plugins/mplayerplug-in-rm.xpt lrwxrwxrwx 1 root root 39 2008-02-28 14:15 mplayerplug-in.so -> ../../mozilla/plugins/mplayerplug-in.so lrwxrwxrwx 1 root root 43 2008-02-28 14:15 mplayerplug-in-wmp.so -> ../../mozilla/plugins/mplayerplug-in-wmp.so lrwxrwxrwx 1 root root 44 2008-02-28 14:15 mplayerplug-in-wmp.xpt -> ../../mozilla/plugins/mplayerplug-in-wmp.xpt lrwxrwxrwx 1 root root 40 2008-02-28 14:15 mplayerplug-in.xpt -> ../../mozilla/plugins/mplayerplug-in.xpt
Você deve criar esses mesmos links simbólicos no diretório plugins do Firefox 3:
cd /usr/lib/firefox-3.0/plugins/ sudo ln -s /etc/alternatives/firefox-flashplugin . sudo ln -s /etc/alternatives/firefox-javaplugin.so . sudo ln -s ../../totem/libtotem-* . sudo ln -s ../../mozilla/plugins/mplayerplug-in* .
Finalmente, fiz um backup do diretório de configurações que fica no meu home:
cd ~ cp -r .mozilla FIREFOX-2.0_BACKUP
Pronto, o Firefox 3.0 já está instalado. Para retornar à versão 2, basta remover o link /usr/lib/firefox e criar outro apontando para firefox2.0:
cd /usr/lib sudo rm firefox sudo ln -s firefox-2.0 firefox
Ao executar a nova versão pela primeira vez, como em qualquer atualização, o Firefox verifica a compatibilidade das extensões que estão instaladas. Algumas extensões apareceram como não compatíveis com o Firefox 3. O Autocomplete Manager, por exemplo, é incompatível, mas foi incorporado ao Firefox 3 e não é mais necessário. Já o Firebug, ferramenta essencial para qualquer desenvolvedor web, tem duas versões: 1.05 para Firefox 2 e 1.2 para Firefox 3. Ao iniciar o Firefox 3 pela primeira vez, você receberá uma mensagem informando que o Firebug é incompatível, e que não foram encontradas versões mais recentes da extensão. Você deve procurá-lo na página de add-ons e clicar em “add to Firefox” para instalar a versão mais recente.
Referência: Instalando Firefox 3 no Centos/RHEL e Fedora
Impressão para PDF no Ubuntu – correção de problemas
April 4th, 2008Alguns programas no Ubuntu permitem a impressão para o formato PDF, como o Evince e o Gedit. Para ter essa opção disponível em qualquer programa, basta instalar uma impressora virtual de PDF, usando o pacote cups-pdf. Se ele não estiver instalado na sua distribuição, instale-o com o comando sudo apt-get install cups-pdf.
Para criar uma impressora de PDF, acesse a opção System -> Administration -> Printing e depois “New Printer”. Depois selecione “Print into PDF file” como tipo de impressora, e na tela seguinte, “Generic” como fabricante e “PDF file generator” como modelo. Finalmente, dê um nome para a impressora. Feito isso, a impressora de PDF ficará disponível para qualquer programa que tenha a opção de impressão. Os PDFs serão criados no diretório PDF dentro do home do usuário.
O processo acima já foi descrito diversas vezes, em vários blogs e sites sobre Linux. Porém, decidi escrever sobre isso porque a maioria dos artigos pára por aí, não informando como alterar as configurações do cups-pdf e nem como resolver alguns dos problemas mais comuns.
Configurações
O arquivo de configuração do cups-pdf fica em /etc/cups/cups-pdf.conf. Neste arquivo, ficam definidos o diretório de destino dos PDFs, o diretório de spool, as regras para formação dos nomes de arquivos a partir do nome do documento impresso, configurações de segurança e permissões, o grupo de usuários que tem permissão para usar esta impressora, tipo de log, configurações do Ghostscript e outros. Se você alterar algum destes parâmetros, será necessário executar sudo /etc/init.d/cupsys restart para que as modificações tenham efeito.
Problemas
Os problemas mais comuns com o cups-pdf são:
- se após enviar um trabalho para a impressora o arquivo correspondente não aparecer no diretório PDF dentro do seu home (ou o diretório que você tiver definido no arquivo de configuração), verifique o log (por padrão fica em
/var/log/cups/cups-pdf_log). Ele pode ajudar a descobrir o que ocorreu (ex: problemas de permissão) - verifique se o usuário está no grupo correspondente definido no arquivo de configuração (grupo lp por padrão)
- se você alterar o diretório de destino dos PDFs, altere também o arquivo
/etc/apparmor.d/usr.sbin.cupsd, na seção /usr/lib/cups/backend/cups-pdf. Este arquivo contém as regras de segurança do AppArmor, e define os diretórios onde o cups-pdf tem permissão de escrita. Após alterá-lo, executesudo /etc/init.d/cupsys restart - se o log do cups-pdf apresentar a mensagem
"[ERROR] failed to set file mode for PDF file (non fatal)", execute o comandosudo aa-complain cupsd
Como abrir arquivos OpenXML no OpenOffice
March 26th, 2008Na versão 2007, o Microsoft Office começou a usar o formato OpenXML como padrão – no caso do Word, a extensão deste formato é docx. Porém, este formato é incompatível com o OpenOffice (e com versões anteriores do Word…). Para abrir arquivos deste formato no OpenOffice, instale o odf-converter. Após instalá-lo, reinicie o OpenOffice e você conseguirá abrir e salvar nesse formato. O pacote deb pode ser acessado aqui. Instalei este pacote sem problemas no Ubuntu com OpenOffice 2.3, apesar dos comentários nessa página de download.
Referência:

