I've just been compiling pilot-link and jpilot for SuSE 8.1, and I seem to have everything working! My first successful compilation and rpm-building :-) Except for one thing - jpilot complains (when I try to install the rpm) that it needs libcrypto.so.0. Now, this is part of openssl and is installed on my system. The relevant file is present in /usr/lib (as a link to libcrypto.so.0.9.6 (I think)), and it works perfectly if I force it. So, why is it complaining? The annoyance is that, every time I start the YaST install tool, it complains about this. Any tips? TiA, John -- John Pettigrew Headstrong Games john@headstrong-games.co.uk Fun : Strategy : Price http://www.headstrong-games.co.uk/ Board games that won't break the bank Fields of Valour: 2 Norse clans battle on one of 3 different boards
On Mon, 04 Nov 2002 20:57:01 GMT
John Pettigrew
jpilot complains (when I try to install the rpm) that it needs libcrypto.so.0. Now, this is part of openssl and is installed on my system. The relevant file is present in /usr/lib (as a link to libcrypto.so.0.9.6 (I think)), and it works perfectly if I force it. So, why is it complaining? The annoyance is that, every time I start the YaST install tool, it complains about this.
Any tips?
Yeah, this happens with alot of apps. Go into /usr/lib and make symlinks @libcrypto.so @libcrypto.so.0 pointing to libcrypto.so.0.9.6 The apps look for the simple name of the lib instead of the full name. -- use Perl; #powerful programmable prestidigitation
In a previous message, zentara wrote:
On Mon, 04 Nov 2002 20:57:01 GMT John Pettigrew
wrote: jpilot complains (when I try to install the rpm) that it needs libcrypto.so.0. [snip] The relevant file is present in /usr/lib (symlink to libcrypto.so.0.9.6)
Yeah, this happens with alot of apps.
Go into /usr/lib and make symlinks
But, as I said, there seems to be such a file already. Should I replace it? Why is the system not picking this up? John -- John Pettigrew Headstrong Games john@headstrong-games.co.uk Fun : Strategy : Price http://www.headstrong-games.co.uk/ Board games that won't break the bank Fields of Valour: 2 Norse clans battle on one of 3 different boards
On Tue, 05 Nov 2002 11:41:28 GMT
John Pettigrew
In a previous message, zentara wrote:
On Mon, 04 Nov 2002 20:57:01 GMT John Pettigrew
wrote: jpilot complains (when I try to install the rpm) that it needs libcrypto.so.0. [snip] The relevant file is present in /usr/lib (symlink to libcrypto.so.0.9.6)
Yeah, this happens with alot of apps.
Go into /usr/lib and make symlinks
But, as I said, there seems to be such a file already. Should I replace it? Why is the system not picking this up?
Maybe try doing a ldconfig to update the ld cache? Maybe the app is "hardwired" to look for the lib in /usr/local/lib instead of /usr/lib. Try making symlinks in /usr/local/lib then do a ldconfig. -- use Perl; #powerful programmable prestidigitation
In a previous message, zentara wrote:
On Mon, 04 Nov 2002 20:57:01 GMT John Pettigrew
wrote: jpilot complains (when I try to install the rpm) that it needs libcrypto.so.0. Maybe try doing a ldconfig to update the ld cache? Maybe the app is "hardwired" to look for the lib in /usr/local/lib instead of /usr/lib. Try making symlinks in /usr/local/lib then do a ldconfig.
Neither of these had any effect :-( I guess that I'll have to live with it. I was particularly surprised by this, though, given that I compiled it on my own system, creating the rpm with checkinstall. John -- John Pettigrew Headstrong Games john@headstrong-games.co.uk Fun : Strategy : Price http://www.headstrong-games.co.uk/ Board games that won't break the bank Knossos: escape the ever-changing labyrinth before the Minotaur catches you!
zentara
Yeah, this happens with alot of apps.
Well, but correctly solving it ain't that easy :)
Go into /usr/lib and make symlinks @libcrypto.so
No, this is provided by openssl-devel.rpm and in nearly every case only needed for compiling an application/binary.
@libcrypto.so.0
Is useless, as libcrypto.so.0.9.6 of 8.1 has an internal name (the so called soname of libcrypto.so.0.9.6.
The apps look for the simple name of the lib instead of the full name.
What apps look for are the names recorded in special fields of the binary, the so called DT_NEEDED. A ldd on the binary will show you those names and what library it resolves to. In the case of libcrypto creating the symlink is *wrong*. If you do a 'objdump -p /usr/lib/libcrypto.so.0.9.6', you'll find in the output this: SONAME libcrypto.so.0.9.6 This is the name that gets written into DT_NEEDED of the application. The contents of this Field may be viewed by ldd or by 'objdump -p'. If this fresh jpilot RPM lists libcrypto.so.0 as needed, it has been compiled on a system where libcrypto.so points to the wrong library! Creating random symlinks won't cure the root cause. Philipp -- Philipp Thomas work: pthomas@suse.de Development SuSE Linux AG private: pth@t-link.de
In a previous message, Philipp Thomas wrote:
If this fresh jpilot RPM lists libcrypto.so.0 as needed, it has been compiled on a system where libcrypto.so points to the wrong library! Creating random symlinks won't cure the root cause.
OK, that's great info, thanks. But, the rpm was compiled on my system (using checkinstall) - SuSE 8.1. So, what do I need to do to stop this complaint? John -- John Pettigrew Headstrong Games john@headstrong-games.co.uk Fun : Strategy : Price http://www.headstrong-games.co.uk/ Board games that won't break the bank Fields of Valour: 2 Norse clans battle on one of 3 different boards
On Wednesday 06 November 2002 10.46, John Pettigrew wrote:
In a previous message, Philipp Thomas wrote:
If this fresh jpilot RPM lists libcrypto.so.0 as needed, it has been compiled on a system where libcrypto.so points to the wrong library! Creating random symlinks won't cure the root cause.
OK, that's great info, thanks. But, the rpm was compiled on my system (using checkinstall) - SuSE 8.1. So, what do I need to do to stop this complaint?
It seems insane to use major, minor *and* revision number as soname. Even a minor bugfix update would require a lot of rebuilding, or to keep the entire version number intact. That doesn't seem like a good use of version numbers. In any case, Quick fix: rebuild SuSE's openssl, and edit openssl.spec to add libcrypto.so.0 on the "Provides" line. That should make rpms dependency checker shut up. If you like I've built rpms for 8.1 since I had the same problem with ymessenger.rpm. Note that it's rpm that's complaining, not the dynamic linker.
In a previous message, Anders Johansson wrote:
It seems insane to use major, minor *and* revision number as soname.
True - someone made a boo-boo, it seems!
In any case, Quick fix: rebuild SuSE's openssl [snip]
Is that just a case of finding the sources and doing a configure and checkinstall? Worth knowing in case I run into something similar again...
If you like I've built rpms for 8.1 since I had the same problem with ymessenger.rpm.
That would be great, thanks - could you email them to this address? My net connection is currently not allowing http access to the net (service provider "is working on it"...), but email is OK (bizarre, but very useful).
Note that it's rpm that's complaining, not the dynamic linker.
Indeed - it was the dependency checker in YaST that was annoying me. Thanks, John -- John Pettigrew Headstrong Games john@headstrong-games.co.uk Fun : Strategy : Price http://www.headstrong-games.co.uk/ Board games that won't break the bank Valley of the Kings: ransack an ancient Egyptian tomb but beware of mummies!
Anders Johansson
On Wednesday 06 November 2002 10.46, John Pettigrew wrote:
It seems insane to use major, minor *and* revision number as soname. Even a minor bugfix update would require a lot of rebuilding, or to keep the entire version number intact. That doesn't seem like a good use of version numbers.
Complain to the openssl folks, they must have had a reason.
In any case, Quick fix: rebuild SuSE's openssl, and edit openssl.spec to add libcrypto.so.0 on the "Provides" line. That should make rpms dependency checker shut up.
Yes, with a hack like that it would work, but that's just papering over the real problem. If done right, rpm *will* find what a package needs/provides. With 'AutoReqProv: on' in the spec file, rpm should figure out itself, what a package provides or needs.
Note that it's rpm that's complaining, not the dynamic linker.
And it's IMNSHO most probably checkinstall that got the requires wrong. Philipp -- Philipp Thomas work: pthomas@suse.de Development SuSE Linux AG private: pth@t-link.de
On Wednesday 06 November 2002 19.16, Philipp Thomas wrote:
With 'AutoReqProv: on' in the spec file, rpm should figure out itself, what a package provides or needs.
It is on by default, AFAICS
And it's IMNSHO most probably checkinstall that got the requires wrong.
checkinstall uses rpm's find-requires, which in turn uses ldd to see which libs are needed. IMVHO it must be ld that gets it wrong.
Anders Johansson
On Wednesday 06 November 2002 19.16, Philipp Thomas wrote:
And it's IMNSHO most probably checkinstall that got the requires wrong.
checkinstall uses rpm's find-requires, which in turn uses ldd to see which libs are needed. IMVHO it must be ld that gets it wrong.
Nope, I think there's something fishy with the openssl package which I'll check tomorrow. libcrypto has a soname of libcrypto.so.0.9.6. There are two reasons why this is so. Either no soname is passed to the linker, in which case the library name is used, or it's explicitly given. openssl *also* provides the symlink libcrypto.so.0, pointing to libcrypto.so.0.9.6. The most interesting thing would be what jpilot has in its DT_NEEDED fields. John, could you please run 'objdump -p jpilot' and post the output (the lines beginning with NEEDED would suffice)? At least the jpilot 0.99 in our source RPM has no configuration option for libcrypto and AFAICS, configure does not search for libcrypto. So I'm wondering where the need for libcrypto is coming from. John, which version of jpilot and pilot-link did you use (preferably with URL)? I'd like to check where the requirement for libcrypto is coming from. Philipp -- Philipp Thomas work: pthomas@suse.de Development SuSE Linux AG private: pth@t-link.de
On Thursday 07 November 2002 01.26, Philipp Thomas wrote:
Anders Johansson
[Wed, 6 Nov 2002 20:14:52 +0100]: On Wednesday 06 November 2002 19.16, Philipp Thomas wrote:
And it's IMNSHO most probably checkinstall that got the requires wrong.
checkinstall uses rpm's find-requires, which in turn uses ldd to see which libs are needed. IMVHO it must be ld that gets it wrong.
Nope,
I'm sorry, but exactly what are you saying "Nope" to here?
I think there's something fishy with the openssl package which I'll check tomorrow.
libcrypto has a soname of libcrypto.so.0.9.6. There are two reasons why this is so. Either no soname is passed to the linker, in which case the library name is used, or it's explicitly given.
It's explicitly given.
Anders Johansson
I'm sorry, but exactly what are you saying "Nope" to here?
OK, I was a bit too terse. That nope meant for ld doing something wrong.
It's explicitly given.
OK, so it's done on purpose. Any way, a binary linked to a dynamic library will have the soname recorded in it's DT_NEEDED fields, so in this case jpilot (or whichever program needs libcrypto) should have libcrypto.so.0.9.6 recorded, so I'm wondering where the requirement for libcrypto.so.0 is coming from. Seems to call for some testing. Philipp -- Philipp Thomas work: pthomas@suse.de Development SuSE Linux AG private: pth@t-link.de
In a previous message, Philipp Thomas wrote:
openssl *also* provides the symlink libcrypto.so.0, pointing to libcrypto.so.0.9.6.
The problem was that the version from the SuSE 8.1 DVD didn't (at least, not in the rpm listing I saw in YaST) - it only provided libcrypto.so.0.9.6. The version Anders built *did* also provide libcrypto.so.0.
John, could you please run 'objdump -p jpilot' and post the output
"objdump: jpilot: No such file or directory" Run as root. Do I need to provide the full path or something similar?
John, which version of jpilot and pilot-link did you use (preferably with URL)? I'd like to check where the requirement for libcrypto is coming from.
JPilot 0.99.3-1 pilot-link 0.11.5-1 IIRC, they came from jpilot.org and pilot-link.org, tarball downloads of the latest stable versions. John -- John Pettigrew Headstrong Games john@headstrong-games.co.uk Fun : Strategy : Price http://www.headstrong-games.co.uk/ Board games that won't break the bank Knossos: escape the ever-changing labyrinth before the Minotaur catches you!
John Pettigrew wrote:
In a previous message, Philipp Thomas wrote:
openssl *also* provides the symlink libcrypto.so.0, pointing to libcrypto.so.0.9.6.
The problem was that the version from the SuSE 8.1 DVD didn't (at least, not in the rpm listing I saw in YaST) - it only provided libcrypto.so.0.9.6. The version Anders built *did* also provide libcrypto.so.0.
John, could you please run 'objdump -p jpilot' and post the output
Thanks for the new command "objdump"
"objdump: jpilot: No such file or directory"
Run as root.
"ltrace" is also a helpful binary to spot missing libs in a program. Similar to "strace". However, be prepared for a lot of output. As root or user - "/usr/bin/ltrace jpilot" ltrace(1) ltrace(1) NAME ltrace - A library call tracer 73 de Donn Washburn __ " http://www.hal-pc.org/~dwash " Ham Callsign N5XWB / / __ __ __ __ __ __ __ 307 Savoy St. / /__ / / / \/ / / /_/ / \ \/ / Sugar Land, TX 77478 /_____/ /_/ /_/\__/ /_____/ /_/\_\ LL# 1.281.242.3256 a MSDOS Virus "Free Zone" OS Email: n5xwb@arrl.net Info: http://www.austinlug.org
In a previous message, John Pettigrew wrote:
In a previous message, Philipp Thomas wrote:
John, could you please run 'objdump -p jpilot' and post the output
"objdump: jpilot: No such file or directory"
Run as root.
Do I need to provide the full path or something similar?
OK, with the whole path to jpilot, I get: Dynamic Section: NEEDED libdl.so.2 NEEDED libpisock.so.8 NEEDED libgtk-1.2.so.0 NEEDED libgdk-1.2.so.0 NEEDED libgmodule-1.2.so.0 NEEDED libglib-1.2.so.0 NEEDED libXext.so.6 NEEDED libX11.so.6 NEEDED libm.so.6 NEEDED libc.so.6 Which is odd - no reference to libcrypto at all! However, the YaST tool gives the following info: jpilot - Palm Pilot desktop for Linux Installed Version Version: 0.99.3-1 Provides: libexpense.so.0 libkeyring.so.0 libsynctime.so.0 jpilot = 0.99.3-1 Requires: /bin/sh rpmlib(PayloadFilesHavePrefix) <= 4.0-1 ld-linux.so.2 libX11.so.6 libXext.so.6 libc.so.6 libdl.so.2 libgdk-1.2.so.0 libglib-1.2.so.0 libgmodule-1.2.so.0 libgtk-1.2.so.0 libm.so.6 libpisock.so.8 libcrypto.so.0 libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1) libdl.so.2(GLIBC_2.0) libdl.so.2(GLIBC_2.1) rpmlib(CompressedFileNames) <= 3.0.4-1 Pre-Requires: /bin/sh rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1 Obsoletes: Conflicts: Which *does* include libcrypto.so.0. Does that help? John -- John Pettigrew Headstrong Games john@headstrong-games.co.uk Fun : Strategy : Price http://www.headstrong-games.co.uk/ Board games that won't break the bank Knossos: escape the ever-changing labyrinth before the Minotaur catches you!
John Pettigrew
Which is odd - no reference to libcrypto at all!
Like I thought.
libexpense.so.0 libkeyring.so.0 libsynctime.so.0
I'd guess it's libkeyring.so.0 that needs libcrypto. You could check by running 'objdump /usr/lib/libkeyring.so.0', assuming libkeyring.so.0 is in /usr/lib. I guess I'll have to download the sources myself and try to compile them in order to solve this mystery. Philipp -- Philipp Thomas work: pthomas@suse.de Development SuSE Linux AG private: pth@t-link.de
In a previous message, Philipp Thomas wrote:
I'd guess it's libkeyring.so.0 that needs libcrypto. You could check by running 'objdump /usr/lib/libkeyring.so.0', assuming libkeyring.so.0 is in /usr/lib.
Yup, it lists libcrypto.so.0 in its NEEDED section. Still doesn't explain why it's not found, though! The only odd thing that struck me is that libkeyring is in /usr/lib/jpilot/plugins, but I doubt this would have an effect. John -- John Pettigrew Headstrong Games john@headstrong-games.co.uk Fun : Strategy : Price http://www.headstrong-games.co.uk/ Board games that won't break the bank Fields of Valour: 2 Norse clans battle on one of 3 different boards
On Monday 11 November 2002 15:35, John Pettigrew wrote:
Yup, it lists libcrypto.so.0 in its NEEDED section. Still doesn't explain why it's not found, though! The only odd thing that struck me is that libkeyring is in /usr/lib/jpilot/plugins, but I doubt this would have an effect.
The *really* odd thing is that when I built the package (on a stock SuSE 8.1) I got libcrypto.so.0.9.6, as would be expected. Exactly how did you build the package? Anders
In a previous message, Anders Johansson wrote:
On Monday 11 November 2002 15:35, John Pettigrew wrote:
Yup, it lists libcrypto.so.0 in its NEEDED section. Still doesn't explain why it's not found, though!
The *really* odd thing is that when I built the package (on a stock SuSE 8.1) I got libcrypto.so.0.9.6, as would be expected.
Exactly how did you build the package?
I simply ran configure and checkinstall on my SuSE 8.1 system - everything installed from the DVDs, not rebuilt at all. However, I'm new to compiling my own apps for linux, so I could have messed something up somehow, I guess! John -- John Pettigrew Headstrong Games john@headstrong-games.co.uk Fun : Strategy : Price http://www.headstrong-games.co.uk/ Board games that won't break the bank Knossos: escape the ever-changing labyrinth before the Minotaur catches you!
In a previous message, Philipp Thomas wrote:
In any case, Quick fix: rebuild SuSE's openssl, and edit openssl.spec to add libcrypto.so.0 on the "Provides" line. That should make rpms dependency checker shut up.
Yes, with a hack like that it would work, but that's just papering over the real problem.
Well, it worked for me! I downloaded the rpm that Anders had altered and I no longer get the spurious warning about libcrypto. If there's a better way, great, but I'm not being pestered by YaST any more :-) Thanks to all for the help with this! John -- John Pettigrew Headstrong Games john@headstrong-games.co.uk Fun : Strategy : Price http://www.headstrong-games.co.uk/ Board games that won't break the bank Knossos: escape the ever-changing labyrinth before the Minotaur catches you!
participants (5)
-
Anders Johansson
-
Donn aka N5XWB
-
John Pettigrew
-
Philipp Thomas
-
zentara