Posts Tagged 'Linux'

Instant Rails, o ambiente Rails de bolso

Post movido para: http://blog.guilhermegarnier.com/2009/06/18/instant-rails-o-ambiente-rails-de-bolso/

Com a proliferação dos pen drives com alguns GB de capacidade e a preços acessíveis, aplicativos que rodam sem necessitar de instalação tornaram-se igualmente populares. Estes aplicativos “portáteis”, mais conhecidos como Portable Apps, podem ser executados diretamente do pen drive, geralmente com todas as funções dos equivalentes instaláveis. Eles são mais comuns em ambiente Windows (o site mais conhecido é o PortableApps, mas existem outros, como o The Portable Freeware Collection), porém também existem Portable Apps para Mac OS X. Até onde eu sei, não existem Portable Apps para Linux, porém, é possível executar os Portable Apps de Windows via Wine.

Como não poderia deixar de ser, existem também muitos ambientes de desenvolvimento portáteis. Talvez o mais conhecido seja o XAMPP, que inclui um servidor Apache com MySQL, PHP e Perl, entre outras ferramentas. Basta descompactar e executar.

Para Ruby on Rails, também existe um ambiente portátil. É o Instant Rails, infelizmente disponível somente para Windows. A exemplo do XAMPP, basta descompactar um arquivo zip para se ter um ambiente Rails totalmente funcional, com Mongrel, Apache e MySQL. É possível, inclusive, instalar RubyGems e plugins Rails normalmente, como num ambiente Rails comum. O pacote inclui ainda o SQLite, PHP, phpMyAdmin, o editor SciTE e o typo, sobre o qual já escrevi aqui no blog.

A principal desvantagem do Instant Rails é que ele está bastante desatualizado – a versão atual, 2.0, é de dezembro de 2007, e inclui as seguintes versões:

  • Ruby 1.8.6
  • Rails 2.0.2
  • Mongrel 1.1.2
  • RubyGems 1.0.1
  • Rake 0.8.1
  • Apache 1.3.33
  • MySQL 5.0.27
  • SQLite 3.5.4
  • PHP 4.3.10
  • SciTE 1.72
  • phpMyAdmin 2.10.0.2

Segundo o wiki do projeto, há uma petição solicitando o upgrade para a versão 1.9.1 do Ruby.

UPDATE: Só agora vi que o Urubatan escreveu sobre o mesmo assunto no blog dele. Só que ele citou o Ruby on Rails Portable, um projeto muito semelhante ao InstantRails, porém um pouco mais atualizado: a versão do Rails atualmente é 2.1.0 (a do Ruby é 1.8.6).

Outro projeto semelhante que encontrei, mas ainda não testei, é o Flash Rails.

Anúncios

Matrix rodando no Windows

Post movido para: http://blog.guilhermegarnier.com/2008/11/24/matrix-rodando-no-windows/

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… 😉

Script para verificar o status da conexão PPPoE

Post movido para: http://blog.guilhermegarnier.com/2008/11/24/script-para-verificar-o-status-da-conexao-pppoe/

No 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

Post movido para: http://blog.guilhermegarnier.com/2008/06/18/instalacao-do-firefox-30-no-ubuntu/

Ontem 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

Post movido para: http://blog.guilhermegarnier.com/2008/04/04/impressao-para-pdf-no-ubuntu-correcao-de-problemas/

Alguns 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, execute sudo /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 comando sudo aa-complain cupsd

Como abrir arquivos OpenXML no OpenOffice

Post movido para: http://blog.guilhermegarnier.com/2008/03/26/como-abrir-arquivos-openxml-no-openoffice/

Na 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:

Como montar diretórios remotos via ssh

Post movido para: http://blog.guilhermegarnier.com/2008/03/24/como-montar-diretorios-remotos-via-ssh/

O sshfs é um comando muito útil para quem precisa acessar servidores (ou máquinas virtuais) remotos. Com este comando, em vez de precisarmos executar o ssh para logarmos ou o scp para copiarmos arquivos entre o desktop e os servidores, podemos montar localmente um diretório remoto.

Para instalar esse pacote no Ubuntu, basta executar o comando sudo apt-get install sshfs. Em seguida, adicione seu login ao grupo fuse:

sudo usermod -a -G fuse login

Apenas usuários deste grupo terão permissão para montar e desmontar diretórios. Para montar um diretório remoto:

sudo sshfs user@server:/usr/local/test ./server-test

O comando acima mapeia o diretório /usr/local/test do servidor server no diretório local ./server-test, como usuário remoto user. Há uma série de parâmetros opcionais, como forçar sincronização e cache. Verifique o man do comando para mais detalhes.

Para desmontar o diretório, basta executar:

fusermount -u ./server-test

Referência:


@guilhermgarnier

Erro: o Twitter não respondeu. Por favor, aguarde alguns minutos e atualize esta página.

Estatísticas

  • 58,410 hits
Linux Counter