neogeek23
neogeek23

Reputation: 893

Cannot find -lsqlite3 when making python 3, sqlite3 module doesn't work

I'm trying to install python on RHEL7, which requires making python from source. When trying to do that I'm running into this error

/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../libsqlite3.so when searching for -lsqlite3
/usr/bin/ld: skipping incompatible //lib/libsqlite3.so when searching for -lsqlite3
/usr/bin/ld: skipping incompatible //usr/lib/libsqlite3.so when searching for -lsqlite3
/usr/bin/ld: cannot find -lsqlite3
collect2: error: ld returned 1 exit status
warning: building with the bundled copy of libffi is deprecated on this platform.  It will not be distributed with Python 3.7

Python build finished successfully!
The necessary bits to build these optional modules were not found:
_bz2                  _curses               _curses_panel      
_lzma                 _tkinter              readline           
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

The following modules found by detect_modules() in setup.py, have been
built by the Makefile instead, as configured by the Setup files:
atexit                pwd                   time               

Failed to build these modules:
_sqlite3                                                       

running build_scripts

when I try to make.

When I look in those paths this is what I find, also I have sqlite3 installed:

[brad@reason Downloads]$ ls /usr/lib/gcc | grep sql
[brad@reason Downloads]$ ls /lib | grep sql
libodbcpsqlS.so
libodbcpsqlS.so.2
libodbcpsqlS.so.2.0.0
libsqlite3.so
libsqlite3.so.0
libsqlite3.so.0.8.6
[brad@reason Downloads]$ ls /usr/lib | grep sql
libodbcpsqlS.so
libodbcpsqlS.so.2
libodbcpsqlS.so.2.0.0
libsqlite3.so
libsqlite3.so.0
libsqlite3.so.0.8.6
[brad@reason Downloads]$ sqlite3
SQLite version 3.7.17 2013-05-20 00:56:22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> 

I'm not sure what I'm doing wrong. Clearly there is no lsqlite3.so library file, but I'm not sure where to get it. I've read that I need to install sqlite-devel for RHEL, but when I try to do that it seems the required repo is missing. I think my employer altered the repo list. How can I see if this installed? I've tried to install it from RPMs but I think it failed (long list of dependencies required).

[root@reason Downloads]# yum install -y sqlite sqlite-devel
Loaded plugins: downloadkvmonly-background, ibm-check-lotus-updates, ibm-check-upgrade, ibm-check-xorg-updates, ibm-repository, langpacks, post-transaction-actions, refresh-packagekit, versionlock
Cannot reach IBM Intranet network. Please ensure you have an active IBM connection.
http://people.centos.org/tru/devtools-2/7Workstation/x86_64/RPMS/repodata/repomd.xml: [Errno 14] HTTPS Error 404 - Not Found
Trying other mirror.
To address this issue please refer to the below knowledge base article 

https://access.redhat.com/articles/1320623

If above article doesn't help to resolve this issue please open a ticket with Red Hat Support.



 One of the configured repositories failed (testing 2 devtools for CentOS 7Workstation),
 and yum doesn't have enough cached data to continue. At this point the only
 safe thing yum can do is fail. There are a few ways to work "fix" this:

     1. Contact the upstream for the repository and get them to fix the problem.

     2. Reconfigure the baseurl/etc. for the repository, to point to a working
        upstream. This is most often useful if you are using a newer
        distribution release than is supported by the repository (and the
        packages for the previous distribution release still work).

     3. Run the command with the repository temporarily disabled
            yum --disablerepo=testing-devtools-2-centos-7Workstation ...

     4. Disable the repository permanently, so yum won't use it by default. Yum
        will then just ignore the repository until you permanently enable it
        again or use --enablerepo for temporary usage:

            yum-config-manager --disable testing-devtools-2-centos-7Workstation
        or
            subscription-manager repos --disable=testing-devtools-2-centos-7Workstation

     5. Configure the failing repository to be skipped, if it is unavailable.
        Note that yum will try to contact the repo. when it runs most commands,
        so will have to try and fail each time (and thus. yum will be be much
        slower). If it is a very temporary problem though, this is often a nice
        compromise:

            yum-config-manager --save --setopt=testing-devtools-2-centos-7Workstation.skip_if_unavailable=true

failure: repodata/repomd.xml from testing-devtools-2-centos-7Workstation: [Errno 256] No more mirrors to try.
http://people.centos.org/tru/devtools-2/7Workstation/x86_64/RPMS/repodata/repomd.xml: [Errno 14] HTTPS Error 404 - Not Found

I expect to be able to build python and for _sqlite3 module to build. Currently _sqlite3 fails to build which results in import sqlite3 to not work in python, which it should. I've considered just installing python in a docker container but I don't think that will quite do what I need.

Upvotes: 1

Views: 1293

Answers (1)

neogeek23
neogeek23

Reputation: 893

@some-programmer-dude was correct. My sqlite3 install was of a 32 bit version. I just downloaded the source, built it, make, and install. Now I no longer have a missing _sqlite3 library. I made the mistake of using the precompiled linux binaries from the download page, as they only precompiled a 32 bit version. I should have just built it from the start. Thanks some-programmer-dude.

Upvotes: 1

Related Questions