私はFedoraのさびた環境でlibudevに依存する錆アプリケーションを構築しようとしています。現在、次のようにアプリケーションをコンパイルしようとするとエラーが発生しますcargo build --release
。
error: failed to run custom build command for `libudev-sys v0.1.4`
Caused by:
process didn't exit successfully: `/home/me/myApp/target/release/build/libudev-sys-7d615f10fc24f9b2/build-script-build` (exit status: 101)
--- stdout
cargo:rerun-if-env-changed=LIBUDEV_NO_PKG_CONFIG
cargo:rerun-if-env-changed=PKG_CONFIG
cargo:rerun-if-env-changed=LIBUDEV_STATIC
cargo:rerun-if-env-changed=LIBUDEV_DYNAMIC
cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
cargo:rerun-if-env-changed=PKG_CONFIG_PATH
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
--- stderr
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: "`\"pkg-config\" \"--libs\" \"--cflags\" \"libudev\"` did not exit successfully: exit status: 1\n--- stderr\nPackage libudev was not found in the pkg-config search path.\nPerhaps you should add the directory containing `libudev.pc'\nto the PKG_CONFIG_PATH environment variable\nPackage 'libudev', required by 'virtual:world', not found\n"', /home/me/.cargo/registry/src/github.com-1ecc6299db9ec823/libudev-sys-0.1.4/build.rs:38:41
以前は、Ubuntu(またはRustupの代わりにシステムRust Installを使用するDebianベースのシステム)で上記の操作を実行した後、すべてがうまく機能しましたsudo apt install libudev1 && sudo apt install libudev-dev
。
これまで、私は次のことを試してみました。
提案を見てくださいLibudev.pcが見つかりません、ほとんどの提案は誰かのhomebrew / linuxbrew設定に関するものですが、この質問はRust環境にRustupがインストールされているFedoraについてです。
自分のコンテンツを更新し
PKG_CONFIG_PATH
てコンテンツを確認してくださいPKG_CONFIG
。具体的には次のようになります。- 図書館
yum provides */libudev.pc
の場所を確認してください。Filename : /usr/lib/pkgconfig/libudev.pc
Filename : /usr/lib64/pkgconfig/libudev.pc
PKG_CONFIG_PATH
マイフォルダにlibフォルダを追加します.bashrc
。PKG_CONFIG_PATH=$PATH:/usr/lib/pkgconfig/:/usr/lib64/pkgconfig
- 新しいシェルを起動して実行しましたが、
pkg-config --libs --cflags libudev
まだエラーが発生します。Package libudev was not found in the pkg-config search path. Perhaps you should add the directory containing `libudev.pc' to the PKG_CONFIG_PATH environment variable Package 'libudev', required by 'virtual:world', not found
- 実行中の
pkg-config --variable pc_path pkg-config
プログラム/usr/lib64/pkgconfig:/usr/share/pkgconfig
- 図書館
こうするか悩みましたが、
sudo dnf install libudev
Rustup環境を使っていて迷っていましたが、インストールするとFedoraシステムバージョンのRustもインストールすることになります。
答え1
これはsudo dnf install rust-libudev-devel
問題を解決することができますが、それを行うには重複したRust(Fedoraパッケージ)のインストールも必要になるため、個人的にこの回答には満足しません。
答え2
これによりsudo dnf install libudev-devel
、実際に少なくともsystemd-devel
Fedora 37にインストールすると、他のFedoraパッケージ(および非)を重複してインストールすることなくcargo
問題を解決できます。rust
rustup