以前のApacheバージョン1.3をコンパイルする必要がありますが、次の理由でコンパイルプロセスが失敗します。
mod_auth_dbm.c:77:18: fatal error: ndbm.h: File or directory not found
このndbm.hファイルはどこにありますか?
答え1
apt-file
Ubuntuには、特定のファイルを含むパッケージを見つけることができるパッケージがあります。あなたはそれをインストールする必要があります
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.h
ndbm.h
gdbm-ndbm.h
gdbm.h
dbm.h
gdbm-ndbm.h
私はこれが他のパッケージとの競合を避けるためのものだと思いますが、これは悪い解決策です。
この種の問題を解決する1つの方法(特にシステムディレクトリを変更する権限がない場合)は、compatという独自のディレクトリを作成してからのリンクを入れてから、コンパイラにcompat/ndbm.h
compat/usr/include/gdbm-ndbm.h
ディレクトリを検索するように指示することです。 (-Icompat
)。その後、システムライブラリでファイルが見つからない場合は、自分のディレクトリで正しい名前を見つけます。
答え4
Debian 10 および Ubuntu 18.04 (おそらく以前のバージョンですが、このパッケージでサポートされている最も古いバージョン) 以降、関連ファイルは以下で使用できます。libgdbm-compat-dev
:
apt install libgdbm-compat-dev