View previous topic :: View next topic |
Author |
Message |
guru meditation Apprentice
Joined: 18 Mar 2018 Posts: 153 Location: Planet Earth
|
Posted: Tue Aug 13, 2019 8:17 am Post subject: Was macht libbdf in Programmen wie MariaDB |
|
|
Nach langer Zeit habe ich mal wieder MySQL/MariaDB 10.4 von den Sourcen kompiliert (ohne Emerge), der Einfachheit halber auf einen anderen Rechner gezogen und prompt startet das Teil nicht wegen:
/opt/mysql/bin/my_print_defaults: error while loading shared libraries: libbfd-2.32.0.gentoo-sys-libs-binutils-libs-st-def.so: cannot open shared object file: No such file or directory
Ist ja gut. Die letzte Version, die ich noch laufen habe, war MySQL 5.5. Da ging das ja auch ohne libbfd.
Was macht diese libbfd und wie kann ich MariaDB (und andere Programme) ohne deren Abhängigkeit erstellen?
Edit sacht: OK, man sollte -DNOT_FOR_DISTRIBUTION=OFF stellen. Nur habe ich bisher nicht einwandfrei feststellen können, ob mit "Distribution" nun das Kopieren auf einen anderen Rechner nicht funzt, oder der Weiterverkauf nicht gestattet ist. |
|
Back to top |
|
|
mike155 Advocate
Joined: 17 Sep 2010 Posts: 4438 Location: Frankfurt, Germany
|
Posted: Fri Aug 16, 2019 1:35 pm Post subject: |
|
|
Es könnte sein, dass etwas an Deinem System nicht stimmt. Oder Du hast beim Compilieren / Installieren von MariaDB etwas verkehrt gemacht. Hast Du irgendwo einen Parameter, Prefix oder Pfad vergessen?
Wenn Du MariaDB von Hand installierst: hast Du die von Dir gewählten configure / cmake Parameter mit denen verglichen, die emerge verwendet? Warum installierst Du MariaDB eigentlich von Hand?
Auf meinem System gibt es eine libbfd.so. Sie wird von 'binutils-libs' installiert.
Code: | # find / -name "*libbfd*"
./usr/lib64/libbfd-2.32.0.gentoo-sys-libs-binutils-libs-st-def.so
./usr/lib64/libbfd.so
./usr/lib64/binutils/x86_64-pc-linux-gnu/2.32/libbfd.so
./usr/lib64/binutils/x86_64-pc-linux-gnu/2.32/libbfd-2.32.0.gentoo-sys-devel-binutils-st.so
...
# qfile /usr/lib64/libbfd.so
sys-libs/binutils-libs (/usr/lib64/libbfd.so) |
Es gibt auch einen Eintrag in den MariaDB Changelogs:
Quote: | Revision #3325 Tue 2012-03-13
alternative method of resolving addresses for safemalloc and crash handler. don't link with libbfd, exec addr2line, if it's available at run time |
Code: | # find . -name "*addr2line*"
./usr/bin/x86_64-pc-linux-gnu-addr2line
./usr/bin/addr2line
./usr/bin/eu-addr2line
./usr/x86_64-pc-linux-gnu/bin/addr2line
./usr/x86_64-pc-linux-gnu/binutils-bin/2.32/addr2line
...
# qfile ./usr/x86_64-pc-linux-gnu/binutils-bin/2.32/addr2line
sys-devel/binutils (/usr/x86_64-pc-linux-gnu/binutils-bin/2.32/addr2line) |
addr2line wird von 'binutils' installiert. |
|
Back to top |
|
|
guru meditation Apprentice
Joined: 18 Mar 2018 Posts: 153 Location: Planet Earth
|
Posted: Sat Aug 17, 2019 2:11 am Post subject: |
|
|
Erstdmal schönen Dank für die Antwort.
Die „Suchmaschinen“ finden mir entweder MariaDB oder NOT_FOR_DISTRUBUTION – das ist doch Müll.
Worauf es mir ankommt ist Portabilität. Wenn ein Server abschmiert, möchte ich nicht einen halben Tag Gentoo erstellen, sondern ziehe mir ein Image drauf und den fertigen Apache/MySQL. Zudem finde ich es praktisch, wenn der Mehrkerner zu Hause auch was zu tun bekommt und der Webserver sch um die Websites kümmern kann.
Zum eigentlichen Problem: Der Schalter NOT_FOR_DISTRIBUTION muß in der Regel auf OFF stehen, dann verlinkt der Compiler auch keine Libs vom binutil:
Code: | linux-vdso.so.1
libpthread.so.0
liblzma.so.5
libbz2.so.1
libaio.so.1
libcrypt.so.1
libdl.so.2
libstdc++.so.6
libm.so.6
libgcc_s.so.1
libc.so.6
/lib64/ld-linux-x86-64.so.2 |
Damit ist MariaDB auch mit anderen Linux-Systemen kompatikbel bzw. portierbar.
Der einzige Hinweis im Quelltext von MariaDB auf eine nicht kompatible Lizenz ist das Plugin für das Amazon Web Services Key Management:
Quote: | AWS SDK has Apache 2.0 License which is not complatible with GPLv2. Set -DNOT_FOR_DISTRIBUTION=ON if you need this plugin |
Für Bibliotheken unter GPL gibt es eigentlich eine Linking Exception, daher kann ich mir nur vorstellen, daß die Beschränkung der Portierbarkeit auf GPL-verlinkte Libs was mit MySQL/MariaDB zu tun hat. Die Clientlib für MySQL 3 stand noch unter GPL und durfte mit eigenen (closed sourced) Programmen vertrieben werden, die Version 5 wieder nicht.
Zur libbfd steht im entsprechenden (englischsprachigen) Wiki-Artikel: Quote: | BFD's main clients are the GNU Assembler (GAS), GNU Linker (GLD), and other GNU Binary Utilities ("binutils") tools, and the GNU Debugger (GDB). As a result, BFD is not distributed separately, but is always included with releases of binutils and GDB. Nevertheless, BFD is a critical component in the use of GNU tools for embedded systems development. |
Und wenn die auf jedem Linux-System anders heißt, sind damit verlinkte Programme nicht portabel. Ob das jetzt zu 100% mit dem genannten Schalter in MariaDB zu tun hat, kann ich allerdings nicht garantieren. |
|
Back to top |
|
|
firefly Watchman
Joined: 31 Oct 2002 Posts: 5329
|
Posted: Sat Aug 17, 2019 7:14 am Post subject: |
|
|
guru meditation wrote: |
Worauf es mir ankommt ist Portabilität. Wenn ein Server abschmiert, möchte ich nicht einen halben Tag Gentoo erstellen, sondern ziehe mir ein Image drauf und den fertigen Apache/MySQL. |
Öhm wieso erstellst du nicht ein image deiner gentoo installation (inklusive apache und mysql/mariadb). Dann brauchst du nichts händisch zu kompilieren/zu installieren (an portage vorbei). _________________ Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn. |
|
Back to top |
|
|
guru meditation Apprentice
Joined: 18 Mar 2018 Posts: 153 Location: Planet Earth
|
Posted: Sat Aug 17, 2019 8:34 am Post subject: |
|
|
Das IMage liegt beim Serveranbieter, darauf habe ich keinen Einfluß. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|