Construisez libelektra en ayant des fichiers de développement gpgme. ( gpgme-devel
sur fedora)
j'ai utilisé
cmake -DBUILD_DOCUMENTATION=ON -DBINDINGS="ALL" -DBUILD_SHARED=ON -DBUILD_STATIC=ON -DBUILD_FULL=ON -DENABLE_COVERAGE=OFF -DENABLE_OPTIMIZATIONS=ON -DENABLE_DEBUG=ON -DENABLE_LOGGER=OFF -DBUILD_STATIC=ON -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" -DKDB_DB_SYSTEM="$SYSTEM_DIR" DCMAKE_INSTALL_PREFIX=./releaseInstallDir -DPLUGINS="ALL" -DTOOLS="ALL" ..
mais tout n'est pas pertinent pour le problĂšme.
make run_all
Test #215: testshell_markdown_tutorial_crypto ........... Passed 2.58 sec
Semble qu'il y a un problÚme avec / tmp sur tmpfs ou similaire? Je reçois le problÚme sur fedora et aussi sur debian buster (dans docker).
249/262 Test #215: testshell_markdown_tutorial_crypto ...........***Failed 2.58 sec
Input: /home/mpranj/workspace/libelektra/doc/tutorials/crypto.md
kdb mount test.ini user/tests ini
kdb set user/tests/password 1234
kdb file user/tests/password | xargs cat
kdb rm user/tests/password
kdb umount user/tests
kdb mount test.ini user/tests fcrypt "encrypt/key=$(kdb gen-gpg-testkey)" ini
kdb set user/tests/password 1234
ERROR - RET:
Return value â5â does not match â0â
kdb file user/tests/password | xargs cat
ERROR - RET:
Return value â123â does not match â0â
kdb rm user/tests/password
ERROR - RET:
Return value â11â does not match â0â
kdb umount user/tests
kdb mount test.ini user/tests fcrypt "sign/key=$(kdb gen-gpg-testkey)" ini
kdb set user/tests/password 1234
ERROR - RET:
Return value â5â does not match â0â
kdb file user/tests/password | xargs cat
ERROR - RET:
Return value â123â does not match â0â
kdb rm user/tests/password
ERROR - RET:
Return value â11â does not match â0â
kdb umount user/tests
kdb mount test.ini user/tests fcrypt "sign/key=$(kdb gen-gpg-testkey),encrypt/key=$(kdb gen-gpg-testkey)" ini
kdb set user/tests/password 1234
ERROR - RET:
Return value â5â does not match â0â
kdb file user/tests/password | xargs cat
ERROR - RET:
Return value â123â does not match â0â
kdb rm user/tests/password
ERROR - RET:
Return value â11â does not match â0â
kdb umount user/tests
kdb mount test.ini user/tests crypto_gcrypt "crypto/key=$(kdb gen-gpg-testkey)" base64 ini
kdb meta-set user/tests/password crypto/encrypt 1
kdb set user/tests/password 1234
kdb set user/tests/unencrypted "I am not encrypted"
kdb file user/tests/password | xargs cat
kdb meta-set user/tests/password crypto/encrypt 0
kdb file user/tests/password | xargs cat
kdb rm user/tests/unencrypted
kdb rm user/tests/password
kdb umount user/tests
shell_recorder /tmp/tmp.FLYIzi6Q4K RESULTS: 31 test(s) done 9 error(s).
ââ Protocol ââââââââââââââââââââââââââââââââââââââââââââââââââââ
CMD: kdb mount test.ini user/tests ini
RET: 0
CMD: kdb set user/tests/password 1234
RET: 0
STDOUT: Create a new key user/tests/password with string "1234"
CMD: kdb file user/tests/password | xargs cat
RET: 0
STDOUT: password=1234
CMD: kdb rm user/tests/password
RET: 0
CMD: kdb umount user/tests
RET: 0
CMD: kdb mount test.ini user/tests fcrypt "encrypt/key=$(kdb gen-gpg-testkey)" ini
RET: 0
CMD: kdb set user/tests/password 1234
RET: 5
=== FAILED return value does not match expected pattern 0
STDERR: Sorry, module fcrypt issued the error C01100:
Resource: Renaming file /tmp/test.ini.2110573:1574783987.412609.tmpZJttxQ to /home/mpranj/.config/test.ini.2110573:1574783987.412609.tmp failed. Reason: Invalid cross-device link
ERROR: C01100
CMD: kdb file user/tests/password | xargs cat
RET: 123
=== FAILED return value does not match expected pattern 0
STDERR: cat: /home/mpranj/.config/test.ini: No such file or directory
CMD: kdb rm user/tests/password
RET: 11
=== FAILED return value does not match expected pattern 0
STDERR: Did not find the key
CMD: kdb umount user/tests
RET: 0
CMD: kdb mount test.ini user/tests fcrypt "sign/key=$(kdb gen-gpg-testkey)" ini
RET: 0
CMD: kdb set user/tests/password 1234
RET: 5
=== FAILED return value does not match expected pattern 0
STDERR: Sorry, module fcrypt issued the error C01100:
Resource: Renaming file /tmp/test.ini.2110783:1574783987.564306.tmpRJuvgG to /home/mpranj/.config/test.ini.2110783:1574783987.564306.tmp failed. Reason: Invalid cross-device link
ERROR: C01100
CMD: kdb file user/tests/password | xargs cat
RET: 123
=== FAILED return value does not match expected pattern 0
STDERR: cat: /home/mpranj/.config/test.ini: No such file or directory
CMD: kdb rm user/tests/password
RET: 11
=== FAILED return value does not match expected pattern 0
STDERR: Did not find the key
CMD: kdb umount user/tests
RET: 0
CMD: kdb mount test.ini user/tests fcrypt "sign/key=$(kdb gen-gpg-testkey),encrypt/key=$(kdb gen-gpg-testkey)" ini
RET: 0
CMD: kdb set user/tests/password 1234
RET: 5
=== FAILED return value does not match expected pattern 0
STDERR: Sorry, module fcrypt issued the error C01100:
Resource: Renaming file /tmp/test.ini.2111010:1574783987.747497.tmpti3bSR to /home/mpranj/.config/test.ini.2111010:1574783987.747497.tmp failed. Reason: Invalid cross-device link
ERROR: C01100
CMD: kdb file user/tests/password | xargs cat
RET: 123
=== FAILED return value does not match expected pattern 0
STDERR: cat: /home/mpranj/.config/test.ini: No such file or directory
CMD: kdb rm user/tests/password
RET: 11
=== FAILED return value does not match expected pattern 0
STDERR: Did not find the key
CMD: kdb umount user/tests
RET: 0
CMD: kdb mount test.ini user/tests crypto_gcrypt "crypto/key=$(kdb gen-gpg-testkey)" base64 ini
RET: 0
CMD: kdb meta-set user/tests/password crypto/encrypt 1
RET: 0
CMD: kdb set user/tests/password 1234
RET: 0
STDOUT: Set string to "1234"
CMD: kdb set user/tests/unencrypted "I am not encrypted"
RET: 0
STDOUT: Create a new key user/tests/unencrypted with string "I am not encrypted"
CMD: kdb file user/tests/password | xargs cat
RET: 0
STDOUT: unencrypted=I am not encrypted
#<strong i="19">@META</strong> crypto/encrypt = 1
password=@BASE64IyFjcnlwdG8wMBEAAACCBjEzmVhqufXSsgK4VPRDUC9GyQxBhocVbgZwimonK+xHaRCSX/blNDSVdIoSRg0n
CMD: kdb meta-set user/tests/password crypto/encrypt 0
RET: 0
CMD: kdb file user/tests/password | xargs cat
RET: 0
STDOUT: unencrypted=I am not encrypted
#<strong i="20">@META</strong> crypto/encrypt = 0
password=1234
CMD: kdb rm user/tests/unencrypted
RET: 0
CMD: kdb rm user/tests/password
RET: 0
CMD: kdb umount user/tests
RET: 0
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
@ markus2330 cela réussit sur le serveur de compilation. Est-ce un spectacle pour vous? Cela serait reflété dans les journaux de la version ( kdb run_all -v > ~elektra/$VERSION/run_all 2>&1
).
EDIT: Je peux essayer de faire cette partie sur a7 / v2 car cela Ă©choue peut-ĂȘtre uniquement dans mon scĂ©nario avec fedora comme hĂŽte (et debian uniquement dans docker).
Non, ce n'est certainement pas un spectacle. TrÚs probablement, c'est simplement parce qu'un fichier temporaire est toujours là d'une exécution précédente ou # 2957 n'est pas complÚtement corrigé aprÚs tout.
Espérons que @ petermax2 a le temps de le réparer avant la version 0.9.2: wink:
@mpranj avez-vous besoin d'aide avec les notes de version ou autre chose?
Je ne peux pas reproduire le problÚme lors de la construction de 2bc994ae8b3f3a04396303ece106ea563764e490 à partir de zéro en utilisant votre commande cmake d'en haut.
Start 188: testshell_markdown_tutorial_crypto
222/235 Test #188: testshell_markdown_tutorial_crypto ........... Passed 3.16 sec
Peut-ĂȘtre que votre rĂ©pertoire de construction est cassĂ©. Pourriez-vous s'il vous plaĂźt essayer de compiler et de tester avec un nouveau rĂ©pertoire de construction (vide)?
@ petermax2 merci de l'avoir vérifié si rapidement. J'ai essayé plusieurs fois sur mon systÚme hÎte (fedora) et aussi sur un conteneur docker debian buster. J'ai également nettoyé le répertoire de construction plusieurs fois.
Il est toujours possible que ce soit juste un problÚme de mon cÎté. Je vérifierai à nouveau plus tard!
Hm Ă©trange! Je pense que j'ai utilisĂ© hier un conteneur Debian: stable pour la construction et les tests. Je peux rĂ©essayer avec Fedora dans la soirĂ©e. Pour le moment, je n'ai pas beaucoup de temps pour le dĂ©pannage mais je vais jeter un coup d'Ćil rapide.
Le problĂšme est reproductible sous Fedora.
The following tests FAILED:
41 - testshell_markdown_base64 (Failed)
56 - testshell_markdown_csvstorage (Failed)
76 - testshell_markdown_iconv (Failed)
78 - testshell_markdown_ini (Failed)
93 - testshell_markdown_mini (Failed)
116 - testmod_resolver (Failed)
181 - testshell_markdown_tutorial_crypto (Failed)
Ce n'est peut-ĂȘtre pas un problĂšme spĂ©cifique au didacticiel cryptographique. Je dois enquĂȘter.
kdb gen-gpg-testkey
est introuvable. Ce problÚme est lié à # 3246 (KDB_EXEC_PATH).
EDIT: L'analyse n'est valable que pour testshell_markdown_tutorial_crypto
. Je n'ai pas encore vérifié les autres tests.
Merci d'avoir jetĂ© un Ćil Ă ce numĂ©ro!
Je n'ai pas vu les autres tests Ă©chouer tbh. Etes-vous sĂ»r que c'est le mĂȘme problĂšme? Je n'ai mĂȘme pas travaillĂ© avec le kdb installĂ©, j'ai juste lancĂ© ctest avec make run_all.
à long terme, nous ajouterons également des images de docker fedora (# 3227), pour attraper quelque chose comme ça plus tÎt.
Etes-vous sĂ»r que c'est le mĂȘme problĂšme?
Non, probablement plusieurs problÚmes différents.
Ă long terme, nous ajouterons Ă©galement des images de docker fedora
TrÚs bonne idée!
J'ai édité mon article d'avant pour clarifier ce que je voulais dire avec mon analyse.
Le problÚme n'est pas isolé de ma machine. Le test échoue car l'appel de rename () suivant échoue:
https://github.com/ElektraInitiative/libelektra/blob/263cbe69686a9f087204a7f3660b007d1de22da2/src/plugins/fcrypt/fcrypt.c#L231
La raison en est que / tmp est un point de montage sĂ©parĂ© sur Fedora par dĂ©faut, ce qui n'Ă©tait pas le cas pour Debian. Ainsi, le fichier ne peut pas ĂȘtre renommĂ© sur diffĂ©rents points de montage.
J'ai vĂ©rifiĂ© que c'Ă©tait bien le problĂšme en appliquant un patch (trĂšs sale). Je proposerais de le garder cohĂ©rent avec l'implĂ©mentation du rĂ©solveur et de placer le fichier temporaire dans le mĂȘme rĂ©pertoire que le fichier d'origine.
@ petermax2 qu'en pensez-vous et auriez-vous le temps de le réparer avec un correctif approprié?
Le rĂ©pertoire tmp utilisĂ© par fcrypt peut ĂȘtre dĂ©fini via la configuration du plugin.
fcrypt utilise l'option de configuration fcrypt / tmpdir pour générer des chemins pour les fichiers temporaires pendant le chiffrement et le déchiffrement. Si aucune option de configuration de ce type n'est fournie, fcrypt essaiera d'utiliser la variable d'environnement TMPDIR. Si TMPDIR n'est pas défini dans l'environnement, / tmp est utilisé comme répertoire par défaut.
(_Source_: Documentation du plugin )
Le moyen le plus simple d'attĂ©nuer les tĂąches de construction de type Fedora serait d'utiliser un autre rĂ©pertoire. Sur le serveur de build, le rĂ©pertoire de build local peut ĂȘtre utilisĂ©. Qu'est-ce que tu penses?
@ petermax2 qu'en pensez-vous et auriez-vous le temps de le réparer avec un correctif approprié?
Je peux allouer du temps libre le week-end, mais qu'avez-vous à l'esprit comme solution appropriée?
Je peux allouer du temps libre le week-end, mais qu'avez-vous à l'esprit comme solution appropriée?
Pas besoin de sur-concevoir quoi que ce soit. Comme je l'ai suggĂ©rĂ©, je mettrais le fichier temporaire dans le mĂȘme rĂ©pertoire que le fichier cible. C'est ainsi que resolver
fait lors de la validation des modifications, donc ce serait un peu cohérent.
Je suis Ă©galement trĂšs bien avec la configuration d'un TMPDIR diffĂ©rent pour les versions. Je peux mettre en Ćuvre ce changement moi-mĂȘme.
Nous suivrons tout ce que vous suggérez ici.
De renommer docu :
[EXDEV]
[CX] [Option Start] The links named by new and old are on different file systems and the implementation does not support links between file systems. [Option End]
Edit: Ă©choue avec sudo avec la mĂȘme erreur:
213: CMD: kdb set user/tests/password 1234
213: RET: 5
213: === FAILED return value does not match expected pattern 0
213: STDERR: Sorry, module fcrypt issued the error C01100:
213: Resource: Renaming file /tmp/test.ini.571145:1586371945.946855.tmpHdGEMt to /root/.config/test.ini.571145:1586371945.946855.tmp failed. Reason: Invalid cross-device link
213: ERROR: C01100
Une solution simpliste serait de remplacer l'opération rename
par une copie + supprimer.
Je vais simplement configurer un TMPDIR différent explicitement pour les versions. Si le problÚme se reproduit sur les systÚmes cibles, nous pouvons rouvrir et trouver une meilleure solution.
Ce problĂšme pourrait survenir plus souvent, je pense. Nous recommandons mĂȘme dans la documentation de fcrypt de remonter /tmp
sur un disque RAM. Nous vous recommandons donc de déclencher cette erreur immédiatement.
Je vais essayer de fournir une solution appropriée.
Je vais simplement configurer un TMPDIR différent explicitement pour les versions. Si le problÚme se reproduit sur les systÚmes cibles, nous pouvons rouvrir et trouver une meilleure solution.
C'est Ă©galement une solution de contournement pour les serveurs de build.
Merci beaucoup pour votre recherche!
Une solution simpliste serait de remplacer l'opération de renommage par une copie + suppression.
Pas pour remplacer le code mais pour le faire si le changement de nom échoue. (Et pour déchiqueter également le fichier source dans ce cas.) Ensuite, les personnes sans disque RAM sur / tmp ont de la vitesse et les personnes avec un disque RAM sur / tmp ont plus de sécurité.
Commentaire le plus utile
Ce problĂšme pourrait survenir plus souvent, je pense. Nous recommandons mĂȘme dans la documentation de fcrypt de remonter
/tmp
sur un disque RAM. Nous vous recommandons donc de déclencher cette erreur immédiatement.Je vais essayer de fournir une solution appropriée.
C'est Ă©galement une solution de contournement pour les serveurs de build.