web-dev-qa-db-ja.com

予期されたディレクトリにないヘッダーファイルへのソフトリンクを作成する

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

ソースからアスタリスクをインストールしようとしていますが、。/ configureスクリプトを実行すると、次のエラーが発生します。

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)

ただし、すでに64ビットバージョンのuuidと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

だから私はそれがヘッダーファイルを探していると思いますが、それを見つけることができません。 uuid /uuid.hのユーザビリティをチェックしています...いいえ

locate uuid.hを実行すると、次のディレクトリにuuid.hが表示されます。

/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

そのため、問題を修正するために、新しいディレクトリ/ usr/include/uuidを作成し、そこにそのuuid.hへのソフトリンクを作成しました。

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

今は動作します:

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

私の質問は、ソフトリンクを作成して、このようなインストール済みのヘッダーファイルをいじっても大丈夫ですか?ソフトリンクを作成するためにrootアクセスが必要なため、何かが壊れた場合に備えて常に心配しています。そして、これらのソフトリンクを作成する必要のない別の解決策がたくさんあります。

5
ant2009

私は一般的に、このようにライブラリを含めることを操作することをお勧めしません。ファイルに同じような名前が付けられているからといって、それが探している正しいヘッダーファイルであるとは限りません。

ちなみに、あなたはこのパッケージを探しています。

$ Sudo yum install libuuid libuuid-devl

私がこれを見つけた方法は、Fedora/CentOS/RHELシステムで不足しているファイルを探すことを常にお勧めする方法です。

$ 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
..
5
slm

将来のバージョンのuuidが同じ場所にuuid.hのインストールを開始し、uuid.hの存在をテストして、すでにインストールされているかどうかを確認する可能性があります。それ以外に、必要な数の追加リンクを作成しても悪影響が生じる理由はありません。

多くの場合、1つのヘッダーファイルをリンクするだけではこのような問題を修正できず、他の問題が発生する可能性があります。プログラムがuuid/uuid.hを使用するように設定されている間、uuidディレクトリ内にも使用できるファイルがさらにあるはずであり、プログラムは/ usr内のファイルと同じ名前の/ usr/include内のファイルを使用することになります。/include/uuidですが、バグを引き起こす微妙な違いがあります。

これを修正する適切な方法は、失敗したプロジェクトを調整して、必要なファイルの場所を認識し、開発者がすべての適切なファイルが使用されていることを確認できるようにすることです。プロジェクトのバグトラッカーを検索して、他の誰かが同じ問題を報告していないかどうかを確認し、報告していない場合は、問題を調査して適切に解決できるようにセットアップの詳細を送信します。

また、uuidが正しくインストールされていないことが問題であると返信し、uuidプロジェクトまたはuuidのFedoraパッケージのメンテナに問題を報告するように依頼する場合もあります。

0
sambler