Capítulo 12. Dicas

# Capítulo 12. Dicas

Por favor leia também as páginas perspicazes ligadas em “Notas sobre Debian” por Russ Allbery (muito tempo desenvolvedor Debian) que tem as melhores práticas para tópicos avançados de empacotamento.

## 12.1. Compilar sob UTF-8

O locale predefinido do ambiente de compilação é C.

Alguns programas como a função read do Python3 mudam o seu comportamento dependendo do locale.

Adicionar o seguinte código ao ficheiro debian/rules assegura a compilação do programa sob o locale C.UTF-8.

    LC_ALL := C.UTF-8
    export LC_ALL

## 12.2. Conversão UTF-8

Se os documentos do autor estão codificados em esquemas de codificação antigos, converte-los para UTF-8 é uma boa ideia.

Use o comando iconv do pacote libc-bin para converter a codificação de ficheiros de texto simples.

    [debhello] $ iconv -f latin1 -t utf8 foo_in.txt > foo_out.txt

Use w3m(1) para converter de ficheiros HTML para ficheiros de texto simples UTF-8. Quando você faz isto, certifique-se de executar sob locale UTF-8.

    [debhello] $ LC_ALL=C.UTF-8 w3m -o display_charset=UTF-8 \
            -cols 70 -dump -no-graph -T text/html \
            < foo_in.html > foo_out.txt

Corra estes scripts no alvo override_dh_* do ficheiro debian/rules.

## 12.3. Dicas para Depuração

Quando você de defronta com problemas de compilação ou despejos de núcleo dos programas binário gerados, você tem que resolve-los você próprio. Isso é depuração (debug).

Este é um tópico muito profundo para se descrever aqui. Assim, vamos apenas listar alguns ponteiros e dicas para algumas ferramentas de depuração típicas.

- Wikipedia: “core dump”

  - “man core”

  - Atualize o ficheiro “/etc/security/limits.conf” para incluir o seguinte:

        * soft core unlimited

  - “ulimit -c unlimited” in ~/.bashrc
  - “ulimit -a” para verificar
  - Pressione Ctrl-\ ou “kill -ABRT 'PID'” para criar um ficheiro de despejo de núcleo

- gdb - O GNU Debugger

  - “info gdb”
  - “Debugging with GDB” em /usr/share/doc/gdb-doc/html/gdb/index.html

- strace - Rastreio a chamadas e sinais do sistema

  - Use o script strace-graph encontrado em /usr/share/doc/strace/examples/ para criar uma bonita vista em árvore
  - “man strace”

- ltrace - Rastreio a chamadas de biblioteca

  - “man ltrace”
- “sh -n script.sh” - Verificação de sintaxe de um script Shell
- “sh -x script.sh” - Rastreio a um script Shell
- “python3 -m py_compile script.py” - Verificação de sintaxe de um script Python
- “python3 -mtrace --trace script.py” - Rastreio a um script Python
- “perl -I ../libpath -c script.pl” - Verificação de sintaxe de um script Perl

- “perl -d:Trace script.pl” - Rastreio a um script Perl

  - Instale o pacote libterm-readline-gnu-perl ou o seu equivalente para adicionar capacidade de edição de linhas com suporte de histórico.

- lsof - Lista ficheiros abertos pelos processos

  - “man lsof”

| Dica
O comando script grava resultados de consola.

| Dica
Os comandos screen e tmux usados com o comando ssh oferecem terminais de ligação remota seguros e robustos.

| Dica
Um ambiente Python- e Shell-like REPL (=READ + EVAL + PRINT + LOOP) para Perl é oferecido pelo comando reply do pacote (novo) libreply-perl e o comando re.pl do pacote (velho) libdevel-repl-perl.

| Dica
Os comandos rlwrap e rlfe adicionam capacidades de edição de linhas com suporte de histórico a quaisquer comandos interativos. Ex. “rlwrap dash -i'” .

Capítulo 11. Empacotar com git |  | Capítulo 13. Utilizações de Ferramenta