Kapitel 12. Tipps

# Kapitel 12. Tipps

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. Build under UTF-8

The default locale of the build environment is C.

Some programs such as the read function of Python3 change their behavior depending on the locale.

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 conversion

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

Use w3m(1) to convert from HTML files to UTF-8 plain text files. When you do this, make sure to execute it under UTF-8 locale.

    [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

Run these scripts in the override_dh_* target of the debian/rules file.

## 12.3. Hints for Debugging

When you face build problems or core dumps of generated binary programs, you need to resolve them yourself. That’s debug.

This is too deep a topic to describe here. So, let me just list few pointers and hints for some typical debug tools.

- 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 - The GNU Debugger

  - „info gdb“
  - „Debugging with GDB“ in /usr/share/doc/gdb-doc/html/gdb/index.html

- strace - Trace system calls and signals

  - Use strace-graph script found in /usr/share/doc/strace/examples/ to make a nice tree view
  - „man strace“

- ltrace - Trace library calls

  - „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 - List open files by processes

  - „man lsof“

| Tipp
Der Befehl script zeichnet Konsoleausgaben auf.

| Tipp
Die Befehle screen und tmux bieten Ihnen im Zusammenspiel mit ssh eine sichere und robuste Verbindung zu fernen Terminals.

| Tipp
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.

| Tipp
The rlwrap and rlfe commands add input line editing capability with history support to any interactive commands. E.g. „rlwrap dash -i'“ .

Kapitel 11. Packaging with git |  | Kapitel 13. Tool usages