Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I need to compile an old apache version, 1.3 and compilation process fails because:

mod_auth_dbm.c:77:18: fatal error: ndbm.h: File or directory not found

where is it?

share|improve this question
up vote 3 down vote accepted

That file here (Fedora 18) belongs to gdbm-devel, the package containing it for Ubuntu should be named similarly. Check the dependencies for the source, you'll probably need a swath of -devel packages corresponding to each dependency.

What do you need an outdated apache, which moreover has known vulnerabilities? Why doesn't the distribution's apache work? It is probably a much better idea to port whatever requires that apache forward than to get stuck in prehistory...

share|improve this answer
I downloaded that package but ndbm.h is still unfound because now I have gdbm.h and gdbm-ndbm.h. I need that version just because of vulnerabilities: I need to do some penetration testing using known exploits. – Phate Mar 4 '13 at 17:36
There is no gdbm-devel package in ubuntu. There is libgdbm-dev that is most similar by name, unfortunately it doesn't contain ndbm.h, however it contains /usr/include/gdbm-ndbm.h. Maybe it's the one is needed, – rush Mar 4 '13 at 17:46
Ok, I made a symbolic link to this latter file and it worked. Problem is that now it searches for a db.h file... – Phate Mar 4 '13 at 17:53
db.h is part of Berkeley DB, another project to replace DBM (currently owned by Oracle, under some non-free license). Is this perhaps the config script lloking for available DBM functionality? In that case you should just leave things be. – vonbrand Mar 4 '13 at 17:57

In ubuntu there is apt-file package that allows you to find package which contains specified file. You need to install it with

sudo apt-get install apt-file

update the cache with

apt-file update

and than you can to search the package you need with

apt-file search ndbm.h

There is only tendra package, that contains file with such name.

Also libgdbm-dev contains /usr/include/gdbm-ndbm.h. May be it's the one you need. You can try to compile with it.

ps. Also you can use search on ubuntu site.

share|improve this answer
I don't think tendra has anything to do with this. dbm was a "database" (really a library for handling a table of a database only, part of early Unix), which in turn was replaced by ndbm (new DBM, had some licensing issues); gdbm (GNU dbm) was written to replace both. The whole sordid story is covered by Wikipedia. Perhaps there is still a ndbm-dev package in some non-free repo? – vonbrand Mar 4 '13 at 17:53

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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