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

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

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

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

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

答え1

apt-fileUbuntuには、特定のファイルを含むパッケージを見つけることができるパッケージがあります。あなたはそれをインストールする必要があります

sudo apt-get install apt-file

キャッシュの更新

apt-file update

その後、必要なパッケージを検索できます。

apt-file search ndbm.h

ただタンドラその名前のファイルを含むパッケージ。

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

PS:探すUbuntuのウェブサイトから。

答え2

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

古いApacheが必要な理由は何であり、既知の脆弱性はありますか? Apacheの配布バージョンが機能しないのはなぜですか?先史時代に閉じ込められるよりも前に進むためにApacheが必要とするすべてを移植する方が良いでしょう。

答え3

gdbmソースコードは、ヘッダファイルを/usr/include/gdbm/usr/include/ndbm.h/usr/include/gdbm/ndbm.hndbm.hgdbm-ndbm.hgdbm.hdbm.hgdbm-ndbm.h

私はこれが他のパッケージとの競合を避けるためのものだと思いますが、これは悪い解決策です。

この種の問題を解決する1つの方法(特にシステムディレクトリを変更する権限がない場合)は、compatという独自のディレクトリを作成してからのリンクを入れてから、コンパイラにcompat/ndbm.hcompat/usr/include/gdbm-ndbm.hディレクトリを検索するように指示することです。 (-Icompat)。その後、システムライブラリでファイルが見つからない場合は、自分のディレクトリで正しい名前を見つけます。

答え4

Debian 10 および Ubuntu 18.04 (おそらく以前のバージョンですが、このパッケージでサポートされている最も古いバージョン) 以降、関連ファイルは以下で使用できます。libgdbm-compat-dev:

apt install libgdbm-compat-dev

関連情報