#1002840 ftp.debian.org: repo-source never updates new DEP-11/appstream-data in stable so screenshots fail HTTP 404 in gnome-software #1002840
- Package:
- ftp.debian.org,appstream
- Source:
- appstream ftp.debian.org
- Submitter:
- Jano John Akim Franke
- Date:
- 2022-01-01 21:15:03 UTC
- Severity:
- important
Dear Maintainer, * What led up to the situation? Opening gnome-software showed "Unsere Empfehlungen" (en: recommendation) for applications "Builder". When selected all screenshots fail with "Bildschirmfoto nicht gefunden". Builder is just an example. It also applies to other applications. * What outcome did you expect instead? Screenshots should be displayed. I tracked it down to the usage of the following file which has a date 2021-08-08: 16:48:20:0682 XbSilo compiling /var/lib/app-info/yaml/deb.debian.org_debian_dists_bullseye_main_dep11_Components-amd64.yml.gz:ctime=1640794691.680796:func-id=AddIcons@2:func-id=AppStreamUpgrade2@3:func-id=AddOriginKeyword@1:scope=system:filename=/var/lib/app-info/yaml/deb.debian.org_debian_dists_bullseye_main_dep11_Components-amd64.yml.gz… $ ls -l --dereference-command-line /var/lib/app-info/yaml/deb.debian.org_debian_dists_bullseye_main_dep11_Components-amd64.yml.gz -rw-r--r-- 1 root root 6213469 8. Aug 10:16 /var/lib/app-info/yaml/deb.debian.org_debian_dists_bullseye_main_dep11_Components-amd64.yml.gz All resized images in this fail: $ wget --no-verbose --spider --input-file=<(appstreamcli dump org.gnome.Builder.desktop | grep image | egrep --only-matching 'https?://[^<]*') https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-1_1248x702.png: Die Datei auf dem Server existiert nicht -- Verweis ist nicht gültig! https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-1_752x423.png: Die Datei auf dem Server existiert nicht -- Verweis ist nicht gültig! https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-1_624x351.png: Die Datei auf dem Server existiert nicht -- Verweis ist nicht gültig! https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-1_224x126.png: Die Datei auf dem Server existiert nicht -- Verweis ist nicht gültig! 2021-12-29 19:01:08 URL: https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-1_orig.png 200 OK https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-2_1248x702.png: Die Datei auf dem Server existiert nicht -- Verweis ist nicht gültig! https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-2_752x423.png: Die Datei auf dem Server existiert nicht -- Verweis ist nicht gültig! https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-2_624x351.png: Die Datei auf dem Server existiert nicht -- Verweis ist nicht gültig! https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-2_224x126.png: Die Datei auf dem Server existiert nicht -- Verweis ist nicht gültig! 2021-12-29 19:01:08 URL: https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-2_orig.png 200 OK https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-3_1248x702.png: Die Datei auf dem Server existiert nicht -- Verweis ist nicht gültig! https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-3_752x423.png: Die Datei auf dem Server existiert nicht -- Verweis ist nicht gültig! https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-3_624x351.png: Die Datei auf dem Server existiert nicht -- Verweis ist nicht gültig! https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-3_224x126.png: Die Datei auf dem Server existiert nicht -- Verweis ist nicht gültig! 2021-12-29 19:01:09 URL: https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-3_orig.png 200 OK https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-4_1248x702.png: Die Datei auf dem Server existiert nicht -- Verweis ist nicht gültig! https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-4_752x423.png: Die Datei auf dem Server existiert nicht -- Verweis ist nicht gültig! https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-4_624x351.png: Die Datei auf dem Server existiert nicht -- Verweis ist nicht gültig! https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-4_224x126.png: Die Datei auf dem Server existiert nicht -- Verweis ist nicht gültig! 2021-12-29 19:01:09 URL: https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-4_orig.png 200 OK https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-5_1248x702.png: Die Datei auf dem Server existiert nicht -- Verweis ist nicht gültig! https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-5_752x423.png: Die Datei auf dem Server existiert nicht -- Verweis ist nicht gültig! https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-5_624x351.png: Die Datei auf dem Server existiert nicht -- Verweis ist nicht gültig! https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-5_224x126.png: Die Datei auf dem Server existiert nicht -- Verweis ist nicht gültig! 2021-12-29 19:01:10 URL: https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-5_orig.png 200 OK https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-6_1248x702.png: Die Datei auf dem Server existiert nicht -- Verweis ist nicht gültig! https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-6_752x423.png: Die Datei auf dem Server existiert nicht -- Verweis ist nicht gültig! https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-6_624x351.png: Die Datei auf dem Server existiert nicht -- Verweis ist nicht gültig! https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-6_224x126.png: Die Datei auf dem Server existiert nicht -- Verweis ist nicht gültig! 2021-12-29 19:01:10 URL: https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/image-6_orig.png 200 OK https://appstream.debian.org/bullseye/main/metainfo/gnome-builder.html has writes "Last updated on: 2021-12-18 14:31 [UTC]" and has other URLs that do work as they can be found in https://appstream.debian.org/media/bullseye/org/gnome/Builder.desktop/80ccb2db1c02d5a6749463723e614f20/screenshots/ . It seems that DEP-11/appstream-data on https://ftp.debian.org/debian/dists/bullseye/main/dep11/ and the other releases is never updated with new data from https://appstream.debian.org/data/bullseye/main/ and therefore more and more metadata will fail over time.
Workaround is to download the updated file without 'apt update' to the same location and doing an appstream refresh. Screenshots of "Builder" are visible after that: # wget --timestamping 'https://appstream.debian.org/data/bullseye/main/Components-amd64.yml.gz' -O '/var/lib/app-info/yaml/deb.debian.org_debian_dists_bullseye_main_dep11_Components-amd64.yml.gz' [...] # ls -l --dereference-command-line /var/lib/app-info/yaml/deb.debian.org_debian_dists_bullseye_main_dep11_Components-amd64.yml.gz -rw-r--r-- 1 root root 6270308 18. Dez 15:25 /var/lib/app-info/yaml/deb.debian.org_debian_dists_bullseye_main_dep11_Components-amd64.yml.gz # appstreamcli refresh-cache --force [...] The source of these files is configured in /etc/apt/apt.conf.d/50appstream of package appstream and can be read for example by: # apt-get indextargets --format '$(URI) $(FILENAME)' 'Component: main' 'Identifier: DEP-11' http://deb.debian.org/debian/dists/bullseye/main/dep11/Components-amd64.yml /var/lib/apt/lists/deb.debian.org_debian_dists_bullseye_main_dep11_Components-amd64.yml.gz APT can not be configured to download single files of an otherwise non-repo like https://appstream.debian.org/data/bullseye/main/ so the files have to be integrated somewhere in the repo for APT to get them or have to be synced not using APT. The changelog tells the download via APT is probably done since 2015, but how where updates supposed to work? <<< appstream (0.9.0-1) unstable; urgency=medium * New upstream release: 0.9.0 * Adjust to libappstream ABI break * Enable APT support
Checking all releases with the following script it seems to me that updates from appstream to ftp-master are done on "testing" and "unstable" only leaving out "stable" notably since the beginning in 2016. Is there some rationale behind this or is it a bug?
package appstream has hard reverse dependencies for GNOME and others that rely on it to get the *updated* AppStream-Data for them to use.
$ cat appstream-check.sh
#!/bin/bash
WGET='wget --quiet --show-progress --timestamping'
for RELEASE in sid buzz rex bo hamm slink potato woody sarge etch lenny squeeze wheezy jessie stretch buster bullseye bookworm trixie; do
for COMPONENT in main contrib non-free; do
${WGET} "https://appstream.debian.org/data/${RELEASE}/${COMPONENT}/Components-amd64.yml.gz" -O "${RELEASE}-${COMPONENT}-appstream-Components-amd64.yml.gz"
${WGET} "https://ftp.debian.org/debian/dists/${RELEASE}/${COMPONENT}/dep11/Components-amd64.yml.gz" -O "${RELEASE}-${COMPONENT}-mirrorcpy-Components-amd64.yml.gz"
done
done
stat --format '%y %n X%sX' *.yml.gz | grep -v 'X0X' | cut -d' ' -f1,4 | column --table | sort
$ ./appstream-check.sh
[...]
2017-06-16 stretch-contrib-mirrorcpy-Components-amd64.yml.gz
2017-06-16 stretch-main-mirrorcpy-Components-amd64.yml.gz
2017-06-16 stretch-non-free-mirrorcpy-Components-amd64.yml.gz
2017-06-18 stretch-contrib-appstream-Components-amd64.yml.gz
2017-06-18 stretch-main-appstream-Components-amd64.yml.gz
2017-06-18 stretch-non-free-appstream-Components-amd64.yml.gz
2019-06-24 buster-non-free-appstream-Components-amd64.yml.gz
2019-06-24 buster-non-free-mirrorcpy-Components-amd64.yml.gz
2019-06-27 buster-contrib-appstream-Components-amd64.yml.gz
2019-06-27 buster-contrib-mirrorcpy-Components-amd64.yml.gz
2019-07-03 buster-main-appstream-Components-amd64.yml.gz
2019-07-03 buster-main-mirrorcpy-Components-amd64.yml.gz
2021-08-01 bullseye-contrib-mirrorcpy-Components-amd64.yml.gz
2021-08-08 bullseye-main-mirrorcpy-Components-amd64.yml.gz
2021-08-08 bullseye-non-free-mirrorcpy-Components-amd64.yml.gz
2021-09-11 bullseye-non-free-appstream-Components-amd64.yml.gz
2021-10-09 bullseye-contrib-appstream-Components-amd64.yml.gz
2021-12-18 bullseye-main-appstream-Components-amd64.yml.gz
2021-12-31 bookworm-contrib-appstream-Components-amd64.yml.gz
2021-12-31 bookworm-contrib-mirrorcpy-Components-amd64.yml.gz
2021-12-31 bookworm-non-free-appstream-Components-amd64.yml.gz
2021-12-31 bookworm-non-free-mirrorcpy-Components-amd64.yml.gz
2021-12-31 sid-contrib-appstream-Components-amd64.yml.gz
2021-12-31 sid-contrib-mirrorcpy-Components-amd64.yml.gz
2022-01-01 bookworm-main-appstream-Components-amd64.yml.gz
2022-01-01 bookworm-main-mirrorcpy-Components-amd64.yml.gz
2022-01-01 sid-main-appstream-Components-amd64.yml.gz
2022-01-01 sid-main-mirrorcpy-Components-amd64.yml.gz
2022-01-01 sid-non-free-appstream-Components-amd64.yml.gz
2022-01-01 sid-non-free-mirrorcpy-Components-amd64.yml.gz
I believe the root cause is in https://salsa.debian.org/ftp-team/dak/-/blob/master/config/debian/dinstall.variables#L25
<<<
# dists for which we import external data (i18n, dep11)
# as thats usually testing and unstable, but we need codenames,
# get em out of the db.
extimportdists=""
if [ "${functionname}" = ftp-master.debian.org ]; then
for suite in testing unstable; do
codename=$(dak admin suite-config get-value ${suite} codename)
extimportdists="${extimportdists} ${codename}"
done
fi
${extimportdists} is later used for iteration in function dep11() in https://salsa.debian.org/ftp-team/dak/-/blob/master/config/debian/dinstall.functions#L106 so only testing and unstable have updated AppStream-data.
https://blog.tenstral.net/2015/12/appstreamdep-11-fully-supported-in-debian-now.html and the debian wiki promote otherwise: