FS#44445 - "GPGME error: No data" if no SigLevel DatabaseNever + no *.db.sig files

Attached to Project: Pacman
Opened by Mr G A Craig Carey (tangentangle) - Friday, 03 April 2015, 14:15 GMT
Last edited by Andrew Gregory (andrewgregory) - Saturday, 04 April 2015, 01:05 GMT
Task Type Bug Report
Category General
Status Closed
Assigned To No-one
Architecture All
Severity Low
Priority Normal
Reported Version 4.2.1
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

Summary and Info:

Symptoms/problems:
"GPGME error: No data".
Mishandling missing good info from the external downloader.
Incorrect suggestions of corrupted data.

$ pacman -Syu archlinux-keyring {using Manjaro mirrors, wget}
error: GPGME error: No data
error: GPGME error: No data
:: Synchronizing package databases...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 132k 100 132k 0 0 465k 0 --:--:-- --:--:-- --:--:-- 466k
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 169 100 169 0 0 360 0 --:--:-- --:--:-- --:--:-- 360
error: GPGME error: No data
error: failed to update core (invalid or corrupted database (PGP signature))
...
error: GPGME error: No data
error: failed to update extra (invalid or corrupted database (PGP signature))
error: failed to synchronize any databases
error: failed to init transaction (invalid or corrupted database (PGP signature))


"Steps to Reproduce:"

At the time, I was editing pacman.conf (replacing curl with wget) (and
pamac-manager had not been closed when pacman was being run).

How I removed this problem:

* The GPGME error problem immediately vanished when I changed (1) to (2) in
pacman.conf:

(1): SigLevel = Required DatabaseOptional
(2): SigLevel = Optional DatabaseNever

I got that tip from https://bbs.archlinux.org/viewtopic.php?id=133711

| "falconindy" (http://blog.falconindy.com/), Date: 2012-01-17
|
| Re: [Solved] Pacman 4 Looking for <repo>.db.sig files which aren't there?
|
| I can only recommend using the internal downloader.
| "Optional" extends to "DatabaseOptional" which means your downloader will
| attempt to grab the sig file.
| You'll need to add in DatabaseNever to your SigLevel if you want to avoid
| this behavior with an external downloader.

There are no "core.db.sig" GPG identity crypto files.

PS. 2 options:
* XferCommand = /usr/bin/curl %u >| %o
* XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u

Seems like:
* The error code of curl or wget is not being compared with 0
* The html error 404 data is not being matched against a regex pattern
(or etc.) to see if the GPG data is readable
* It is assessed to be GPG data and then libalpm code prints the GPGME error
message. (What is the "ME" for ?).

File ".../src/pacman/lib/libalpm/signing.c" contains this:
_alpm_log(handle, ALPM_LOG_ERROR, _("GPGME error: %s\n"), gpgme_strerror(gpg_err));

A HTML 404 error file arrived here: /var/lib/pacman/sync/core.db.sig


* CC (.nz)
This task depends upon

Closed by  Andrew Gregory (andrewgregory)
Saturday, 04 April 2015, 01:05 GMT
Reason for closing:  Not a bug
Comment by Andrew Gregory (andrewgregory) - Friday, 03 April 2015, 15:02 GMT
The exit status is checked, but you need to use curl's -f option so that it will return non-zero.

Loading...