##

##

次の手順に従って、ソースからgpgme-1.18をコンパイルしようとしています。https://linuxfromscratch.org/blfs/view/systemd/postlfs/gpgme.html

次のエラーが原因でコンパイルが失敗します。

Making all in python
make[2]: Entering directory '/home/brad_b82/gpgme-1.18.0/lang/python'
Making all in .
make[3]: Entering directory '/home/brad_b82/gpgme-1.18.0/lang/python'
set -e ; for PYTHON in /usr/bin/python3.10; do \
  CPP="gcc -E" \
  CFLAGS="-g -O2 -Wall -Wcast-align -Wshadow -Wstrict-prototypes -Wno-format-y2k -Wno-missing-field-initializers -Wno-sign-compare -Wno-format-zero-length -Wno-format-truncation -Wno-sizeof-pointer-div" \
  srcdir="." \
  top_builddir="../.." \
    $PYTHON setup.py build --verbose --build-base="$(basename "${PYTHON}")-gpg" ; \
done
running build
Using gpgme.h from ../../src/gpgme.h
Please use --libdir=LIBDIR option or set PKG_CONFIG_LIBDIR
Or set PKG_CONFIG_PATH
Could not find gpg-error-config.  Please install the libgpg-error development package.
make[3]: *** [Makefile:758: all-local] Error 1
make[3]: Leaving directory '/home/brad_b82/gpgme-1.18.0/lang/python'
make[2]: *** [Makefile:475: all-recursive] Error 1
make[2]: Leaving directory '/home/brad_b82/gpgme-1.18.0/lang/python'
make[1]: *** [Makefile:460: all-recursive] Error 1
make[1]: Leaving directory '/home/brad_b82/gpgme-1.18.0/lang'
make: *** [Makefile:538: all-recursive] Error 1

コンピュータは嘘をつく!以前は、構成プロセス中にスクリプトでgpg-error-configを表示できました。

checking for gpg-error-config... /usr/bin/gpg-error-config
checking for gpgrt-config... /usr/bin/gpgrt-config
configure: Use gpgrt-config with /usr/lib as gpg-error-config
checking for GPG Error - version >= 1.36... yes (1.46)
configure: Use gpgrt-config as libassuan-config

ルートの場所を確認できます。

brad_b82 [ ~ ]$ which gpg-error-config
/usr/bin/gpg-error-config
brad_b82 [ ~ ]$ 

gpg-error-configはシンボリックリンクです:

brad_b82 [ ~ ]$ file /usr/bin/gpg-error-config 
/usr/bin/gpg-error-config: symbolic link to gpgrt-config
brad_b82 [ ~ ]$ 

gpg-error-configを実行すると、次の結果が表示されます。

brad_b82 [ ~ ]$ gpg-error-config
Please use --libdir=LIBDIR option or set PKG_CONFIG_LIBDIR
Or set PKG_CONFIG_PATH
brad_b82 [ ~ ]$

私の問題をどこで解決すべきかわかりません。どんな助けでも大変感謝します!

##

Brunsonに関する編集#1

libgpg-errorの場所を確認しました。そのため、
同じライブラリを/usr/share/libgpg-error/にコピーしましたが、ドキュメントによると、この場所はデフォルトの場所です。

Making all in python
make[2]: Entering directory '/home/brad_b82/gpgme-1.18.0/build1/build2/lang/python'
Making all in .
make[3]: Entering directory '/home/brad_b82/gpgme-1.18.0/build1/build2/lang/python'
ln -sf "../../../../src/data.h" .
ln -sf "../../conf/config.h" .
ln -sf "../../../../lang/python/src" gpg
touch copystamp
set -e ; for PYTHON in /usr/bin/python3.10; do \
  CPP="gcc -E" \
  CFLAGS="-g -O2 -Wall -Wcast-align -Wshadow -Wstrict-prototypes -Wno-format-y2k -Wno-missing-field-initializers -Wno-sign-compare -Wno-format-zero-length -Wno-format-truncation -Wno-sizeof-pointer-div" \
  srcdir="../../../../lang/python" \
  top_builddir="../.." \
    $PYTHON setup.py build --verbose --build-base="$(basename "${PYTHON}")-gpg" ; \
done
running build
Using gpgme.h from ../../src/gpgme.h
Please use --libdir=LIBDIR option or set PKG_CONFIG_LIBDIR
Or set PKG_CONFIG_PATH
Could not find gpg-error-config.  Please install the libgpg-error development package.
make[3]: *** [Makefile:758: all-local] Error 1
make[3]: Leaving directory '/home/brad_b82/gpgme-1.18.0/build1/build2/lang/python'
make[2]: *** [Makefile:475: all-recursive] Error 1
make[2]: Leaving directory '/home/brad_b82/gpgme-1.18.0/build1/build2/lang/python'
make[1]: *** [Makefile:460: all-recursive] Error 1
make[1]: Leaving directory '/home/brad_b82/gpgme-1.18.0/build1/build2/lang'
make: *** [Makefile:538: all-recursive] Error 1
brad_b82 [ ~/gpgme-1.18.0/build1/build2 ]$ ls /usr/lib/ | grep gpg
libgpg-error.so
libgpg-error.so.0
libgpg-error.so.0.33.1
brad_b82 [ ~/gpgme-1.18.0/build1/build2 ]$ ls /usr/share/libgpg-error/
errorref.txt  libgpg-error.so  libgpg-error.so.0  libgpg-error.so.0.33.1
brad_b82 [ ~/gpgme-1.18.0/build1/build2 ]$ 

新しい点を指摘したい。 gpgmeバインディングの「cl」と「cpp」の部分は正常にコンパイルされているようです。 Pythonバインディングをコンパイルしようとするまでブロックされます。

また、Python部分から出力されたすべての行を読み取ろうとしましたが、奇妙なことがわかりました...../../src/gpgme.h で gpgme.h を使用します。

私のディレクトリは〜/gpgme-1.18.0で、拡張後は/home/brad_b82/gpgme-1.18.0なので、そのようなパスはありません。

この問題を解決するのに十分な知識がないので、単に試してみることにしました。

cd ~
rm -Rf gpgme-1.18.0
tar -xvf gpgme-1.18.0.tar.bz2
cd gpgme-1.18.0
mkdir build1
cd build1
mkdir build2
cd build2
../../configure --prefix=/usr --libdir=/usr/lib --disable-gpg-test

私の考え方は今、../../src/gpgme.hが実際に存在することです。しかし、まだ失敗しました。はい、追加せずに設定スクリプトにまったく同じパスが表示されていても、基本を処理するために--libdir = / usr / libを含めました。

ベストアンサー1

この質問に答えて閉じる必要があります...

linuxfromscratch開発者は最近、これらの問題を解決するためにgpgmeパッチをリリースしました。

私はプログラマーではありませんが、存在しないディレクトリからスクリプトをインポートしようとしているスクリプトを見るときに、少なくとも正しい方向に行っていることは確かです。

問題が解決され、ケースが終了しました。

おすすめ記事