Symbolfiles stellen die Funktionen in Libs dar.
Fallen durch neue Versionen Symbole weg, ist das schlecht, da hier Kompatibilität verloren geht.
Gibt es neue Symbols, muss auch die lib-Version erhöht werden.

Bei Paketen die noch nie eine symbols-Datei hatten, muss diese einmalig generiert werden für jedes Paket.

Symbols einmalig generieren mit:

dpkg-gensymbols -plibstonithd2 -edebian/tmp/usr/lib/libstonithd*so -v1.1.12 -O../pacemaker_1.1.12+git+a9c8177.old/debian/libstonithd2.symbols

Spuckt dann eine Datei in der Form … aus:

libstonithd.so.2 libstonithd2 #MINVER#
__start___verbose@Base 1.1.12
__stop___verbose@Base 1.1.12
create_device_registration_xml@Base 1.1.12
create_level_registration_xml@Base 1.1.12
get_stonith_provider@Base 1.1.12
i_hate_pils@Base 1.1.12
is_redhat_agent@Base 1.1.12
stonith@Base 1.1.12
stonith_action_create@Base 1.1.12
stonith_action_execute@Base 1.1.12
stonith_action_execute_async@Base 1.1.12
stonith_api_delete@Base 1.1.12
stonith_api_kick@Base 1.1.12
stonith_api_new@Base 1.1.12
stonith_api_time@Base 1.1.12
stonith_create_op@Base 1.1.12
stonith_dispatch@Base 1.1.12
stonith_dispatch_internal@Base 1.1.12
stonith_dump_pending_callbacks@Base 1.1.12
stonith_key_value_add@Base 1.1.12
stonith_key_value_freeall@Base 1.1.12
stonith_perform_callback@Base 1.1.12
stonith_send_command@Base 1.1.12

Diese Datei dient als Referenz beim Paketbau mit z.B. dpkg-buildpackage -sa -j4 | tee buildlog

Über die debian/rules wird dann dh_makeshlibs aufgerufen, welches wiederrum dpkg-gensymbols aufruft und die Datei packetname.symbols übergibt.
Diese wandert dann abschließend in das neue Paket unter DEBIAN/symbols

Gibt es eine neue Upstreamversion fällt über die vorhandene Symbols-Datei gleich auf, wenn sich etwas verändert hat, was die Kompatibilität schmälert.

Categories: BlogLinux