Tag: Tutoriais (Atom feed)

Definindo opções padrão no Portage

Published by Bruno Yporti on Dec 27, 2011  •  Comments

http://blog.yporti.com/attachments/gentoologo.png

Poucos sabem que o Portage, gerenciador de pacotes do Gentoo, permite que se defina no make.conf opções padrão para sua execução. Isto é muito útil pois permite além da economia de tempo, ativar algumas opções que normalmente costumamos esquecer.

No meu caso, além do --verbose, ativo outras duas opções:

  • --keep-going permite que a compilação continue, se possível, mesmo se um pacote da lista não for compilado
  • --with-bdeps=y inclui dependências de compilação ao se pedir, por exemplo, para atualizar o @world

Ok, mas como exatamente devo definir isto no make.conf? Assim:

EMERGE_DEFAULT_OPTS="--verbose --keep-going --with-bdeps=y"

Agora ao usar o comando emerge, estas opções previamente definidas não precisarão mais ser digitadas. Dica rápida, mas para usuários experientes é algo que faz diferença e pode vir a ter muitas outras aplicabilidades.

Tags: Gentoo, Tutoriais  •  Permalink  •  Source code

Readability: Melhorando a legibilidade na web!

Published by Bruno Yporti on Oct 13, 2011  •  Modified on Dec 27, 2011  •  Comments

http://blog.yporti.com/attachments/readability.jpg

A tipografia da maioria dos sites deixa muito a desejar, muitas vezes comprometendo a leitura dos textos ali publicados. Em outros casos existe uma tipografia aceitável, mas as cores ou propagandas desproporcionais acabam roubando a atenção do conteúdo. Para evitar isso, costumo usar o Readability, um site que extrai o conteúdo da página que você está lendo e deixa o conteúdo de uma forma legível e agradável. Recurso como este foi adicionado ao Safari no iOS 5 pelo que eu vi e tenho usado com frequência, o ganho é na leitura é significativo, principalmente em textos maiores e que exigem mais concentração.

O Readability tem uma versão paga que permite usar mais recursos, como marcar textos para ler depois, mas com a versão básica (que não exige registro), você tem todos os benefícios do aumento da legibilidade nos sites. Existem addons para o Firefox, Chrome e Safari. Espero que aproveitem e melhorem o hábito de leitura na web!

Tags: Tipografia, Tutoriais  •  Permalink  •  Source code

Cartes du Ciel para Gentoo Linux!

Published by Bruno Yporti on Sep 21, 2011  •  Comments

http://blog.yporti.com/attachments/skychart.jpg

Acabo de adicionar em meu overlay o ebuild do Cartes du Ciel (Skycharts), programa criado por Patrick Chevalley para desenhar cartas celestes, muito útil para astrônomos amadores e agora acessível também à todos que usam Gentoo Linux!

Para instalar o pacote, adicione o meu overlay com o layman:

# layman -a yporti

E certifique-se de que tenha a linha abaixo no final do seu make.conf:

source /var/lib/layman/make.conf

Depois disso, basta instalar o pacote skycharts-bin:

# emerge -av skycharts-bin

O ebuild é uma versão modificada e atualizada da criada pelo Ivan Boldyrev (monoid), disponível em seu gentoo-astronomy. Espero aproveitem o ebuild, manterei o pacote atualizado dentro do possível.

Tags: Astronomia, Gentoo, Tutoriais  •  Permalink  •  Source code

Resolvendo problemas de compilação no Gentoo

Published by Bruno Yporti on Sep 14, 2011  •  Comments

Tenho visto que muitos usuários do Gentoo não sabem lidar com os erros de compilação, tendo problemas inclusive para conseguir ajuda, uma vez que fornecem poucas informações, como logs incompletos. Justamente por isso escrevi este post, para dar uma ideia de como eu costumo lidar com estes problemas no meu sistema.

Para demonstrar a minha rotina ao encontrar problemas de compilação, usarei o exemplo abaixo, um erro ao compilar o pacote sys-libs/zlib. Abaixo está o log inútil que citei no início do artigo, contendo apenas a parte final:

* ERROR: sys-libs/zlib-1.2.5-r2 failed (compile phase):
* (no error message)
* Call stack:
* ebuild.sh, line 56: Called src_compile
* environment, line 2193: Called die
* The specific snippet of code:
* emake || die
* If you need support, post the output of 'emerge --info =sys-libs/zlib-1.2.5-r2',
* the complete build log and the output of 'emerge -pqv =sys-libs/zlib-1.2.5-r2'.
* The complete build log is located at '/var/tmp/portage/sys-libs/zlib-1.2.5-r2/temp/build.log'.
* The ebuild environment file is located at '/var/tmp/portage/sys-libs/zlib-1.2.5-r2/temp/environment'.
* S: '/var/tmp/portage/sys-libs/zlib-1.2.5-r2/work/zlib-1.2.5
>>> Failed to emerge sys-libs/zlib-1.2.5-r2, Log file:
>>> '/var/tmp/portage/sys-libs/zlib-1.2.5-r2/temp/build.log'

Veja, com isso podemos saber apenas que o problema foi com o pacote sys-libs/zlib e durante a fase de compilação (src_compile). Apesar da própria mensagem citar o local do log completo, os usuários ignoram isso. Agora veja o que acontece se pegarmos o log com algumas linhas a mais:

cc -O2 -march=native -fgraphite-identity -ftree-vectorize -pipe -DNO_FSEEKO -DNO_snprintf
-DHAS_sprintf_void -c -o example.o example.c
cc -O2 -march=native -fgraphite-identity -ftree-vectorize -pipe -DNO_FSEEKO -DNO_snprintf
-DHAS_sprintf_void -c -o adler32.o adler32.c
example.c:1:0: sorry, unimplemented: Graphite loop optimizations cannot be used (-fgraphite,
-fgraphite-identity, -floop-block, -floop-flatten, -floop-interchange, -floop-strip-mine,
-floop-parallelize-all, and -ftree-loop-linear)
adler32.c:1:0: sorry, unimplemented: Graphite loop optimizations cannot be used (-fgraphite,
-fgraphite-identity, -floop-block, -floop-flatten, -floop-interchange, -floop-strip-mine,
-floop-parallelize-all, and -ftree-loop-linear)
make: *** [adler32.o] Error 1
make: *** Waiting for unfinished jobs....
make: *** [example.o] Error 1
emake failed
* ERROR: sys-libs/zlib-1.2.5-r2 failed (compile phase):
* (no error message)
* Call stack:
* ebuild.sh, line 56: Called src_compile
* environment, line 2193: Called die
* The specific snippet of code:
* emake || die
* If you need support, post the output of 'emerge --info =sys-libs/zlib-1.2.5-r2',
* the complete build log and the output of 'emerge -pqv =sys-libs/zlib-1.2.5-r2'.
* The complete build log is located at '/var/tmp/portage/sys-libs/zlib-1.2.5-r2/temp/build.log'.
* The ebuild environment file is located at '/var/tmp/portage/sys-libs/zlib-1.2.5-r2/temp/environment'.
* S: '/var/tmp/portage/sys-libs/zlib-1.2.5-r2/work/zlib-1.2.5'
>>> Failed to emerge sys-libs/zlib-1.2.5-r2, Log file:
>>> '/var/tmp/portage/sys-libs/zlib-1.2.5-r2/temp/build.log'

Opa, agora é diferente, sabemos onde e qual foi o problema. Podemos ver erro ao compilar example.c e adler32.c, isso ocorre porque usei -j2, se usasse -j1 ele provavelmente pararia no primeiro erro. Agora vamos isolar a mensagem de erro (o nome do arquivo não é importante):

sorry, unimplemented: Graphite loop optimizations cannot be used (-fgraphite, -fgraphite-identity,
-floop-block, -floop-flatten, -floop-interchange, -floop-strip-mine, -floop-parallelize-all, and
-ftree-loop-linear)

Isso nos dá uma ideia do que houve, eu usei uma flag do Graphite no make.conf e aparentemente não está funcionando. Neste ponto recorremos ao Google! Os primeiros resultados mostram duas causas para isso: atualização do ppl incorreta ou simplesmente ter compilado o GCC sem a flag graphite, portanto, sem suporte a esta CFLAG (foi este o caso).

Existem alguns pontos importantes que gostaria de destacar, o primeiro deles é o número de compilações em paralelo (-j), quanto maior esse número, mais difícil pode ser achar a parte do erro, uma vez que o problema pode ocorrer em apenas um dos arquivos sendo compilados.

O idioma do sistema também pode dificultar, uma vez que certas mensagens são traduzidas e quando você for procurar informações sobre o erro, terá chances bem menores de sucesso. Exatamente por isso prefiro usar todos meus sistemas em en_US, por isso e pela estética de menus, que ficam horríveis com algumas traduções. ;)

Basicamente esta é a rotina para solução de problemas por conta própria, depois de fazer isso e não ter sucesso, você pode recorrer às listas de discussão, canais no IRC e fóruns. Se ainda sim não conseguir resolver, é preciso ver se já não existe um bug reportado para este pacote em https://bugs.gentoo.org/ (isso pode/deve ser feito na fase inicial também), muitas vezes já possuem até patch de correção, mas caso você seja o primeiro a encontrar o problema, reporte o bug conforme as orientações do site, fornecendo o log completo e informações sobre o sistema (emerge --info, no mínimo) e sobre como o bug ocorreu.

Espero que o artigo venha a ser útil para usuários que estão começando e ainda se sentem perdidos quando se deparam com problemas. Até a próxima!

Tags: GCC, Gentoo, Tutoriais  •  Permalink  •  Source code

Manpages coloridas no Gentoo!

Published by Bruno Yporti on Aug 28, 2011  •  Comments

Para ter manpages coloridas no Gentoo é muito simples. Primeiro, instale o most:

# emerge -av most

Depois, precisamos apenas defini-lo como o pager padrão, para isto, usamos o eselect:

# eselect pager list

Isso retornará uma lista das opções disponíveis:

[1] /bin/more
[2] /usr/bin/less
[3] /usr/bin/most

Como no caso acima o most é a opção número 3, fazemos:

# eselect pager set 3
# source /etc/profile

Pronto! Agora você poderá ler suas manpages (ao invés de fazer perguntas idiotas em fórums) coloridas!

Tags: Gentoo, Tutoriais  •  Permalink  •  Source code

Adicionando certificados SSL da CAcert no Chromium

Published by Bruno Yporti on Jul 29, 2010  •  Comments

Uma das coisas que me irritam no Chromium é a falta de um gerenciador de certificados SSL, como o que existe no Firefox. Isso leva a uma coisa muito chata, que é ter que aceitar o certificado sempre uma nova sessão do navegador é aberta. Como recentemente ativei SSL para o meu blog, usei o CAcert para criar o meu certificado e por isso resolvi encontrar um meio de adicioná-lo como seguro no meu Gentoo. O fato curioso é que o Gentoo também usa o CAcert, logo, isso resolveria dois problemas de uma só vez, já que é bem irritante abrir o https://bugs.gentoo.org/ no Chromium.

Bom, achei a solução aqui. No Gentoo, precisamos ter o pacote dev-libs/nss compilado com a USE flag utils ativada:

# echo "dev-libs/nss utils" >> /etc/portage/package.use
# emerge -av1 nss

Depois basta executar como usuário comum:

$ wget http://www.cacert.org/certs/root.crt
$ wget http://www.cacert.org/certs/class3.crt
$ certutil -d sql:$HOME/.pki/nssdb -A -t "TCu,Cu,Tuw" -n "CACert Class 1 Root Certificate" -i root.crt
$ certutil -d sql:$HOME/.pki/nssdb -A -t "TCu,Cu,Tuw" -n "CACert Class 3 Root Certificate" -i class3.crt
$ rm root.crt class3.crt

O procedimento é o mesmo para qualquer outra entidade de certificação. :~)

Tags: Chrome, SSL, Tutoriais  •  Permalink  •  Source code

Usando GCC specs para forçar LDFLAGS no Gentoo

Published by Bruno Yporti on May 17, 2010  •  Comments

O comportamento padrão do GCC pode ser alterado via Specs, que são arquivos contendo as instruções sobre quais flags usar e em que circunstâncias. Você pode olhar a spec padrão do seu GCC com o comando:

# gcc -dumpspecs

Após ler o artigo sobre --as-needed do Gentoo percebi que poderia usar isso para forçar o uso de minhas LDFLAGS, umas vez que alguns pacotes não respeitam aquelas definidas no make.conf. O procedimento é bastante simples:

# export SPECSFILE=$(dirname "$(gcc -print-libgcc-file-name)")/ldflags.specs
# export CURRPROFILE=/etc/env.d/gcc/$(gcc-config -c)
# gcc -dumpspecs | sed -e '/link:/,+1 s:--eh-frame-hdr:\0 *SUASFLAGS*:' > "$SPECSFILE"
# sed "${CURRPROFILE}" -e '1i\GCC_SPECS='$SPECSFILE > "${CURRPROFILE}-ldflags"
# gcc-config "$(basename "${CURRPROFILE}")-ldflags"
# source /etc/profile

No caso, basta substituir o SUASFLAGS pelas suas LDFLAGS, no meu caso (que uso -O1 --as-needed --hash-style=gnu --sort-common) ficaria assim:

# gcc -dumpspecs | sed -e '/link:/,+1 s:--eh-frame-hdr:\0 -O1 --as-needed --hash-style=gnu --sort-common:' > "$SPECSFILE"

Esta dica deve ser usada apenas por usuários avançados e que sabem o que estão fazendo. Como visto no passos acima, basta usar o gcc-config para alternar entre os diferentes specs ou mesmo o GCC vanilla.

Tags: GCC, Gentoo, Tutoriais  •  Permalink  •  Source code

Ativando suavização de fontes no Debian e no Gentoo

Published by Bruno Yporti on Aug 29, 2009  •  Comments

Diferentemente das distribuições voltadas ao usuário final, Gentoo e Debian não vem com configurações de fontes otimizadas para LCDs. É possível melhorar consideravelmente a legibilidade das fontes apenas configurando o fontconfig.

Gentoo

Use o eselect para ativar as configurações específicas, que são:

10-autohint.conf
10-sub-pixel-rgb.conf
70-no-bitmaps.conf

Para ativar os ajustes, basta usar o eselect fontconfig, cuja sintaxe é:

# eselect fontconfig enable #id

Para descobrir o #id, basta usar:

# eselect fontconfig list

No meu caso, as #ids são 1, 4 e 24. Logo, para meu sistema, devo executar os seguintes comandos:

# eselect fontconfig enable 1
# eselect fontconfig enable 4
# eselect fontconfig enable 24

Debian

No Debian é até mais simples, basta usar o dpkg-reconfigure:

# dpkg-reconfigure fontconfig-config

Na configuração, selecione “Autohinter”, “Sempre” e “Não” para as perguntas. Tanto no Debian quanto no Gentoo, é preciso efetuar logoff para que as mudanças façam efeito na renderização das fontes.

Conclusão

Não posso garantir que a configuração seja melhor em 100% dos casos para todos os usuários, mas desde que descobri isso, nunca deixei de usar a suavização de fontes, que tornou as fontes bem mais legíveis e bonitas.

Tags: Debian, Fontes, Gentoo, Tutoriais  •  Permalink  •  Source code