Bug 1140188 - rhn_check throws error
Summary: rhn_check throws error
Alias: None
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: yum
Version: 6.5
Hardware: Unspecified
OS: Linux
Target Milestone: rc
: ---
Assignee: Packaging Maintenance Team
QA Contact: BaseOS QE Security Team
Depends On:
TreeView+ depends on / blocked
Reported: 2014-09-10 12:57 UTC by pradeepre
Modified: 2014-12-04 10:53 UTC (History)
3 users (show)

Clone Of:
Last Closed: 2014-12-04 10:53:12 UTC

Attachments (Terms of Use)

Description pradeepre 2014-09-10 12:57:23 UTC
Description of problem:
I am trying to run rhn_check on my RHEL server but getting the below error:
Traceback (most recent call last):
  File "/usr/sbin/rhn_check", line 43, in <module>
    from up2date_client import up2dateErrors
  File "/usr/share/rhn/up2date_client/up2dateErrors.py", line 44, in <module>
    from yum.Errors import YumBaseError
  File "/usr/lib/python2.6/site-packages/yum/__init__.py", line 52, in <module>
    import config
  File "/usr/lib/python2.6/site-packages/yum/config.py", line 30, in <module>
    from parser import ConfigPreProcessor, varReplace
  File "/usr/lib/python2.6/site-packages/yum/parser.py", line 4, in <module>
    import urlgrabber
  File "/usr/lib/python2.6/site-packages/urlgrabber/__init__.py", line 54, in <module>
    from grabber import urlgrab, urlopen, urlread
  File "/usr/lib/python2.6/site-packages/urlgrabber/grabber.py", line 427, in <module>
    import pycurl
ImportError: /usr/lib64/libcurl.so.4: undefined symbol: libssh2_scp_send64

Looks like an issue with yum. Here is what I got on running yum list:
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:

   /usr/lib64/libcurl.so.4: undefined symbol: libssh2_scp_send64

Please install a package which provides this module, or
verify that the module is installed correctly.

It's possible that the above module doesn't match the
current version of Python, which is:
2.6.6 (r266:84292, Sep 12 2011, 14:03:14)
[GCC 4.4.5 20110214 (Red Hat 4.4.5-6)]

If you cannot solve this problem yourself, please go to
the yum faq at:

Version-Release number of selected component (if applicable):
Red Hat Enterprise Linux Server release 6.5 (Santiago)
[root@node]# rpm -qa|egrep -i "curl|libssh"
[root@node]# rpm -q libcurl --requires | grep ssh
libssh2(x86-64) >= 1.4.2

How reproducible:

Actual results:
The errors pasted above.

Expected results:
rhn_check successful without errors.

Additional info:
The required version of libssh2 for libcurl is already installed. Please let me know as what needs to be done for resolving this issue. Let me know in case further information is needed.

Comment 2 Kamil Dudka 2014-09-10 13:15:36 UTC
Please paste the output of the following commands:

ldd /usr/bin/curl

readelf -s /usr/lib64/libcurl.so.4 | grep scp

readelf -s /usr/lib64/libssh2.so.1 | grep scp

Comment 3 pradeepre 2014-09-11 04:09:42 UTC
[root@node]# ldd /usr/bin/curl
        linux-vdso.so.1 =>  (0x00007fffbaa77000)
        libcurl.so.4 => /usr/lib64/libcurl.so.4 (0x0000003818600000)
        libidn.so.11 => /lib64/libidn.so.11 (0x0000003e56600000)
        libldap-2.4.so.2 => /lib64/libldap-2.4.so.2 (0x0000003e63a00000)
        librt.so.1 => /lib64/librt.so.1 (0x0000003e52200000)
        libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x0000003e5e200000)
        libkrb5.so.3 => /lib64/libkrb5.so.3 (0x0000003e5de00000)
        libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x0000003e5da00000)
        libcom_err.so.2 => /lib64/libcom_err.so.2 (0x0000003e5d200000)
        libssl3.so => /usr/lib64/libssl3.so (0x0000003e61600000)
        libsmime3.so => /usr/lib64/libsmime3.so (0x0000003e61a00000)
        libnss3.so => /usr/lib64/libnss3.so (0x0000003e60a00000)
        libnssutil3.so => /usr/lib64/libnssutil3.so (0x0000003e61200000)
        libplds4.so => /lib64/libplds4.so (0x0000003e60600000)
        libplc4.so => /lib64/libplc4.so (0x0000003e60200000)
        libnspr4.so => /lib64/libnspr4.so (0x0000003e60e00000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003e51a00000)
        libdl.so.2 => /lib64/libdl.so.2 (0x0000003e51600000)
        libssh2.so.1 => /usr/lib64/libssh2.so.1 (0x0000003e56a00000)
        libz.so.1 => /lib64/libz.so.1 (0x0000003e52600000)
        libc.so.6 => /lib64/libc.so.6 (0x0000003e51200000)
        liblber-2.4.so.2 => /lib64/liblber-2.4.so.2 (0x0000003e63200000)
        libresolv.so.2 => /lib64/libresolv.so.2 (0x0000003e53200000)
        libsasl2.so.2 => /usr/lib64/libsasl2.so.2 (0x0000003e64200000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003e50e00000)
        libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x0000003e5f200000)
        libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x0000003e5e600000)
        libssl.so.10 => /usr/lib64/libssl.so.10 (0x0000003e5f600000)
        libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x0000003e5c200000)
        libcrypt.so.1 => /lib64/libcrypt.so.1 (0x0000003e5fa00000)
        libselinux.so.1 => /lib64/libselinux.so.1 (0x0000003e52e00000)
        libfreebl3.so => /lib64/libfreebl3.so (0x0000003e5fe00000)
[root@node]# readelf -s /usr/lib64/libcurl.so.4 | grep scp
   217: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND libssh2_scp_recv
   229: 0000000000000000     0 FUNC    GLOBAL DEFAULT  UND libssh2_scp_send64
   400: 000000381863ba50    67 FUNC    GLOBAL DEFAULT   11 Curl_scp_send
   417: 000000381863ba00    70 FUNC    GLOBAL DEFAULT   11 Curl_scp_recv
   460: 0000003818851a00   112 OBJECT  GLOBAL DEFAULT   19 Curl_handler_scp
[root@node]# readelf -s /usr/lib64/libssh2.so.1 | grep scp
   104: 0000003e56a118f0  4501 FUNC    GLOBAL DEFAULT   11 libssh2_scp_recv
   128: 0000003e56a10f50  2458 FUNC    GLOBAL DEFAULT   11 libssh2_scp_send_ex

Comment 4 Kamil Dudka 2014-09-11 09:27:46 UTC
> [root@node]# readelf -s /usr/lib64/libssh2.so.1 | grep scp
>    104: 0000003e56a118f0  4501 FUNC    GLOBAL DEFAULT   11 libssh2_scp_recv
>    128: 0000003e56a10f50  2458 FUNC    GLOBAL DEFAULT   11 libssh2_scp_send_ex

That does not look as the genuine contents of libssh2-1.4.2-1.el6.x86_64 released by Red Hat.  Please paste also the output of the following commands:

rpm -V libssh2

file /usr/lib64/libssh2.so.1

sha1sum /usr/lib64/libssh2.so.1.0.1

prelink -u /usr/lib64/libssh2.so.1.0.1

sha1sum /usr/lib64/libssh2.so.1.0.1

Comment 5 pradeepre 2014-09-11 10:19:41 UTC
[root@node]# rpm -V libssh2
S.5....T.    /usr/lib64/libssh2.so.1.0.1
missing     /usr/share/doc/libssh2-1.4.2
missing   d /usr/share/doc/libssh2-1.4.2/AUTHORS
missing   d /usr/share/doc/libssh2-1.4.2/COPYING
missing   d /usr/share/doc/libssh2-1.4.2/ChangeLog
missing   d /usr/share/doc/libssh2-1.4.2/NEWS
missing   d /usr/share/doc/libssh2-1.4.2/README
[root@node]# file /usr/lib64/libssh2.so.1
/usr/lib64/libssh2.so.1: symbolic link to `libssh2.so.1.0.1'
[root@node]# sha1sum /usr/lib64/libssh2.so.1.0.1
3273b6e777f5beed154cc852841d5b3f322051fd  /usr/lib64/libssh2.so.1.0.1
[root@node]# prelink -u /usr/lib64/libssh2.so.1.0.1
prelink: /usr/lib64/libssh2.so.1.0.1 does not have .gnu.prelink_undo section
[root@node]# sha1sum /usr/lib64/libssh2.so.1.0.1
3273b6e777f5beed154cc852841d5b3f322051fd  /usr/lib64/libssh2.so.1.0.1

Comment 6 Kamil Dudka 2014-09-11 13:16:03 UTC
(In reply to pradeepre from comment #5)
> [root@node]# rpm -V libssh2
> S.5....T.    /usr/lib64/libssh2.so.1.0.1
> missing     /usr/share/doc/libssh2-1.4.2
> missing   d /usr/share/doc/libssh2-1.4.2/AUTHORS
> missing   d /usr/share/doc/libssh2-1.4.2/COPYING
> missing   d /usr/share/doc/libssh2-1.4.2/ChangeLog
> missing   d /usr/share/doc/libssh2-1.4.2/NEWS
> missing   d /usr/share/doc/libssh2-1.4.2/README

This means that libssh2-1.4.2-1.el6.x86_64 is actually not installed on the file system despite it appears in the rpm database.

> [root@node]# sha1sum /usr/lib64/libssh2.so.1.0.1
> 3273b6e777f5beed154cc852841d5b3f322051fd  /usr/lib64/libssh2.so.1.0.1

According to the above hash, /usr/lib64/libssh2.so.1.0.1 appears to be installed by libssh2-1.2.2-7.el6_1.1.  However, libcurl-7.19.7-37.el6_5.3.x86_64 requires libssh2(x86-64) >= 1.4.2.

I am switching the component to yum as it probably allowed to update libcurl without making sure that its dependencies were satisfied.

Anyway, you will get the system fixed by reinstalling the libssh2 package.

Comment 7 pradeepre 2014-09-11 14:07:00 UTC
Great, that worked.
Removed libssh2 package & installed again.

Thanks Kamil

Comment 8 Valentina Mukhamedzhanova 2014-12-04 10:53:12 UTC
I'm failing to reproduce this, and it's not at all obvious that the issue was caused by yum.

Note You need to log in before you can comment on or make changes to this bug.