Ubuntu: não consegue encontrar ndbm.h

3

Eu preciso compilar uma versão antiga do Apache, 1.3, e o processo de compilação falha porque:

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

Onde está esse arquivo ndbm.h?

    
por Phate 04.03.2013 / 17:56

3 respostas

4

Esse arquivo aqui (Fedora 18) pertence a gdbm-devel , o pacote que o contém para o Ubuntu deve ter o mesmo nome. Verifique as dependências da fonte, você provavelmente precisará de uma faixa de -devel de pacotes correspondentes a cada dependência.

O que você precisa de um apache desatualizado, que além disso conhece vulnerabilidades? Por que o apache da distribuição não funciona? É provavelmente uma ideia muito melhor portar o que requer que o apache avance do que ficar preso na pré-história ...

    
por 04.03.2013 / 18:00
3

No Ubuntu há apt-file package que permite encontrar o pacote que contém o arquivo especificado. Você precisa instalá-lo com

sudo apt-get install apt-file

atualize o cache com

apt-file update

e do que você pode pesquisar o pacote que você precisa com

apt-file search ndbm.h

Existe apenas o pacote tendra , que contém o arquivo com esse nome.

Também libgdbm-dev contém /usr/include/gdbm-ndbm.h. Pode ser o que você precisa. Você pode tentar compilá-lo.

ps. Além disso, você pode usar pesquisa no site do Ubuntu.

    
por 04.03.2013 / 18:44
0

As fontes gdbm colocam os arquivos de cabeçalho em /usr/include/gdbm . Alguns sistemas de empacotamento (por exemplo, Arch Linux) colocam links simbólicos para aqueles (então /usr/include/ndbm.h aponta para /usr/include/gdbm/ndbm.h ) enquanto pelo menos alguns sistemas baseados no Debian omitem o diretório E renomear ndbm.h para gdbm-ndbm.h (então eles têm gdbm.h , dbm.h e gdbm-ndbm.h ).

Suponho que foi para evitar algum conflito com um pacote diferente, mas é uma solução ruim.

Uma maneira de contornar esses problemas (especialmente se você não tiver permissões para modificar os diretórios do sistema) é criar seu próprio diretório, por exemplo, compat, coloque em um link de compat/ndbm.h para /usr/include/gdbm-ndbm.h e, em seguida, diga ao compilador para procurar em seu diretório compat ( -Icompat ). Então, se não encontrar o arquivo nas bibliotecas do sistema, ele encontrará o nome correto em seu próprio diretório.

    
por 17.01.2018 / 04:21