이전 Apache 버전 1.3을 컴파일해야 하는데 다음과 같은 이유로 컴파일 프로세스가 실패합니다.
mod_auth_dbm.c:77:18: fatal error: ndbm.h: File or directory not found
이 ndbm.h 파일은 어디에 있습니까?
답변1
apt-file
우분투에는 특정 파일이 포함된 패키지를 찾을 수 있는 패키지가 있습니다 . 당신은 그것을 설치해야합니다
sudo apt-get install apt-file
캐시 새로고침
apt-file update
그런 다음 필요한 패키지를 검색할 수 있습니다.
apt-file search ndbm.h
오직탄드라해당 이름의 파일이 포함된 패키지입니다.
libgdbm-dev에는 /usr/include/gdbm-ndbm.h도 포함되어 있습니다. 어쩌면 이것이 당신에게 필요한 것일 수도 있습니다. 컴파일을 시도할 수 있습니다.
추신:찾다우분투 웹사이트에서.
답변2
여기 파일(Fedora 18)은 에 속하며 gdbm-devel
이를 포함하는 Ubuntu 패키지의 이름은 유사하게 지정해야 합니다. 소스의 종속성을 확인하세요. 각 종속성에 해당하는 일련의 패키지가 필요할 수 있습니다 -devel
.
오래된 아파치가 필요한 이유는 무엇이며 알려진 취약점이 있습니까? 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
나는 이것이 다른 패키지와의 충돌을 피하기 위한 것이라고 생각하지만 이는 나쁜 해결책입니다.
이런 종류의 문제를 해결하는 한 가지 방법(특히 시스템 디렉터리를 수정할 권한이 없는 경우)은 compat라는 자신만의 디렉터리를 만들고 에서 까지의 링크를 넣은 compat/ndbm.h
다음 /usr/include/gdbm-ndbm.h
컴파일러에게 compat 디렉터리를 검색하도록 지시하는 것입니다. ( -Icompat
). 그런 다음 시스템 라이브러리에서 파일을 찾을 수 없으면 자신의 디렉터리에서 올바른 이름을 찾습니다.
답변4
Debian 10 및 Ubuntu 18.04(아마도 이전 버전이지만 이 패키지에서 지원하는 가장 오래된 버전)부터 관련 파일은 다음에서 사용할 수 있습니다.libgdbm-compat-dev
:
apt install libgdbm-compat-dev