Have installed Gnu Recutils but I am getting

recsel -P File /home/hagbard/Opstk/bin/gungadin-1.0/logs/molniya-5978-T08:09:55.669018347.org
recsel: error while loading shared libraries: librec.so.1: cannot open shared object file: No such file or directory

What can I do to resolve the shared library loading problem?

  • 2
    What distribution are you running? Did you compile and install it yourself, or install a package? If self-compiled, did you install librec.so.1 somewhere in your system library path? or remember to set LD_LIBRARY_PATH to point to where it is? If a package, which package and version? is the package an official package for your distro? Or is it in some third party repo (ppa or whatever) or built for some other distro? BTW, on Debian, the recutils package just works. It's been a long time since I used it (i'm more inclined to use postgresql or sqlite, or csv), but I just tested it now.
    – cas
    Nov 23 at 7:06
  • You need to install the librec1
    – GAD3R
    Nov 23 at 9:23
  • I installed from source actually.
    – Aardvark
    Nov 23 at 19:03
  • 1
    I had to run ldconfig.
    – Aardvark
    Nov 23 at 19:54

You are experiencing the expected behavior when recsel and the other utilities from GNU recutils have been compiled from the source distribution and then used directly from their directory there or copied manually elsewhere first.

After compiling everything in the GNU recutils source distribution, several shell scripts in utils subdirectory have names identical to the recutils tools. These scripts set up the correct values for things like LD_LIBRARY_PATH and then invokes the actual binaries wherever they happen to be installed. You can't use these scripts by themselves, and you can't use the binaries by themselves.

To make it easy for yourself, install GNU recutils from your system's native package manager, or, if that's not at all possible, do a proper installation (make install) of the project built from its source distribution.

  • It really depends on your system. In my Debian system, for example, I have to run ldconfig in order for the dynamic linker to find new libraries installed in /usr/local.
    – Aardvark
    Nov 23 at 19:01

For Debian systems, the solution is to run ldconfig in order for the dynamic linker to find new libraries installed in /usr/local.

New contributor
Aardvark is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.
  • On Debian systems, the solution is to just run apt-get install recutils. recutils in debian stable is version 1.8 packaged on Jan 31 2020, and upstream version is also 1.8, released on Jan 3 2019. There's no need to compile it yourself unless you want to change compile time options or make changes to the source - and, in that case, you should download the Debian source and build a new package.
    – cas
    Nov 24 at 13:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.