Глава 12. Полезные советы

# Глава 12. Полезные советы

Please also read insightful pages linked from «Notes on Debian» by Russ Allbery (long time Debian developer) which have best practices for advanced packaging topics.

## 12.1. Сборка с использованием кодировки UTF-8

Локалью по умолчанию в сборочном окружении является C.

Некоторые программы, такие как функци read из Python3, изменяют своё поведение в зависимости от текущей локали.

Adding the following code to the debian/rules file ensures building the program under the C.UTF-8 locale.

    LC_ALL := C.UTF-8
    export LC_ALL

## 12.2. Преобразование в кодировку UTF-8

If upstream documents are encoded in old encoding schemes, converting them to UTF-8 is a good idea.

Use the iconv command in the libc-bin package to convert the encoding of plain text files.

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

Используйте w3m(1) для преобразования HTML-файлов в обычные текстовые файлы в кодировке UTF-8. При выполнении преобразования убедитесь, что у вас используется локаль 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

Запустите эти сценарии в цели override_dh_* файла debian/rules.

## 12.3. Hints for Debugging

Когда вы сталкиваетесь с проблемами сборки или дампом памяти созданных двоичных программ, вам необходимо разрешить их самостоятельно. Это называется отладкой.

Это слишком обширная тема, чтобы обсуждать её в настоящем руководстве. Поэтому позвольте просто привести несколько ссылок и полезных советов по использованию типичных инструментов отладки.

- Wikipedia: «core dump»

  - «man core»

  - Update the «/etc/security/limits.conf» file to include the following:

        * soft core unlimited

  - «ulimit -c unlimited» in ~/.bashrc
  - «ulimit -a» to check
  - Press Ctrl-\ or «kill -ABRT 'PID'» to make a core dump file

- gdb — отладчик GNU

  - «info gdb»
  - «Debugging with GDB» in /usr/share/doc/gdb-doc/html/gdb/index.html

- strace — трассировка системных вызовов и сигналов

  - Используйте сценарий strace-graph из каталога /usr/share/doc/strace/examples/, чтобы иметь удобную визуализацию в виде дерева
  - «man strace»

- ltrace - трассировка библиотечных вызовов

  - «man ltrace»
- «sh -n script.sh» - Syntax check of a Shell script
- «sh -x script.sh» - Trace a Shell script
- «python3 -m py_compile script.py» - Syntax check of a Python script
- «python3 -mtrace --trace script.py» - Trace a Python script
- «perl -I ../libpath -c script.pl» - Syntax check of a Perl script

- «perl -d:Trace script.pl» - Trace a Perl script

  - Install the libterm-readline-gnu-perl package or its equivalent to add input line editing capability with history support.

- lsof — вывод списка файлов, открытых процессами

  - «man lsof»

| Подсказка
The script command records console outputs.

| Подсказка
The screen and tmux commands used with the ssh command offer secure and robust remote connection terminals.

| Подсказка
A Python- and Shell-like REPL (=READ + EVAL + PRINT + LOOP) environment for Perl is offered by the reply command from the libreply-perl (new) package and the re.pl command from the libdevel-repl-perl (old) package.

| Подсказка
The rlwrap and rlfe commands add input line editing capability with history support to any interactive commands. E.g. «rlwrap dash -i'» .

Глава 11. Packaging with git |  | Глава 13. Tool usages