SUSE / rmt

RPM repository mirroring tool and registration proxy for SUSE Customer Center.
Other
37 stars 45 forks source link

repository parsing fails due to unexpected HTTP headers #1157

Open olafhering opened 1 month ago

olafhering commented 1 month ago

I have a published repository from a project in IBS. It gets exported via NFS, which makes it simple to transfer the directory somewhere else. I copied the exported directory to my own webspace.

Adding and using the repository with zypper ar -cf $URL $name && zypper ref -r $name works as expected.

Adding it as a custom repository with rmt-cli repos custom add $URL $name && rmt-cli mirror repository $name fails, rmt-cli complains about checksum mismatch in the files referenced by repomd.xml.

It seems zypper does not pay attention to the headers in the HTTP response. But rmt-cli apparently does.

The HTTP headers for the ${sha256sum}-${tag}.xml.gz files look like this:

HTTP/1.1 200 OK
Date: Thu, 16 May 2024 15:56:07 GMT
Server: Apache/2.4.59 (Unix)
Vary: User-Agent
Last-Modified: Thu, 11 May 2023 14:38:30 GMT
ETag: "12c-5fb6bf1384d1c"
Accept-Ranges: bytes
Content-Length: 300
Content-Type: text/xml
Content-Encoding: x-gzip

<binary data>

A similar file served by the typical RMT server looks like this:

HTTP/1.1 200 OK
Server: nginx/1.21.5
Date: Thu, 16 May 2024 16:02:36 GMT
Content-Type: application/octet-stream
Content-Length: 3554
Last-Modified: Tue, 14 May 2024 17:30:08 GMT
Connection: keep-alive
ETag: "66439fa0-de2"
Accept-Ranges: bytes

<binary data>

The questions are:

digitaltom commented 1 month ago

I don't think this is related to HTTP headers. When RMT is mirroring a repo, it validates the checksums of primary.xml with the files it downloads, and that seems to fail in your case. Afaik zypper does not care about those checksums. Could you post the error message, along with the metadata files, and one of the packages it complains about? Then we could compare the checksums between the metadata and the files.