Libelektra: 测试在某些环境(debian软件包)中表现异常

创建于 2018-05-11  ·  35评论  ·  资料来源: ElektraInitiative/libelektra

在bc804c207df391c339d880d3487ea3c16eb4ee4e之前,在某些环境下构建debian软件包时测试失败:

  • testmod_blockresolver
  • testmod_crypto_openssl
  • testmod_crypto_gcrypt
  • testmod_crypto_botan
  • testmod_fcrypt

编辑标记:您还可以通过操作HOME和TMPDIR来重现blockresolver和fcrypt问题。 无需构建软件包。

错误日志

块解析器

[package/stretch]  42/118 Test  #48: testmod_blockresolver ............***Failed    0.00 sec
[package/stretch] BLOCKRESOLVER     TESTS
[package/stretch] ==================
[package/stretch] 
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/blockresolver/testmod_blockresolver.c:70: error in test_BlockresolverWrite: blockresolver->kdbSet failed
[package/stretch] Compare <key = only the inside has changed
[package/stretch] >, with <key = inside block
[package/stretch] >
[package/stretch] in file /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/blockresolver/blockresolver/compare.block, line 5.
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/tests/cframework/tests.c:157: error in compare_line_files: comparing lines failed
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/blockresolver/testmod_blockresolver.c:72: error in test_BlockresolverWrite: files do not match as expected
[package/stretch] 
[package/stretch] testmod_blockresolver Results: 15 Tests done — 3 errors.

crypto_openssl

[package/stretch]  48/118 Test  #60: testmod_crypto_openssl ...........***Failed    5.32 sec
[package/stretch] CYPTO        TESTS
[package/stretch] ==================
[package/stretch] 
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/crypto/test_internals.h:263: error in test_gpg: failed to install the GPG test key
[package/stretch] 
[package/stretch] crypto_openssl Results: 65 Tests done — 1 error.

crypto_gcrypt

[package/stretch]  49/118 Test  #61: testmod_crypto_gcrypt ............***Failed    5.18 sec
[package/stretch] CYPTO        TESTS
[package/stretch] ==================
[package/stretch] 
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/crypto/test_internals.h:263: error in test_gpg: failed to install the GPG test key

crypto_botan

[package/stretch]  50/118 Test  #62: testmod_crypto_botan .............***Failed    5.41 sec
[package/stretch] CYPTO        TESTS
[package/stretch] ==================
[package/stretch] 
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/crypto/test_internals.h:263: error in test_gpg: failed to install the GPG test key

加密

[package/stretch]  57/118 Test  #73: testmod_fcrypt ...................***Failed   15.03 sec
[package/stretch] FCRYPT       TESTS
[package/stretch] ==================
[package/stretch] 
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/fcrypt/testmod_fcrypt.c:159: error in test_gpg: failed to install the GPG test key
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/fcrypt/testmod_fcrypt.c:187: error in test_file_crypto_operations: kdb set failed
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/fcrypt/testmod_fcrypt.c:188: error in test_file_crypto_operations: file content did not change during encryption
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/fcrypt/testmod_fcrypt.c:191: error in test_file_crypto_operations: kdb get (pregetstorage) failed
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/fcrypt/testmod_fcrypt.c:195: error in test_file_crypto_operations: kdb get (postgetstorage) failed
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/fcrypt/testmod_fcrypt.c:196: error in test_file_crypto_operations: postgetstorage did not encrypt the file again
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/fcrypt/testmod_fcrypt.c:231: error in test_file_signature_operations: kdb set failed
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/fcrypt/testmod_fcrypt.c:232: error in test_file_signature_operations: file content did not change during encryption
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/fcrypt/testmod_fcrypt.c:235: error in test_file_signature_operations: kdb get failed
[package/stretch] 

讨论

在#1965中,我们进行了一些错误查找讨论,最终将其指向https://github.com/ElektraInitiative/libelektra/commit/356317a6ab811f524ebaa1dbf40f19477b966fc1 ,这是导致出现错误的提交。 但是,清洁环境不应使测试合格。
如果测试需要某些环境设置,则应进行设置。

最有用的评论

@ petermax2 Vagrantfile及其复制步骤在#2211中。 我希望这有助于更轻松地调试问题。 也许这实际上只是一个ENV问题。

所有35条评论

感谢您另行报告!

作为副作用https://build.libelektra.org/jenkins/job/elektra-git-buildpackage-jessie/似乎从昨天起又开始工作了...

GPG似乎与已清除的环境有关。 我将尝试将GNUPGHOME变量设置为/tmp 。 GPG依赖此目录(默认值为~/.gnupg/ )来查找其钥匙链。 我认为gpg-agent信息也存储在此目录中。 将所有测试的目录设置为相同目录可能还会解决每次测试运行都产生多个gpg-agents的错误(请参阅#1928)。

是的,我还认为失败的加密测试用例与#1928有关。 似乎gpg在TMPDIR下方使用.gnupg。 (至少您在运行TMPDIR=`pwd`/x ctest --output-on-failure -R fcrypt之后看到一个.gnupg剩余的内容)。

失败的fcrypt测试用例可能显示在处理临时文件中的错误,这也与TMPDIR有关。

似乎gpg在TMPDIR下方使用.gnupg

这是一个错误的假设。 gpg使用〜/ .gnupg作为默认值,因此它与TMPDIR无关,而与HOME相关。

另请注意,将所有测试的GNUPGHOME设置为同一目录可能会影响并行测试的执行。

这是一个错误的假设

您的意思是什么? 我只是说我在TMPDIR中得到一个.gnupg文件夹。

mkdir x && env TMPDIR=`pwd`/x ctest --output-on-failure -R fcrypt; find x
Test project /home/markus/Projekte/Elektra/build
    Start 64: testmod_fcrypt
1/1 Test #64: testmod_fcrypt ...................***Failed    0.02 sec
FCRYPT       TESTS
==================

/home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:187: error in test_file_crypto_operations: kdb set failed
/home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:188: error in test_file_crypto_operations: file content did not change during encryption
/home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:191: error in test_file_crypto_operations: kdb get (pregetstorage) failed
/home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:195: error in test_file_crypto_operations: kdb get (postgetstorage) failed
/home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:196: error in test_file_crypto_operations: postgetstorage did not encrypt the file again
/home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:231: error in test_file_signature_operations: kdb set failed
/home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:232: error in test_file_signature_operations: file content did not change during encryption
/home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:235: error in test_file_signature_operations: kdb get failed

fcrypt Results: 39 Tests done — 8 errors.


0% tests passed, 1 tests failed out of 1

Total Test time (real) =   0.03 sec

The following tests FAILED:
         64 - testmod_fcrypt (Failed)
Errors while running CTest
x
x/elektra-test.qPoz5P
x/elektra-test.qPoz5P/.gnupg
x/elektra-test.qPoz5P/.gnupg/random_seed
x/elektra-test.qPoz5P/.gnupg/trustdb.gpg
x/elektra-test.qPoz5P/.gnupg/pubring.kbx~
x/elektra-test.qPoz5P/.gnupg/pubring.kbx

这是因为tests(ctest?)中的内容将每个测试套件的主目录设置为TMPDIR中的tmpdir。
GPG在HOME中创建文件,但是测试者将HOME设置为TMPDIR / randomdir /。
因此,我的观点是,这不是tmpdir的唯一错误,调试工作不应仅限于此。

我认为为每个测试使用单独的目录是个好主意,这样它们就不会互相影响(并行化),因此,不要认为覆盖gpg目录以共享一个目录是个好主意。

是的我同意。

#1977有意义吗? 还是应该在ctest完全完成之后执行?

或以不同的方式询问:gpg-agent是否可以在单个测试套件的运行中生存下来,还是为每个测试套件重新生成?

@ markus2330如#2040中所述。 我遵循了有关构建Docker映像的说明。 我在docker容器中运行:

# cmake -DBUILD_DOCUMENTATION=OFF -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ ..
# make -j16
# mkdir x
# TMPDIR=`pwd`/x ctest -R crypt .
Test project /elektra/build
    Start 46: testmod_crypto_openssl
1/3 Test #46: testmod_crypto_openssl ...........   Passed    1.32 sec
    Start 47: testmod_crypto_gcrypt
2/3 Test #47: testmod_crypto_gcrypt ............   Passed    1.16 sec
    Start 48: testmod_crypto_botan
3/3 Test #48: testmod_crypto_botan .............   Passed    1.52 sec

100% tests passed, 0 tests failed out of 3

Label Time Summary:
memleak    =   1.16 sec (1 test)

Total Test time (real) =   4.01 sec

因此,(部分)问题是测试用例假定存在TMPDIR。 而且您无法复制它,因为您总是在运行测试之前创建目录:smile:

但是,对我而言,即使存在x,fcrypt仍然会失败(您未运行fcrypt)。 但是带有其他消息:

64: FCRYPT       TESTS
64: ==================
64: 
64: /home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:187: error in test_file_crypto_operations: kdb set failed
64: /home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:188: error in test_file_crypto_operations: file content did not change during encryption
64: /home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:191: error in test_file_crypto_operations: kdb get (pregetstorage) failed
64: /home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:195: error in test_file_crypto_operations: kdb get (postgetstorage) failed
64: /home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:196: error in test_file_crypto_operations: postgetstorage did not encrypt the file again
64: /home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:231: error in test_file_signature_operations: kdb set failed
64: /home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:232: error in test_file_signature_operations: file content did not change during encryption
64: /home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:235: error in test_file_signature_operations: kdb get failed
64: 
64: fcrypt Results: 39 Tests done — 8 errors.
1/1 Test #64: testmod_fcrypt ...................***Failed    0.02 sec

但这在我的容器中有效(我一直在等待很长时间才能删除该行:laughing:)...

jenkins<strong i="6">@924c627f07b8</strong>:/elektra/build$ ctest --output-on-failure -R fcrypt
Test project /elektra/build
    Start 59: testmod_fcrypt
1/1 Test #59: testmod_fcrypt ...................   Passed    1.07 sec

100% tests passed, 0 tests failed out of 1

Total Test time (real) =   1.08 sec
jenkins<strong i="7">@924c627f07b8</strong>:/elektra/build$ TMPDIR=`pwd`/x ctest --output-on-failure -R fcrypt
Test project /elektra/build
    Start 59: testmod_fcrypt
1/1 Test #59: testmod_fcrypt ...................***Failed    0.01 sec
FCRYPT       TESTS
==================

/elektra/tests/cframework/tests.c:80: error in init: mkdtemp failed
/elektra/tests/cframework/tests.c:90: error in init: mkstemp failed
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:159: error in test_gpg: failed to install the GPG test key
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:71: error in writeTestFile: can not write to temporary file
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:187: error in test_file_crypto_operations: kdb set failed
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:99: error in isTestFileCorrect: can not read from temporary file
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:191: error in test_file_crypto_operations: kdb get (pregetstorage) failed
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:99: error in isTestFileCorrect: can not read from temporary file
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:192: error in test_file_crypto_operations: file content could not be restored during decryption
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:195: error in test_file_crypto_operations: kdb get (postgetstorage) failed
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:99: error in isTestFileCorrect: can not read from temporary file
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:71: error in writeTestFile: can not write to temporary file
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:231: error in test_file_signature_operations: kdb set failed
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:99: error in isTestFileCorrect: can not read from temporary file
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:235: error in test_file_signature_operations: kdb get failed
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:80: error in writeFaultySignatureFile: can not write to temporary file

fcrypt Results: 32 Tests done — 16 errors.


0% tests passed, 1 tests failed out of 1

Total Test time (real) =   0.02 sec

The following tests FAILED:
        59 - testmod_fcrypt (Failed)
Errors while running CTest
jenkins<strong i="8">@924c627f07b8</strong>:/elektra/build$ mkdir x
jenkins<strong i="9">@924c627f07b8</strong>:/elektra/build$ TMPDIR=`pwd`/x ctest --output-on-failure -R fcrypt
Test project /elektra/build
    Start 59: testmod_fcrypt
1/1 Test #59: testmod_fcrypt ...................   Passed    1.06 sec

100% tests passed, 0 tests failed out of 1

Total Test time (real) =   1.07 sec
jenkins<strong i="10">@924c627f07b8</strong>:/elektra/build$

一些更有趣的东西:

  • 为什么mkdtemp失败?
  • clean_temp_home显然已经被写入到清理gnupg的东西中。 为什么不起作用?

    • 好像名字改了

  • 即使当TMPDIR中的目录存在时,我的fcrypt也失败了(其他测试通过了)

    • 当未指定TMPDIR fcrypt通过时

好吧...检查一下tests.c的警告,一切都会变得更加清晰...

我正在为此准备PR,这应该可以解决一些问题。

如果有人可以发现fcrypt是否在某处指定了一些硬路径,这可能会导致测试失败,那将是很可爱的。

#2056我正确清理了生成的TMPDIR。 这解决了挥之不去的gpg-agent问题。
它还解决了未激活mkdtemp的较新glibc版本的问题。

但是,一旦手动设置了TMPDIR,fcrypt测试仍然会失败,我认为某个地方的代码中可能存在真正的错误。

jenkins<strong i="8">@0585a86e6f5f</strong>:~/workspace/build$ pidof gpg-agent
jenkins<strong i="9">@0585a86e6f5f</strong>:~/workspace/build$ TMPDIR=`pwd`/tmp ctest --output-on-failure -R crypt
Test project /home/jenkins/workspace/build
    Start 51: testmod_crypto_openssl
1/4 Test #51: testmod_crypto_openssl ...........   Passed    1.58 sec
    Start 52: testmod_crypto_gcrypt
2/4 Test #52: testmod_crypto_gcrypt ............   Passed    1.34 sec
    Start 53: testmod_crypto_botan
3/4 Test #53: testmod_crypto_botan .............   Passed    1.83 sec
    Start 64: testmod_fcrypt
4/4 Test #64: testmod_fcrypt ...................***Failed    1.17 sec
FCRYPT       TESTS
==================

/home/jenkins/workspace/src/plugins/fcrypt/testmod_fcrypt.c:187: error in test_file_crypto_operations: kdb set failed
/home/jenkins/workspace/src/plugins/fcrypt/testmod_fcrypt.c:188: error in test_file_crypto_operations: file content did not change during encryption
/home/jenkins/workspace/src/plugins/fcrypt/testmod_fcrypt.c:191: error in test_file_crypto_operations: kdb get (pregetstorage) failed
/home/jenkins/workspace/src/plugins/fcrypt/testmod_fcrypt.c:195: error in test_file_crypto_operations: kdb get (postgetstorage) failed
/home/jenkins/workspace/src/plugins/fcrypt/testmod_fcrypt.c:196: error in test_file_crypto_operations: postgetstorage did not encrypt the file again
/home/jenkins/workspace/src/plugins/fcrypt/testmod_fcrypt.c:231: error in test_file_signature_operations: kdb set failed
/home/jenkins/workspace/src/plugins/fcrypt/testmod_fcrypt.c:232: error in test_file_signature_operations: file content did not change during encryption
/home/jenkins/workspace/src/plugins/fcrypt/testmod_fcrypt.c:235: error in test_file_signature_operations: kdb get failed

fcrypt Results: 39 Tests done — 8 errors.


75% tests passed, 1 tests failed out of 4

Label Time Summary:
memleak    =   1.34 sec (1 test)

Total Test time (real) =   5.98 sec

The following tests FAILED:
     64 - testmod_fcrypt (Failed)
Errors while running CTest
jenkins<strong i="10">@0585a86e6f5f</strong>:~/workspace/build$ pidof gpg-agent
jenkins<strong i="11">@0585a86e6f5f</strong>:~/workspace/build$ ls -l tmp
total 0

但是,一旦手动设置了TMPDIR,fcrypt测试仍然会失败,我认为某个地方的代码中可能存在真正的错误。

你说的对!

getTemporaryFileName fcrypt.c中的getTemporaryFileName不会检查环境。 因此,如果在插件配置中未指定tmpdir ,它将使用/tmp作为默认后备。

我认为正确的优先顺序是:

  1. 插件配置
  2. 环境$TMPDIR
  3. 默认后备广告/tmp

你同意?

ISO / IEC 9945(POSIX):在列表TMPDIR,TMP,TEMP,TEMPDIR中找到的第一个环境变量提供的路径。 如果没有找到,则为“ / tmp”。

由于无论如何我们都在使用mkdtemp(POSIX 2008),因此您可能也可以使用它并摆脱一些代码。

谢谢你的信息! 您是否能够验证#2090中建议的修复程序可以解决构建服务器上的fcrypt测试问题?

如果它在您的系统上使用TMPDIR = dir / that或存在ctest -R fcrypt,则它也应在构建服务器上运行。

现在应该解决此问题。

我同意

测试似乎仍然有些奇怪。 我运行一些master版本主要是为了微调执行程序和并行设置,因为我们不再做超线程了。 在一种情况下,测试突然失败,并再次出现相同的“无法安装密钥”问题:
https://build.libelektra.org/jenkins/blue/organizations/jenkins/libelektra/detail/master/122/pipeline/410

很抱歉在这里堆积,但我也遇到了failed to install the GPG test key错误。 我使用的是流浪汉artful32 vm,并且始终如一地重现这些错误(主分支):

 55/198 Test  #55: testmod_crypto_gcrypt ....................***Failed    0.60 sec
CYPTO        TESTS
==================

/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/crypto/test_internals.h:273: error in test_gpg: failed to install the GPG test key

crypto_gcrypt Results: 65 Tests done — 1 error.
 66/198 Test  #66: testmod_fcrypt ...........................***Failed    0.03 sec
FCRYPT       TESTS
==================

/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/fcrypt/testmod_fcrypt.c:160: error in test_gpg: failed to install the GPG test key
/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/fcrypt/testmod_fcrypt.c:188: error in test_file_crypto_operations: kdb set failed
/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/fcrypt/testmod_fcrypt.c:189: error in test_file_crypto_operations: file content did not change during encryption
/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/fcrypt/testmod_fcrypt.c:192: error in test_file_crypto_operations: kdb get (pregetstorage) failed
/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/fcrypt/testmod_fcrypt.c:196: error in test_file_crypto_operations: kdb get (postgetstorage) failed
/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/fcrypt/testmod_fcrypt.c:197: error in test_file_crypto_operations: postgetstorage did not encrypt the file again
/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/fcrypt/testmod_fcrypt.c:232: error in test_file_signature_operations: kdb set failed
/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/fcrypt/testmod_fcrypt.c:233: error in test_file_signature_operations: file content did not change during encryption
/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/fcrypt/testmod_fcrypt.c:236: error in test_file_signature_operations: kdb get failed

fcrypt Results: 39 Tests done — 9 errors.

如果可以帮助重现错误,我可以通过PR提供vagrantfile。

感谢您的举报! 您能告诉我们您的TMPDIR和HOME吗? 尝试使用env -i复制它。

@ petermax2你有时间看吗?

对于上述错误:
TMPDIR:空
主页: /home/jenkins/workspace/elektra-master-full-artful32/user

至于env -i ,则另一项测试失败:

 54/198 Test  #54: testmod_crypto_openssl ...................***Failed    0.31 sec
CYPTO        TESTS
==================

/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/crypto/test_internals.h:273: error in test_gpg: failed to install the GPG test key

crypto_openssl Results: 65 Tests done — 1 error.

不知道这是否是巧合,但这是该测试第一次失败。

我可以在周末调查。 @mpranj可以给我发个无业游民的文件吗?

@ petermax2 Vagrantfile及其复制步骤在#2211中。 我希望这有助于更轻松地调试问题。 也许这实际上只是一个ENV问题。

测试用例完成后,不会删除$HOMEDIR ,因此gpg-agent保持运行状态,这会引起问题。 如果GNUPGHOME设置为其他目录,则测试用例再次成功。

编辑: $HOMEDIR已正确删除,但gpgagent并未按预期退出。

编辑v2:

vagrant@ubuntu-artful:~/libelektra/build$ gpg --list-key
gpg: directory '/home/vagrant/.gnupg' created
gpg: new configuration file '/home/vagrant/.gnupg/dirmngr.conf' created
gpg: new configuration file '/home/vagrant/.gnupg/gpg.conf' created
gpg: keybox '/home/vagrant/.gnupg/pubring.kbx' created
gpg: /home/vagrant/.gnupg/trustdb.gpg: trustdb created
vagrant@ubuntu-artful:~/libelektra/build$ pgrep agent
3630
vagrant@ubuntu-artful:~/libelektra/build$ rm -rf /home/vagrant/.gnupg
vagrant@ubuntu-artful:~/libelektra/build$ pgrep agent
3630
vagrant@ubuntu-artful:~/libelektra/build$

谢谢您的调查!

有什么概述哪个env vars做什么以及自从gpg代理在删除文件后关闭的情况?

解决此问题的最佳方法是什么?

很抱歉造成延迟,到目前为止,我还没有时间进一步调查。

有什么概述哪个env vars做什么以及自从gpg代理在删除文件后关闭的情况?

我能找到的所有文档是

_(GNUPGHOME)如果使用设置目录而不是“〜/ .gnupg”。_ [1]

解决此问题的最佳方法是什么?

我不知道。 似乎没有单一的解决方案可以解决GnuPG所面临的所有问题。 我曾经尝试保存已启动的GnuPG代理程序的PID,但效果并不理想。

你有什么想法?

资料来源

  • [1] [https://www.gnupg.org/documentation/manuals/gnupg/GPG-Configuration.html](https://www.gnupg.org/documentation/manuals/gnupg/GPG-Configuration.html)

也许我们不应该尝试解决所有可能的问题,而仅支持某些版本的gnupg?

哪些版本的gnupg删除文件后不会自行清理? 它们是否足够相关并仍然支持他们? 也许我们只是为他们禁用了测试?

哪些版本的gnupg删除文件后不会自行清理?

到目前为止,Ubuntu Artful(17.10)的gpg版本是唯一的版本,在删除GNUPGHOME之后,代理不会终止。 我没有在其他版本的gpg中看到此行为。

Ubuntu Artful中的GPG是2.1.15。 在Ubuntu 18.04.1中,使用gpg版本2.2.4。 最新版本是2.2.10。

我们可能会添加一个依赖性说明,要求gpg版本> = 2.2。

如果正确理解发行说明,则在gpg版本2.1.16中实现终止。 请参阅发行说明

编辑:发行说明指出终止仅适用于Linux。 这意味着在其他操作系统上,我们应该遇到相同的问题。 我将在FreeBSD上对其进行测试。

我将在FreeBSD上对其进行测试。

是的,在删除GNUPGHOME之后, gpg-agent仍在运行。

我正在测试另一种解决方案的ATM。 执行gpg-connect-agent KILLAGENT将关闭gpg 2.2.4版中的代理。 如果我们在单元测试完成后使用execv这个命令,则gpg-agent应该关闭。 我将在Linux和FreeBSD下测试该解决方案。 请等待评论或希望的PR!

如果问题再次出现,请重新打开此问题。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

markus2330 picture markus2330  ·  4评论

sanssecours picture sanssecours  ·  3评论

sanssecours picture sanssecours  ·  3评论

mpranj picture mpranj  ·  3评论

markus2330 picture markus2330  ·  3评论