Someone knowledgeable about this?
Dear listmembers, I am maintaining the package tgif (or at least try to do so ...). In order to provide "umlauts" (ok, an European problem :-)) I need the package libidn- devel at compile time _and_ at runtime. I found the reason now - but I do not know how to circumvent this and whether or not this is my error or a more basic packaging error. If libidn-devel is _not_ installed, I get the following packages in /usr/ lib64: djunix:/usr/lib64 # la libidn* lrwxrwxrwx 1 root root 16 16. Mai 2020 libidn2.so.0 -> libidn2.so.0.3.6* -rwxr-xr-x 1 root root 117160 16. Mai 2020 libidn2.so.0.3.6* lrwxrwxrwx 1 root root 17 16. Mai 2020 libidn.so.11 -> libidn.so.11.6.18* -rwxr-xr-x 1 root root 211520 16. Mai 2020 libidn.so.11.6.18* In contrast, if libidn-devel is in place, I get the following packages in / usr/lib64: djunix:/usr/lib64 # la libidn* lrwxrwxrwx 1 root root 16 16. Mai 2020 libidn2.so.0 -> libidn2.so.0.3.6* -rwxr-xr-x 1 root root 117160 16. Mai 2020 libidn2.so.0.3.6* lrwxrwxrwx 1 root root 17 16. Mai 2020 libidn.so -> libidn.so.11.6.18* lrwxrwxrwx 1 root root 17 16. Mai 2020 libidn.so.11 -> libidn.so.11.6.18* -rwxr-xr-x 1 root root 211520 16. Mai 2020 libidn.so.11.6.18* The difference stems from the link libidn.so -> libidn.so.11.6.18 being available - what is not the case without libidn-devel. Obviously I need this very link to make tgif functional - so, is this an error of tgif trying to use libidn.so or is it a package error of libidn that should provide libidn.so even without the devel-package of libidn being present? Any comment is highly appreciated, thank you, take care Dieter -- ----------------------------------------------------------- Dr.-Ing. Dieter Jurzitza 76131 Karlsruhe
Am 31.12.2020 um 12:22 schrieb Olaf Hering:
Am Thu, 31 Dec 2020 11:48:51 +0100 schrieb "Dr.-Ing. Dieter Jurzitza" <dieter.jurzitza@t-online.de>:
error of tgif trying to use libidn.so
Just remove the code that does dlopen and link unconditionally to libidn.so
Olaf
Sorry Olaf, but doesn't that do the exact opposite? As far as I understood Dieter, he does not want to link to libidn.so because that file is (as a symlink) available only when a devel package (libidn-devel) has been installed. He might prefer to link to libidn.so.11 instead, which is provided by libidn. Then again, he has to re-change the code with every new version of libidn provided. Best would be providing the symlink in the standard libidn package, not in the libidn-devel package. Or do iI see this wrong, Dieter? Werner --
31.12.2020 20:18, Werner Flamme пишет:
As far as I understood Dieter, he does not want to link to libidn.so because that file is (as a symlink) available only when a devel package (libidn-devel) has been installed.
Is it a joke?
He might prefer to link to libidn.so.11 instead, which is provided by libidn.
Show linker command line that does it.
Then again, he has to re-change the code with every new version of libidn provided.
If major number of shared library changes you *must* recompile with new library. This is exactly what shared library versioning is for.
Best would be providing the symlink in the standard libidn package, not in the libidn-devel package.
This would be completely wrong.
On 12/31/20 5:48 AM, Dr.-Ing. Dieter Jurzitza wrote:
Dear listmembers, I am maintaining the package tgif (or at least try to do so ...). In order to provide "umlauts" (ok, an European problem :-)) I need the package libidn- devel at compile time _and_ at runtime.
I found the reason now - but I do not know how to circumvent this and whether or not this is my error or a more basic packaging error.
If libidn-devel is _not_ installed, I get the following packages in /usr/ lib64:
djunix:/usr/lib64 # la libidn* lrwxrwxrwx 1 root root 16 16. Mai 2020 libidn2.so.0 -> libidn2.so.0.3.6* -rwxr-xr-x 1 root root 117160 16. Mai 2020 libidn2.so.0.3.6* lrwxrwxrwx 1 root root 17 16. Mai 2020 libidn.so.11 -> libidn.so.11.6.18* -rwxr-xr-x 1 root root 211520 16. Mai 2020 libidn.so.11.6.18*
In contrast, if libidn-devel is in place, I get the following packages in / usr/lib64: djunix:/usr/lib64 # la libidn* lrwxrwxrwx 1 root root 16 16. Mai 2020 libidn2.so.0 -> libidn2.so.0.3.6* -rwxr-xr-x 1 root root 117160 16. Mai 2020 libidn2.so.0.3.6* lrwxrwxrwx 1 root root 17 16. Mai 2020 libidn.so -> libidn.so.11.6.18* lrwxrwxrwx 1 root root 17 16. Mai 2020 libidn.so.11 -> libidn.so.11.6.18* -rwxr-xr-x 1 root root 211520 16. Mai 2020 libidn.so.11.6.18*
The difference stems from the link libidn.so -> libidn.so.11.6.18 being available - what is not the case without libidn-devel. Obviously I need this very link to make tgif functional - so, is this an error of tgif trying to use libidn.so or is it a package error of libidn that should provide libidn.so even without the devel-package of libidn being present?
Any comment is highly appreciated, thank you, take care
Dieter
I'm not familiar with the software you mention, but if the only problem is sending an umlauted character to your software, you should install the Compose Key modification to your keyboard, which you can do in the system settings. I have set the compose key to right-alt. In use, you hit the compose key, then " then the letter (a, o, or u) and in print you will get ä ö ü as required. Presumably it will also go to the software. (With Compose, you can also get a bunch of characters not normally available, like €, ¥, °, ½, ß, ñ and others.) --doug
Dear Doug, dear Olaf, Olaf provided the right pointer - the problem is caused by the fact that dlopen() is used to open the library explicitly. And dlopen() refers to the name it is given - and if the name is "libidn.so" as in my present case this means that if I uninstall libidn-devel the link "libidn.so" is gone what in turn makes the function unavailable. So I am in touch with the developer how to best solve this - will keep you updated. Simply deleting the part of the relevant code without feedback sounds risky in my ears. Stay tuned :-) Thank you very much for your hints, happy New Year, take care Dieter Am Donnerstag, 31. Dezember 2020, 17:13:49 CET schrieb Doug McGarrett:
On 12/31/20 5:48 AM, Dr.-Ing. Dieter Jurzitza wrote:
Dear listmembers, I am maintaining the package tgif (or at least try to do so ...). In order to provide "umlauts" (ok, an European problem :-)) I need the package libidn- devel at compile time _and_ at runtime.
I found the reason now - but I do not know how to circumvent this and whether or not this is my error or a more basic packaging error.
If libidn-devel is _not_ installed, I get the following packages in /usr/ lib64:
djunix:/usr/lib64 # la libidn* lrwxrwxrwx 1 root root 16 16. Mai 2020 libidn2.so.0 -> libidn2.so.0.3.6* -rwxr-xr-x 1 root root 117160 16. Mai 2020 libidn2.so.0.3.6* lrwxrwxrwx 1 root root 17 16. Mai 2020 libidn.so.11 -> libidn.so.11.6.18* -rwxr-xr-x 1 root root 211520 16. Mai 2020 libidn.so.11.6.18*
In contrast, if libidn-devel is in place, I get the following packages in / usr/lib64: djunix:/usr/lib64 # la libidn* lrwxrwxrwx 1 root root 16 16. Mai 2020 libidn2.so.0 -> libidn2.so.0.3.6* -rwxr-xr-x 1 root root 117160 16. Mai 2020 libidn2.so.0.3.6* lrwxrwxrwx 1 root root 17 16. Mai 2020 libidn.so -> libidn.so.11.6.18* lrwxrwxrwx 1 root root 17 16. Mai 2020 libidn.so.11 -> libidn.so.11.6.18* -rwxr-xr-x 1 root root 211520 16. Mai 2020 libidn.so.11.6.18*
The difference stems from the link libidn.so -> libidn.so.11.6.18 being available - what is not the case without libidn-devel. Obviously I need this very link to make tgif functional - so, is this an error of tgif trying to use libidn.so or is it a package error of libidn that should provide libidn.so even without the devel-package of libidn being present?
Any comment is highly appreciated, thank you, take care
Dieter
I'm not familiar with the software you mention, but if the only problem is sending an umlauted character to your software, you should install the Compose Key modification to your keyboard, which you can do in the system settings. I have set the compose key to right-alt. In use, you hit the compose key, then " then the letter (a, o, or u) and in print you will get ä ö ü as required. Presumably it will also go to the software. (With Compose, you can also get a bunch of characters not normally available, like €, ¥, °, ½, ß, ñ and others.) --doug
-- ----------------------------------------------------------- Dr.-Ing. Dieter Jurzitza 76131 Karlsruhe
Am 31.12.20 um 11:48 schrieb Dr.-Ing. Dieter Jurzitza:
The difference stems from the link libidn.so -> libidn.so.11.6.18 being available - what is not the case without libidn-devel. Obviously I need this very link to make tgif functional - so, is this an error of tgif trying to use libidn.so or is it a package error of libidn that should provide libidn.so even without the devel-package of libidn being present?
That depends on what you want to achieve. Originally, there was just a single version of the library, so everyone used libfoo.so (-lfoo). But that started to cause problems when version 2 of the library came out. Suddenly, you'd get all kinds of weird errors because old and new apps would load either version 1 or 2 and everyone was confused. The solution was to install the library with full version info (libfoo.so.1.0), create a symlink as libfoo.so.1 and use /usr/lib/libfoo.so.1 instead of -lfoo when linking. That way, the library could release version 1.1 or 2.1 and all apps would still work (because the link libfoo.so.1 would be updated to point to libfoo.so.1.1 and your app wouldn't notice the new libfoo.so.2.1 file at all). tgif is a very, very old app, I assume. It's from the age when there was just a single version of everything, so the Makefile simply doesn't know these tricks. If you want to bring it up to speed, the correct fix is to replace -lidn in the Makefile with /usr/lib64/libidn.so.11so your app won't break when IDN 12.0 eventually comes out (the change in the major version number indicates that there are breaking changes). If you're using dlopen() to load the library manually, you'll have to use /usr/lib64/libidn.so.11 instead of /usr/lib64/libidn.so in the code. Note: The installer doesn't create the links, the tool ldconfig(8) does that. Note 2: The devel package of libidn probably installed a "package config" file. Try pkg-config --libs idn That should print the correct options to pass to the linker. (pkg-config --list-all to see all installed devel files). Regards, -- Aaron "Optimizer" Digulla a.k.a. Philmann Dark "It's not the universe that's limited, it's our imagination. Follow me and I'll show you something beyond the limits." http://blog.pdark.de/
participants (6)
-
Aaron Digulla
-
Andrei Borzenkov
-
Doug McGarrett
-
Dr.-Ing. Dieter Jurzitza
-
Olaf Hering
-
Werner Flamme