Criando softlinks para arquivos de cabeçalho que não estão no diretório esperado

5
3.12.6-300.fc20.x86_64 #1 SMP Mon Dec 23 16:44:31 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
Fedora 20

Estou tentando instalar asteriscos da fonte e quando executo o script ./configure, recebo o seguinte erro:

checking for uuid_generate_random in -luuid... yes
checking uuid/uuid.h usability... no
checking uuid/uuid.h presence... no
checking for uuid/uuid.h... no
checking for uuid_generate_random in -le2fs-uuid... no
checking for uuid_generate_random... no
configure: error: *** uuid support not found (this typically means the uuid development package is missing)

No entanto, eu já instalei as versões de 64 bits do uuid e uuid-devel

Name        : uuid-devel
Arch        : x86_64
Version     : 1.6.2
Release     : 21.fc20
Size        : 21 k
Repo        : installed   
Name        : uuid
Arch        : x86_64
Version     : 1.6.2
Release     : 21.fc20
Size        : 116 k
Repo        : installed

Então eu acho que está procurando o arquivo de cabeçalho e não consegue encontrá-lo. verificando uuid / uuid.h usabilidade ... não

Quando executo locate uuid.h , posso ver o uuid.h no seguinte diretório:

/usr/include/uuid.h
/usr/include/linux/uuid.h
/usr/src/kernels/3.12.6-300.fc20.x86_64+debug/include/linux/uuid.h
/usr/src/kernels/3.12.6-300.fc20.x86_64+debug/include/uapi/linux/uuid.h
/usr/src/kernels/3.12.7-300.fc20.x86_64+debug/include/linux/uuid.h
/usr/src/kernels/3.12.7-300.fc20.x86_64+debug/include/uapi/linux/uuid.h

Então, ao tentar consertar o problema, criei um novo diretório / usr / include / uuid e criei um link para esse uuid.h lá.

lrwxrwxrwx. 1 root root 9 Jan 15 11:49 uuid.h -> ../uuid.h

Funciona agora:

checking uuid/uuid.h usability... yes
checking uuid/uuid.h presence... yes
checking for uuid/uuid.h... yes

A minha pergunta é, está tudo bem mexer nos arquivos de cabeçalho instalados, criando softlinks? Eu sempre me preocupo caso eu quebre algo, já que você precisa de acesso root para criar o softlink. E muitos há outra solução sem a necessidade de criar esses softlinks.

    
por ant2009 15.01.2014 / 06:00

2 respostas

5

Eu geralmente desencorajaria você de manipular a inclusão de bibliotecas dessa maneira. Só porque um arquivo tem o mesmo nome, não significa que ele seja o arquivo de cabeçalho correto que você está procurando.

Por acaso, você está procurando por este pacote.

$ sudo yum install libuuid libuuid-devl

A maneira como eu encontrei isso é como eu sempre recomendaria procurar por arquivos ausentes em qualquer sistema Fedora / CentOS / RHEL.

Exemplo

$ sudo yum whatprovides "*/uuid/uuid.h"
...
libuuid-devel-2.23.1-3.fc19.i686 : Universally unique ID library
Repo        : fedora
Matched from:
Filename    : /usr/include/uuid/uuid.h



libuuid-devel-2.23.1-3.fc19.x86_64 : Universally unique ID library
Repo        : fedora
Matched from:
Filename    : /usr/include/uuid/uuid.h



libuuid-devel-2.23.2-4.fc19.i686 : Universally unique ID library
Repo        : updates
Matched from:
Filename    : /usr/include/uuid/uuid.h
..
    
por 15.01.2014 / 14:20
0

Existe a possibilidade de uma versão futura do uuid começar a instalar o uuid.h no mesmo local e testar a existência do uuid.h para ver se ele já foi instalado. Além disso, não deve haver nenhuma razão para que a criação de quantos links extras você quiser tenha efeitos negativos.

Geralmente, vincular um arquivo de cabeçalho não é suficiente para corrigir um problema como esse e pode causar outros problemas. Enquanto o programa está configurado para usar uuid / uuid.h, deve haver mais arquivos dentro do diretório uuid que também podem ser usados e o programa pode acabar usando um arquivo em / usr / include que tenha o mesmo nome de um em / usr / include / uuid mas tem diferenças sutis que introduzem erros.

A maneira correta de corrigir isso é ajustar o projeto com falha para que ele saiba onde encontrar os arquivos necessários e os desenvolvedores possam verificar se todos os arquivos corretos foram usados. Pesquise o rastreador de bugs do projeto para verificar se alguém relatou o mesmo problema e, se não enviar os detalhes da sua configuração, para que o problema possa ser analisado e resolvido corretamente.

Eles também podem responder que o problema é que o uuid não está sendo instalado corretamente e pedir que você relate o problema para o projeto uuid ou para os mantenedores do pacote do Fedora para uuid.

    
por 15.01.2014 / 08:32