• Libraries in /usr/libexec?

    From Marc Haber@21:1/5 to All on Tue Jan 10 08:50:02 2023
    Hallo,

    das ist jetzt eigentlich nicht strikt ein Userthema, aber das hier ist
    mein erstes Debian-Paket mit einer Library und irgendwas habe ich da
    noch nicht so richtig verstanden. Aber es fällt mir leichter, das auf
    Deutsch zu beschreiben. Bitte macht, dass ich das nicht in einer Woche
    ins Englische übersetzen muss.

    Ich maintaine schon seit vielen Jahren das Paket ser2net, mit dem man
    recht einfach auf serielle Schnittstellen zugreifen kann. Vor ein paar
    Jahren hat der Autor das in ser2net und gensio aufgeteilt, wobei
    gensio eine Shared Library zur Verfügung stellt, die von ser2net
    benutzt wird. Aktuell ist ser2net das einzige Paket, das die libgensio
    benutzt, aber das muss ja nicht notwendigerweise so bleiben. Ich habe
    die Trennung in zwei Pakete im Wesentlichen deswegen gemacht, weil wir
    es hier mit zwei unabhängig releasenden Upstream-Projekten mit unterschiedlichen Upstream Repos und unterschiedlichen Release
    Tarballs zu tun haben.

    In der aktuellen Version von gensio funktioniert die Zusammenarbeit
    zwischen gensio und ser2net nicht mehr so wie gewünscht.

    ser2net sucht bei seinem Aufruf ausdrücklich nach einem /usr/libexec/gensio-2.6.1/libgensio_serialdev.so, was es dort nicht
    findet.

    Beim Bau der libgensio entsteht ein debian/tmp/usr/libexec/gensio-2.6.1/libgensio_serialdev.so, das aber
    nicht in eins der Binärpakete installiert wird.

    Mir kommt der Pfad ein wenig spanisch vor: Ich dachte immer, Shared
    Objects gehören nach /usr/lib, und Shared Objects die von Binaries aus
    anderen Paketen benutzt werden erst Recht? Und dann bin ich noch
    unhappy darüber, dass die Versionsnummer des gensio-Pakets im Pfad
    auftaucht, und dass es keine ABI-Nummer im Dateinamen gibt.

    Kann mir jemand erklären, wie das eigentlich gehört? Ist das ein
    Fehler in meinem Packaging oder hat der Upstream hier was verkehrt
    gemacht?

    Grüße
    Marc
    --
    -------------------------------------- !! No courtesy copies, please !! ----- Marc Haber | " Questions are the | Mailadresse im Header Mannheim, Germany | Beginning of Wisdom " |
    Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 621 72739834

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jan Bruns@21:1/5 to Marc Haber on Tue Jan 10 10:10:01 2023
    This is a multi-part message in MIME format.
    Marc Haber wrote:
    ser2net sucht bei seinem Aufruf ausdrücklich nach einem /usr/libexec/gensio-2.6.1/libgensio_serialdev.so, was es dort nicht
    findet.


    Also wirklich weiterhelfen kann ich Dir da so spontan nicht.

    Irgendein runtime-linker (sicherlich der in debian verwendete) hat es
    wohl ganz gerne, wenn man den über das Hinzufügen von neuen libs
    informiert (indem man einen /lib-rescan veranlasst, passiert ja im Normalbetrieb selten).

    Das ist aber eine Information, die sich nicht notwendigerweise bis zu
    jedem rumgesprochen haben muss, und andernfalls auch schlicht und
    ergreifend vergessen werden kann. In dem Fall ist dann eine absolute
    Pfadangabe eine einfache Zwischenlösung.


    Gruss


    Jan Bruns



    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
    <br>
    Marc Haber wrote:
    <br>
    <blockquote type="cite" style="color: #000000;">ser2net sucht bei
    seinem Aufruf ausdrücklich nach einem
    <br>
    /usr/libexec/gensio-2.6.1/libgensio_serialdev.so, was es dort
    nicht
    <br>
    findet.
    <br>
    </blockquote>
    <br>
    <br>
    Also wirklich weiterhelfen kann ich Dir da so spontan nicht.
    <br>
    <br>
    Irgendein runtime-linker (sicherlich der in debian verwendete) hat
    es wohl ganz gerne, wenn man den über das Hinzufügen von neuen libs
    informiert (indem man einen /lib-rescan veranlasst, passiert ja im
    Normalbetrieb selten).
    <br>
    <br>
    Das ist aber eine Information, die sich nicht notwendigerweise bis
    zu jedem rumgesprochen haben muss, und andernfalls auch schlicht und
    ergreifend vergessen werden kann. In dem Fall ist dann eine absolute
    Pfadangabe eine einfache Zwischenlösung.
    <br>
    <br>
    <br>
    Gruss
    <br>
    <br>
    <br>
    Jan Bruns
    <br>
    <br>
    <br>
    </body>
    </html>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Jan Bruns@21:1/5 to Jan Bruns on Tue Jan 10 15:40:02 2023
    This is a multi-part message in MIME format.
    On 10.01.23 09:39, Jan Bruns wrote:

    Marc Haber wrote:
    ser2net sucht bei seinem Aufruf ausdrücklich nach einem
    /usr/libexec/gensio-2.6.1/libgensio_serialdev.so, was es dort nicht
    findet.


    Also wirklich weiterhelfen kann ich Dir da so spontan nicht.

    Irgendein runtime-linker (sicherlich der in debian verwendete) hat es
    wohl ganz gerne, wenn man den über das Hinzufügen von neuen libs
    informiert (indem man einen /lib-rescan veranlasst, passiert ja im Normalbetrieb selten).

    Das ist aber eine Information, die sich nicht notwendigerweise bis zu
    jedem rumgesprochen haben muss, und andernfalls auch schlicht und
    ergreifend vergessen werden kann. In dem Fall ist dann eine absolute Pfadangabe eine einfache Zwischenlösung.

    Scheint aber in diesem Fall vllt. nicht das Problem zu sein:

    git clone https://github.com/cminyard/ser2net.git
    grep -r -e "gensio_serialdev" .

    ist zumindest leer. Wie sich da all die Automagie also ein

    /usr/libexec/gensio-2.6.1/libgensio_serialdev.so

    zusammenreimen soll ist mir als Pascal-Freund jedenfalls ein komplettes Rätsel.

    Vielleicht hat nur die referenzierte lib ein Problem mit sich selbst?

    Bestimmt ist da nur ein Compiler-switch gefragt, der dieses serialdev
    Dings statisch mit einlinkt.


    Gruss


    Jan Bruns


    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
    <div class="moz-cite-prefix">On 10.01.23 09:39, Jan Bruns wrote:<br>
    </div>
    <blockquote type="cite"
    cite="mid:9f836b0d-f7d0-6f0a-16b8-c25c15a6bd7e@abnuto.de">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <br>
    Marc Haber wrote: <br>
    <blockquote type="cite" style="color: #000000;">ser2net sucht bei
    seinem Aufruf ausdrücklich nach einem <br>
    /usr/libexec/gensio-2.6.1/libgensio_serialdev.so, was es dort
    nicht <br>
    findet. <br>
    </blockquote>
    <br>
    <br>
    Also wirklich weiterhelfen kann ich Dir da so spontan nicht. <br>
    <br>
    Irgendein runtime-linker (sicherlich der in debian verwendete) hat
    es wohl ganz gerne, wenn man den über das Hinzufügen von neuen
    libs informiert (indem man einen /lib-rescan veranlasst, passiert
    ja im Normalbetrieb selten). <br>
    <br>
    Das ist aber eine Information, die sich nicht notwendigerweise bis
    zu jedem rumgesprochen haben muss, und andernfalls auch schlicht
    und ergreifend vergessen werden kann. In dem Fall ist dann eine
    absolute Pfadangabe eine einfache Zwischenlösung. <br>
    <br>
    </blockquote>
    <p>Scheint aber in diesem Fall vllt. nicht das Problem zu sein:<br>
    <br>
    git clone <a class="moz-txt-link-freetext" href="https://github.com/cminyard/ser2net.git">https://github.com/cminyard/ser2net.git</a><br>
    grep -r -e "gensio_serialdev" .<br>
    <br>
    ist zumindest leer. Wie sich da all die Automagie also ein <br>
    <br>
    /usr/libexec/gensio-2.6.1/libgensio_serialdev.so<br>
    <br>
    zusammenreimen soll ist mir als Pascal-Freund jedenfalls ein
    komplettes Rätsel.<br>
    <br>
    Vielleicht hat nur die referenzierte lib ein Problem mit sich
    selbst?</p>
    <p>Bestimmt ist da nur ein Compiler-switch gefragt, der dieses
    serialdev Dings statisch mit einlinkt.<br>
    </p>
    <p><br>
    </p>
    <p>Gruss</p>
    <p><br>
    </p>
    <p>Jan Bruns</p>
    </body>
    </html>

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andreas Metzler@21:1/5 to mh+debian-user-german@zugschlus.de on Wed Feb 15 19:20:02 2023
    On 2023-01-10 Marc Haber <mh+debian-user-german@zugschlus.de> wrote:
    [...]
    In der aktuellen Version von gensio funktioniert die Zusammenarbeit
    zwischen gensio und ser2net nicht mehr so wie gewünscht.

    ser2net sucht bei seinem Aufruf ausdrücklich nach einem /usr/libexec/gensio-2.6.1/libgensio_serialdev.so, was es dort nicht
    findet.

    Beim Bau der libgensio entsteht ein debian/tmp/usr/libexec/gensio-2.6.1/libgensio_serialdev.so, das aber
    nicht in eins der Binärpakete installiert wird.

    Mir kommt der Pfad ein wenig spanisch vor: Ich dachte immer, Shared
    Objects gehören nach /usr/lib, und Shared Objects die von Binaries aus anderen Paketen benutzt werden erst Recht? Und dann bin ich noch
    unhappy darüber, dass die Versionsnummer des gensio-Pakets im Pfad
    auftaucht, und dass es keine ABI-Nummer im Dateinamen gibt.

    Kann mir jemand erklären, wie das eigentlich gehört? Ist das ein
    Fehler in meinem Packaging oder hat der Upstream hier was verkehrt
    gemacht?

    Hallo Marc,

    ich behaupte dass du grundsätzlich recht hast und shared libraries
    nichts in libexec verloren haben, selbst eine interne Hilfsbibliothek
    gehört in FHS ein Unterverzeichnis von /usr/lib, libexec ist für
    Programme (*exec*utable) die nicht im Pfad liegen sollen. Ich hätte mal behauptet libgensio müsste $(moduleinstalldir) per default auf
    $(pkglibdir) statt $(pkglibexecdir) setzen. - Das könntests du auch
    einfach als ./configure argument explizit setzen.

    lg Andreas
    --
    `What a good friend you are to him, Dr. Maturin. His other friends are
    so grateful to you.'
    `I sew his ears on from time to time, sure'

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Marc Haber@21:1/5 to All on Sun Feb 19 09:40:02 2023
    On Wed, 15 Feb 2023 18:54:33 +0100, Andreas Metzler <ametzler@bebt.de>
    wrote:
    ich behaupte dass du grundsätzlich recht hast und shared libraries
    nichts in libexec verloren haben, selbst eine interne Hilfsbibliothek
    gehört in FHS ein Unterverzeichnis von /usr/lib,

    Aber selbst so "prominente" Pakete wie coreutils und gcc werfen
    so-files nach libexec:
    |coreutils: /usr/libexec/coreutils/libstdbuf.so
    |gcc-13: /usr/libexec/gcc/x86_64-linux-gnu/13/liblto_plugin.so |gcc-13-hppa64-linux-gnu: /usr/libexec/gcc/hppa64-linux-gnu/13/liblto_plugin.so |gcc-13-offload-amdgcn: /usr/libexec/gcc/x86_64-linux-gnu/13/accel/amdgcn-amdhsa/liblto_plugin.so

    (sudo zählt nicht, das ist auch eins meiner Pakete, da kann ich genau
    so "falsch" handeln).

    libexec ist für
    Programme (*exec*utable) die nicht im Pfad liegen sollen. Ich hätte mal >behauptet libgensio müsste $(moduleinstalldir) per default auf
    $(pkglibdir) statt $(pkglibexecdir) setzen. - Das könntests du auch
    einfach als ./configure argument explizit setzen.

    Ich bin sehr froh dass gensio/ser2net inzwischen endlich tut, wenn ich
    auch die Pfade wie

    /usr/libexec/x86_64-linux-gnu/gensio/2.6.2/libgensio_mux.so

    nicht wirklich schön finde, gensio ist wirklich das einzige Paket in
    Debian das triplet-pfade in libexec nutzt. Aber wenn ich mit ./configure-Argument /usr/lib setze, findet ser2net die Libraries
    nicht, wenn ich es ohne triplet-Pfade mache bekomme ich Probleme mit
    Multiarch.

    So ganz durchschaut habe ich das immer noch nicht.

    Grüße
    Marc
    --
    -------------------------------------- !! No courtesy copies, please !! ----- Marc Haber | " Questions are the | Mailadresse im Header Mannheim, Germany | Beginning of Wisdom " |
    Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 621 72739834

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)