ionos-cloud / reprepro

Debian package repository producer
GNU General Public License v2.0
53 stars 20 forks source link

latest dpkg-deb zstd compression is not supported by reprepro #20

Open jean-christophe-manciot opened 3 years ago

jean-christophe-manciot commented 3 years ago

Ubuntu impish reprepro: 5.3.0-1.1 multiple-versions (630bb1eb472bc4970c1133955994a6a90e9ab2ef) dpkg: 1.20.9ubuntu2

Ubuntu has switched default dpkg-deb compression from xz to zstd: cf. changelog. Adding a deb package built using the latest dpkg-deb to a repository managed by reprepro now leads to:

reprepro --component stable -Vb . includedeb impish ../../linux-buildinfo-5.13.0-12-generic_5.13.0-12.12_amd64.deb
Could not find a suitable control.tar file within '../../linux-buildinfo-5.13.0-12-generic_5.13.0-12.12_amd64.deb'!
There have been errors!

There is no such issue when adding packages built with dpkg 1.20.9. Unfortunately, downgrading dpkg to the latter prevents any further installation of binary packages built and distributed by Ubuntu.

jean-christophe-manciot commented 3 years ago

There has been a recent change also to reprepro in debian to add support for Zstd compressed debs: cf. changelog.

bdrung commented 3 years ago

I rebased the multiple-versions-debian on the Debian package version 5.3.0-1.3 to pick up zstd support and verified that the shunit2 tests still pass. Please test.

jean-christophe-manciot commented 3 years ago

I've built 3908caf7abd7120799a7dd38eea92d7e32553fb9 using latest dpkg-deb on Ubuntu impish.

So far, multiple versions reprepro 5.3.0-1.4 works like a charm as can be seen on this reprepro deb repository.

I'd like to test it for a couple of complete build sessions before closing this issue.

jean-christophe-manciot commented 3 years ago

3908caf7abd7120799a7dd38eea92d7e32553fb9 has passed the tests on:

jean-christophe-manciot commented 3 years ago

Actually, I've just happened to see the following error message:

reprepro --component stable -Vb . includedeb impish gns3-gui_2.2.23-21.10_amd64.deb
zstd: error 70 : Write error : cannot write decoded block : Broken pipe

Maybe it's worth noting that the deb file is signed.

svengit commented 2 years ago

Actually, I've just happened to see the following error message:

reprepro --component stable -Vb . includedeb impish gns3-gui_2.2.23-21.10_amd64.deb
zstd: error 70 : Write error : cannot write decoded block : Broken pipe

Maybe it's worth noting that the deb file is signed.

Just ran into this exact problem on 5.3.0 (stable on Ubuntu 20.04), which means reprepro is unusable. Are there any news on this?

jean-christophe-manciot commented 2 years ago

Just ran into this exact problem on 5.3.0 (stable on Ubuntu 20.04), which means reprepro is unusable. Are there any news on this?

I wouldn't say 'reprepro is unusable': despite the previous error message showing up from time to time:

Checking if all files believed to be in pool are actually still there and have the known md5sum, sha1 & sha256

reprepro -Vb . checkpool

svengit commented 2 years ago

I wouldn't say 'reprepro is unusable': despite the previous error message showing up from time to time:

* the affected binary packages are correctly inserted into the repository; for instance, the previously affected package is [available online within the repository](https://git.sdxlive.com/PPA/commit/?id=b85bbd5c65ed56fda70ac31db52e0589e34d0587)

* the reprepro repository is running correctly

oh, amazing. I didn't realize they were imported. I ran into the problem while doing reprepro update and it just spammed the log, so I assumed it wasn't syncing properly. Thanks!

HougeLangley commented 2 years ago

Same problem here.

ubuntu-21.10 reprepro -b /var/www/html/ubuntu-21.10 -C main includedeb impish /root/kernel/linux-*.deb
Could not find a suitable control.tar file within '/root/kernel/linux-headers-5.17.0-rc4-ubuntu-starfive-rc4_5.17.0-rc4-ubuntu-starfive-rc4-1_riscv64.deb'!
Could not find a suitable control.tar file within '/root/kernel/linux-image-5.17.0-rc4-ubuntu-starfive-rc4_5.17.0-rc4-ubuntu-starfive-rc4-1_riscv64.deb'!
Could not find a suitable control.tar file within '/root/kernel/linux-image-5.17.0-rc4-ubuntu-starfive-rc4-dbg_5.17.0-rc4-ubuntu-starfive-rc4-1_riscv64.deb'!
Could not find a suitable control.tar file within '/root/kernel/linux-libc-dev_5.17.0-rc4-ubuntu-starfive-rc4-1_riscv64.deb'!
There have been errors!
jennyowen commented 2 years ago

I've been getting this same error with packages build with ubuntu 22.04. I run reprepro in docker so it's pretty reproducible.

Here's how I'm building reprepro (where reprepro-multiple-versions-debian.zip is the zip download from github of the multiple-versions-debian branch of this repository):

FROM ubuntu:22.04
ADD reprepro-multiple-versions-debian.zip /tmp/

RUN \
    apt-get --quiet --quiet update && \
    apt-get install -y \
        curl \
        nano \
        jq \
        gcc \
                make \
        libarchive-dev  \
        libbz2-dev  \
        libdb-dev \
        libgpgme-dev \
        liblzma-dev \
        libzstd-dev \
        unzip \
        zlib1g-dev
RUN unzip /tmp/reprepro-multiple-versions-debian.zip -d /tmp && \
    cd /tmp/reprepro-multiple-versions-debian && \
    /tmp/reprepro-multiple-versions-debian/configure && \
    make install -C /tmp/reprepro-multiple-versions-debian

I redownloaded the zip yesterday and the source does contain changes mentioning zstd, so it's still an issue. Am I perhaps missing some configuration flags required to support zstd packaged debs?

bdrung commented 2 years ago

Can you try installing the zstd package?

jennyowen commented 2 years ago

@bdrung oh that fixed it, thank you!

agutierrm commented 2 years ago

I am not be able to get reprepro running. I test with the @jean-christophe-manciot but I get the same message "broken pipe" :-(

thctlo commented 2 years ago

i build on Debian SID, and test with a local repo *( reprepro 5.3.1-1)

Then I import on a Debian Stretch server reprepro 5.3.0-1~bpo9+1 , and i get. : Could not find a suitable control.tar file within

And importing it works fine on the debian SID/Unstable version

To be added, importing the DSC works fine, only the multichanges or changes file give above error.

zstd and libzstd1 ( 1.3.8+dfsg-3~bpo9+1) is installed on the stretch server.

i'll see if in can backport the debian sid version to stretch. i'll report it back

thctlo commented 2 years ago

i build on Debian SID, and test with a local repo *( reprepro 5.3.1-1)

Then I import on a Debian Stretch server reprepro 5.3.0-1~bpo9+1 , and i get. : Could not find a suitable control.tar file within

And importing it works fine on the debian SID/Unstable version

To be added, importing the DSC works fine, only the multichanges or changes file give above error.

zstd and libzstd1 ( 1.3.8+dfsg-3~bpo9+1) is installed on the stretch server.

i'll see if in can backport the debian sid version to stretch. i'll report it back

i rebuilded reprepro from debian experimental ( 5.4.0 ) and zstd (1.5.2+dfsg-1) from debian Sid to Debian Stretch. Now it works

what i used can be found here. https://downloads.van-belle.nl/diverse/ deb and sources included in the tar.gz.

Please note.. This breaks broke the index (db) files of reprepro, so im rebuilding but with above versions.

Importing shows : zstd: /stdout\: Broken pipe

but so far it all works.