web-dev-qa-db-ja.com

Ubuntu:ndbm.hが見つかりません

古いApacheバージョン1.3をコンパイルする必要がありますが、次の理由でコンパイルプロセスが失敗します。

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

このndbm.hファイルはどこにありますか?

4
Phate

ここのファイル(Fedora 18)はgdbm-develに属しており、Ubuntu用のファイルを含むパッケージにも同様の名前を付ける必要があります。ソースの依存関係を確認してください。おそらく、各依存関係に対応する-develパッケージのスワスが必要になります。

脆弱性が知られている古いApacheには何が必要ですか?ディストリビューションのApacheが機能しないのはなぜですか?先史時代にとらわれるよりも、Apacheを転送する必要があるものは何でも移植する方がおそらくはるかに良い考えです...

4
vonbrand

Ubuntuにはapt-fileパッケージがあり、指定したファイルを含むパッケージを見つけることができます。でインストールする必要があります

Sudo apt-get install apt-file

キャッシュを更新します

apt-file update

必要なパッケージを検索するよりも

apt-file search ndbm.h

そのような名前のファイルを含む tendra パッケージのみがあります。

また、libgdbm-devには/usr/include/gdbm-ndbm.hが含まれています。多分それはあなたが必要とするものです。あなたはそれでコンパイルを試みることができます。

ps。また、ubuntuサイトで search を使用することもできます。

4
rush

Gdbmソースは、ヘッダーファイルを_/usr/include/gdbm_に配置します。一部のパッケージングシステム(Arch Linuxなど)はそれらへのシンボリックリンクを配置します(したがって、_/usr/include/ndbm.h_は_/usr/include/gdbm/ndbm.h_を指します)が、少なくとも一部のDebianベースのシステムはディレクトリを省略し、_ndbm.h_の名前を_gdbm-ndbm.h_(つまり、_gdbm.h_、_dbm.h_、および_gdbm-ndbm.h_があります)。

別のパッケージとの競合を回避するためだったと思いますが、それは不十分な解決策です。

このような問題を回避する1つの方法(特にシステムディレクトリを変更する権限がない場合)は、独自のディレクトリを作成することです。 compat、_compat/ndbm.h_から_/usr/include/gdbm-ndbm.h_へのリンクを挿入し、コンパイラにcompatディレクトリ(_-Icompat_)を検索するように指示します。次に、システムライブラリでファイルが見つからない場合は、自分のディレクトリで正しい名前が見つかります。

1
Steve Peltz