aptly-dev / aptly

aptly - Debian repository management tool
https://www.aptly.info/
MIT License
2.58k stars 376 forks source link

Can't mirror flat repositories #905

Open frntn opened 4 years ago

frntn commented 4 years ago

I'm unable to fetch flat repositories

Flat repo is like :

deb uri directory/

In aptly this must be translated like this :

aptly mirror create issue905 uri/directory ./
aptly mirror update issue905

So the package should be downloaded using this path

uri/directory/*.deb

But the directory appears twice in the download path

uri/directory/directory/*.deb

Hence we receive a 404 and are unable to update the mirror

Detailed Description

$ gpg --no-default-keyring --keyring trustedkeys.gpg --keyserver keys.gnupg.net --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9
$ aptly mirror create cran35 https://cloud.r-project.org/bin/linux/ubuntu/bionic-cran35 ./
$ aptly mirror update cran35
...
ERROR: unable to update: download errors:
  HTTP code 404 while fetching https://cloud.r-project.org/bin/linux/ubuntu/bionic-cran35/bionic-cran35/r-recommended_3.6.1-3bionic_all.deb
  HTTP code 404 while fetching https://cloud.r-project.org/bin/linux/ubuntu/bionic-cran35/bionic-cran35/r-cran-kernsmooth_2.23-16-1+1bionic0_i386.deb
...
$ aptly version
aptly version: 1.4.0

Issue #47 reported the same behavior, and I still have the same issue so I believe this is a regression :

$ gpg --no-default-keyring --keyring trustedkeys.gpg --keyserver keys.gnupg.net --recv-keys 9B7D32F2D50582E6
$ aptly -architectures="amd64" mirror create jenkins http://pkg.jenkins-ci.org/debian-stable/binary ./
$ aptly mirror update jenkins
...
ERROR: unable to update: download errors:
  HTTP code 404 while fetching http://pkg.jenkins-ci.org/debian-stable/binary/binary/jenkins_2.89.2_all.deb
  HTTP code 404 while fetching http://pkg.jenkins-ci.org/debian-stable/binary/direct/jenkins_1.580.3_all.deb
...
$ aptly version
aptly version: 1.4.0

Your Environment

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.6 LTS
Release:    14.04
Codename:   trusty

$ aptly version
aptly version: 1.4.0
RustyDust commented 3 years ago

See my reply to the latest question on that topic. Looks like it now only works if you use the last part (directory) of the URL as the distribution name.