우분투: ndbm.h를 찾을 수 없습니다

우분투: ndbm.h를 찾을 수 없습니다

이전 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.hndbm.hgdbm-ndbm.hgdbm.hdbm.hgdbm-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

관련 정보