Posts de Janeiro, 2008|Página de posts mensais

Convertendo arquivos com codificações diferentes

Utilizei durante um bom tempo a codificação ISO-8859-1 para editar e construir meus arquivos. Porém após a mudança para UTF-8 tive vários problemas com a codificação dos arquivos, daí que encontrei o iconv e este salvou minha vida.

Outro fato interessante também é receber arquivos com codificações diferentes de outras pessoas e ficar com aquele problema chato na acentuação dos arquivos.

O iconv serve para mudar de uma codificação para outra e possui uma sintaxe muito simples e fácil.

Para converter um arquivo de ISO-8859-1 para UTF-8 basta apenas fazer o seguinte.

# iconv --from-code=ISO-8859-1 --to-code=UTF-8 < oldISOfile >  newUTF8file

Você também utilizar o inverso da situação acima:

# iconv --from-code=UTF-8 --to-code=ISO-8859-1 < oldUTF8file >  newISOfile

E não limite-se somente à isto, você também pode trabalhar com outros padrões de codificação e obter o resultado que quiser. Aqui você pode saber mais sobre tipos de codificação.

Download de pacotes .deb com todas suas dependências

Apesar do mundo estar cada vez mais conectado à Internet, às vezes enfrentamos alguns problemas que nos impossibilitam de ter o acesso à rede. Um exemplo interessante seria a mudança de casa e o pedido de transferência de um serviço ADSL para um novo endereço, por exemplo.

Vivendo este problema necessitava instalar o pacote gphpedit no computador em casa. Porém não encontrava nenhuma maneira fácil de fazê-lo devido à quantidade de depedências que eu precisava copiar através da rede de um amigo e levá-las em um dispositivo móvel de armazenamento qualquer: um pendrive, cd ou algo do tipo.

Poderia até utilizar o Synaptic para procurar o devido pacote e gerar através dele um script para fazer o download das dependências, mas o objetivo era fazer diretamente pelo console.

Cheguei até a improvisar um shell script para fazer isso, mas a solução era limitada, pois o script pegava somente as dependências do gphpedit. Se alguma biblioteca necessária para a instalação do gphpedit precisasse também de uma outra biblioteca ou pacote, o script não a pegava.

Foi daí que recebi uma dica do Theo para usar o apt-rdepends e conseguir listar recursivamente todas as dependências. O único problema é que ele não tem a capacidade de fazer o download destes pacotes diretamente. E novamente tive que montar um script para fazer isso.

Uma  nota é que o apt-cache também proporciona a listagem de dependências do pacote, mas não de maneira recursiva.

Caso queira ver as dependências pelo apt-cache apenas rode:

# apt-cache depends nomedopacote

Não conhecia o apt-rdepends pois não vem instalado por padrão no Debian/Ubuntu. Para instalá-lo rode:

# aptitude install apt-rdepends

Bom, depois ainda resta um trabalhinho sujo para criar o script, mas é bem fácil. Antes de começar crie um diretório para que na inicialização dos downloads os pacotes não fiquem espalhados.

# mkdir gphpedit

# cd gphpedit

Para criar o script faça:

# apt-rdpends gphpedit > depends.sh

# chmod u+x depends.sh

# vi depends.sh

Na primeira linha do arquivo adicione o interpretador: #!/bin/bash

Substitua o nome dos pacotes que possuem dependências com o seguinte comando no vi:

ESC +  :%s/^[a-z]/#\1/g

Note que agora todos os pacotes ficaram com um comentário na frente. O próximo passo é alterar o valor dos termos “Pré-Depende:” ou “Pre-Depends:” para “aptitude download”. Novamente no vi faça:

ESC + :%s/Pré-Depende:/aptitude download/g

(Se seu sistema estiver na língua inglesa utilize “Pre-Depends”:).

Agora altere somente os termos “Depende:”  da mesma maneira:

ESC + :%s/Depende:/aptitude download/g

(Se seu sistema estiver na língua inglesa utilize Depends:).

Ficou faltando apenas um detalhe. Apagar as informações sobre versões delimitadas entre parênteses. Nada que uma pequena expressão regular não ajude:

ESC + %s/\((.\+\)//g

Bom, agora é só executar seu script e esperar pelo download.

# ./depends.sh