0

Everyone at some point or another must have installed a program from source in Linux. I very often find myself downloading a program I want to install, run through the ./configure and lots of error message pops up saying you don't have this or you don't have that.

Is there a website that clearly shows you the dependencies of that particular program? Some have it in the README file, but most don't even bother.

Is there a way to find all the dependencies without going through the ./configure command?

0

6 Answers 6

3

Because various distributions name packages differently, this is extremely difficult to accomplish. For instance, on Debian, a package may be named libfoo, and its counterpart development package libfoo-dev. On RHEL/CentOS it might be libfoo1 and libfoo1-devel.

A well written configure.ac (which is used to generate the 'configure' script) should tell you, in a meta way, what package you are missing. I.e.

Checking for libfoo ... no
Checking for libfoo usability .... no
./configure: Error: You are missing the package 'libfoo' and possibly
'libfoo-dev(el)'

This lets you apt-cache / yum search for something to install, if the errors preceding the configure: Error: aren't obvious. Googling configure's output usually bears fruit to find out just what package you are missing.

The real problem comes when the version of libfoo your distro offers is too old for the program you are trying to compile. In that case, you must build libfoo itself, install it separately from the version provided by your distro and tell the program how to link to it (also done via 'configure')

For this reason, I usually use fast moving distributions (I.e. Ubuntu) for my development machine. Usually, I can find what I need, up to date in the universe repository.

I just had to upgrade glibc on a Debian Lenny machine just to be able to build and install a multi threaded AIO based AoE target, plus roll my own 2.6.31.6 kernel because the program wanted eventfd support. I feel your pain :)

Yet, this is part of the fun of building your own stuff .. once it works, you are doubly satisfied .. or doubly frustrated if it doesn't :)

2

There are programs that will find out dependencies while you build software. They watch the build process, stop it when it needs a file, installs a package that provides that file and resume the build process.

For example, in Debian there is auto-apt.

1

Many distributives have a package managers which tasks is resolve the dependencies. If your distributive don't have a package manager you can find the dependencies based on other distributive packages. For example, debian packages.

For example for mutt.

I don't know how you can find all dependencies if there is not a package.

0

RPMFIND.NET list "Required" packages for anything it know of.

YUM and APT (RedHat and Debian based distributions respectively) exist largely for just this purpose, but also let you install the packages as well. Whoo-Hoo

0
  1. Check on the project's website - they will most probably list the dependencies.
  2. Don't worry about some checks / fails that are not errors. For example most projects using autoscan will check for awk, gawk, mawk, etc... but it doesn't matter if you install one/all of them.
  3. If configure actually stops with an error at some library, just search for the name it reports. apt-cache search ... / yum search / google is all you need usually.
0

As a limited case, if you are installing from source to get an update to a program that is already installable through the package manager, you can install the build dependencies of the version in the package manager, and this should get all or most of the build-deps of the new version

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .