Welcome to the Inedo Forums! Check out the Forums Guide for help getting started.
If you are experiencing any issues with the forum software, please visit the Contact Form on our website and let us know!
apt Package file malformatted
-
Hey everyone,
we are using Version 2023.32 (Build 3) of ProGet with the new Debian feeds and I came across an issue with apt-cache not being able to find all packages I uploaded to the feed.
There are a total of 31 packages in the feed, but when looking for them with apt-cache search <string> only two showed up in the output.
So I investigated where and why and after looking into the
proget.<hostname>_debian_debian-test_dists_bookworm_main_binary-amd64_Packages
file and compared that with the one I for example got from my aptly repo, I saw that there are no spaces / newlines between packages. I manually edited the file, created a newline between each package and now apt-cache finds the packages.Is this some bug? All other Packages-files in the /var/lib/apt/lists folder do have that convention to seperate package information with an additional newline.
Many thanks,
Frank
-
Hi @frei_zs ,
Unfortunately we don't know what
aptly
is doing behind-the-scenes and can't guess what could be going on here. I don't believe that ProGet is generating that file; it looks like something aptly is doing based on data downloaded from ProGet.ProGet implements a Debian repository as specified here:
https://wiki.debian.org/DebianRepositoryIt's possible that there's a bug in our implementation, or a bug in aptly, or both. But we can't really track it down with the information here :(
Your best bet would be to start with the aptly team, and to see if they have any idea.
Cheers,
Alana
-
Hey Alana,
thank you, but I would take aptly out of the bill here, as I just use it to build the deb-packages.
Those are then uploaded to the ProGet-Debian-Feed per curl.The Packages-files is provided by ProGet not aptly? As soon as the deb-Packages are build, aptly's job is done. The rest is handled by ProGet. It builds the InRelease and Packages file, which apt then downloads per apt update from the ProGet-Endpoint, that is configured on the client system per "Integrate with apt" instructions:
wget -O "testfeed.gpg" https://proget.<hostname>/debian/tomedo-test/keys/testfeed.asc && sudo apt-key add "testfeed.gpg"
echo "deb https://proget.<hostname>/debian/tomedo-test/ bookworm main" | sudo tee "/etc/apt/sources.list.d/proget-tomedo-test.list"
I don't think aptly interferes with anything here? My aptly is a different machine hosting the deb-packages source and only used for that purpose. There is besides the curl upload to the feed no connection between proget and aptly.
Many thanks,
Frank
-
Hi @frei_zs ,
Thanks for clarifying; I'm not at all familiar with the ecosystem and I really don't know how to use deb/aptly/etc. I also don't know what a
Packages-files
file is.However, I can say that ProGet provides provides endpoints for two "files":
- https://wiki.debian.org/DebianRepository/Format#A.22Packages.22_Indices
- https://wiki.debian.org/DebianRepository/Format#A.22Release.22_files
These are dynamically generated by ProGet, and we've not run into any issues nor have other users expressed issues. That doesn't mean they're error-free, it just means we don't know what's wrong since we tried to follow the spec and it worked for us/others.
I don't know what the URL is for these offhand, but if you use a traffic capturing tool, you can see exactly what deb is requesting.
If you can help us identify what's wrong with the output generated by ProGet, there's probably good chance we can fix them. We'd also want to know why it "works on our machine" and others.
Thanks,
Alana
-
Hey Alana,
that is a good question, why neither you nor other users ran into this issue.
I'm wondering what might be different with my setup. So I was trying with a fresh / unaltered
Debian 12 VM with the netinst.iso, but have the same issue there.The Packages-file I refer to is the ""Packages" Indices" from your referenced documentation:
https://wiki.debian.org/DebianRepository/Format#A.22Packages.22_IndicesI've read through this and more of Debians docs, but there is no explicit statement that entries in that file have to be seperated by an additional newline. All I could find is
"Each stanza shall begin with a "Package" field. Clients may also accept files where this is not the case."It is only a small thing, which I fix by running this command to alter the Packages indices file from ProGet:
sed -i 's/Package:/\nPackage:/g' /var/lib/apt/lists/proget.hostname.domain_debian_tomedo-test_dists_bookworm_main_binary-amd64_Packages
which adds a newline between each Package entry.
If we look at the Packages indices provided by Debian itself, it looks like this for example:
root@myhost# less /var/lib/apt/lists/ftp.de.debian.org_debian_dists_bookworm_main_binary-amd64_Packages
Package: 0ad Version: 0.0.26-3 Installed-Size: 28591 Maintainer: Debian Games Team <pkg-games-devel@lists.alioth.debian.org> Architecture: amd64 Depends: 0ad-data (>= 0.0.26), 0ad-data (<= 0.0.26-3), 0ad-data-common (>= 0.0.26), 0ad-data-common (<= 0.0.26-3), libboost-filesystem1.74.0 (>= 1.74.0), libc6 (>= 2.34), libcurl3-gnutls (>= 7.32.0), libenet7, libfmt9 (>= 9.1.0+ds1), libfreetype6 (>= 2.2.1), libgcc-s1 (>= 3.4), libgloox18 (>= 1.0.24), libicu72 (>= 72.1~rc-1~), libminiupnpc17 (>= 1.9.20140610), libopenal1 (>= 1.14), libpng16-16 (>= 1.6.2-1), libsdl2-2.0-0 (>= 2.0.12), libsodium23 (>= 1.0.14), libstdc++6 (>= 12), libvorbisfile3 (>= 1.1.2), libwxbase3.2-1 (>= 3.2.1+dfsg), libwxgtk-gl3.2-1 (>= 3.2.1+dfsg), libwxgtk3.2-1 (>= 3.2.1+dfsg-2), libx11-6, libxml2 (>= 2.9.0), zlib1g (>= 1:1.2.0) Pre-Depends: dpkg (>= 1.15.6~) Description: Real-time strategy game of ancient warfare Homepage: https://play0ad.com/ Description-md5: d943033bedada21853d2ae54a2578a7b Tag: game::strategy, interface::graphical, interface::x11, role::program, uitoolkit::sdl, uitoolkit::wxwidgets, use::gameplaying, x11::application Section: games Priority: optional Filename: pool/main/0/0ad/0ad_0.0.26-3_amd64.deb Size: 7891488 MD5sum: 4d471183a39a3a11d00cd35bf9f6803d SHA256: 3a2118df47bf3f04285649f0455c2fc6fe2dc7f0b237073038aa00af41f0d5f2 Package: 0ad-data Version: 0.0.26-1 Installed-Size: 3218736 Maintainer: Debian Games Team <pkg-games-devel@lists.alioth.debian.org> Architecture: all Pre-Depends: dpkg (>= 1.15.6~) Suggests: 0ad Description: Real-time strategy game of ancient warfare (data files) Homepage: https://play0ad.com/ Description-md5: 26581e685027d5ae84824362a4ba59ee Tag: role::app-data Section: games Priority: optional Filename: pool/main/0/0ad-data/0ad-data_0.0.26-1_all.deb Size: 1377557908 MD5sum: fc5ed8a20ce1861950c7ed3a5a615be0 SHA256: 53745ae74d05bccf6783400fa98f3932b21729ab9d2e86151aa2c331c3455178
For the file provided by ProGet the output is this per default:
less /var/lib/apt/lists/proget.hostname.domain_debian_tomedo-test_dists_bookworm_main_binary-amd64_PackagesPackage: tomedo-kim Version: 0.2-1 Section: tomedo Priority: optional Architecture: amd64 Maintainer: Zollsoft GmbH <info@zollsoft.de> Description: Installs KIM systemd service Filename: pool/bookworm/main/amd64/tomedo-kim/tomedo-kim_0.2-1_amd64.deb Size: 219494592 MD5sum: 6ef854e2dce4eb1e6dc29e6d6da126b2 SHA1: bffec83a97bd415dad18b9b71a0d5f96ed9633e7 SHA256: 542bede9a9c243da34d2977ede4ee3c8f3aada81343f18d5d405fcc4acf4c8fb SHA512: 91334edf6770f218aadcc73ea4a0c76fd4fe4ed365b758a572fcf386ffc82eb063b42e7b98837181cfec05142b4c16a042f7f9455190541227f65dff99f25d76 Package: tomedo-nginx Version: 1.1-1 Section: tomedo Priority: optional Architecture: amd64 Pre-Depends: nginx-full, tomedo-certificates, netcat-openbsd Maintainer: Zollsoft GmbH <info@zollsoft.de> Description: Installs nginx web server which acts as a proxy for other web services Filename: pool/bookworm/main/amd64/tomedo-nginx/tomedo-nginx_1.1-1_amd64.deb Size: 20672 MD5sum: 3c39f4ed47edb8e94509ba4264bcd789 SHA1: 3e25a5d5be57115941ecb53fd26a7dcfe21fd5ce SHA256: 351b02c1b4e16da5ad4a2f5f476b90d63954551929eb9c1b8e42b5a494746bc6 SHA512: 5d2e356ce7fe5dbe8adb1cf10f3d67bd316ce6cae57f11e87275fe5996aff0a7be3541d1598aaf736ce7e74042a6a4b3d266c161886e548ea6739f289ec856c0
There is no newline / empty line between the two package definitions.
Changing this with the above sed command I alter it to:Package: tomedo-kim Version: 0.2-1 Section: tomedo Priority: optional Architecture: amd64 Maintainer: Zollsoft GmbH <info@zollsoft.de> Description: Installs KIM systemd service Filename: pool/bookworm/main/amd64/tomedo-kim/tomedo-kim_0.2-1_amd64.deb Size: 219494592 MD5sum: 6ef854e2dce4eb1e6dc29e6d6da126b2 SHA1: bffec83a97bd415dad18b9b71a0d5f96ed9633e7 SHA256: 542bede9a9c243da34d2977ede4ee3c8f3aada81343f18d5d405fcc4acf4c8fb SHA512: 91334edf6770f218aadcc73ea4a0c76fd4fe4ed365b758a572fcf386ffc82eb063b42e7b98837181cfec05142b4c16a042f7f9455190541227f65dff99f25d76 Package: tomedo-nginx Version: 1.1-1 Section: tomedo Priority: optional Architecture: amd64 Pre-Depends: nginx-full, tomedo-certificates, netcat-openbsd Maintainer: Zollsoft GmbH <info@zollsoft.de> Description: Installs nginx web server which acts as a proxy for other web services Filename: pool/bookworm/main/amd64/tomedo-nginx/tomedo-nginx_1.1-1_amd64.deb Size: 20672 MD5sum: 3c39f4ed47edb8e94509ba4264bcd789 SHA1: 3e25a5d5be57115941ecb53fd26a7dcfe21fd5ce SHA256: 351b02c1b4e16da5ad4a2f5f476b90d63954551929eb9c1b8e42b5a494746bc6 SHA512: 5d2e356ce7fe5dbe8adb1cf10f3d67bd316ce6cae57f11e87275fe5996aff0a7be3541d1598aaf736ce7e74042a6a4b3d266c161886e548ea6739f289ec856c0
which then works fine.
For all files provided by Debian there is this additional empty line between packages.
This is another one for example:
less /var/lib/apt/lists/ftp.debian.org_debian_dists_bookworm-backports_contrib_binary-amd64_PackagesPackage: diaspora-installer Version: 0.7.18.2+debian3~bpo12+1 Installed-Size: 111 Maintainer: Debian Ruby Extras Maintainers <pkg-ruby-extras-maintainers@lists.alioth.debian.org> Architecture: all Replaces: diaspora Depends: build-essential, diaspora-common (= 0.7.18.2+debian3~bpo12+1), ghostscript, imagemagick, libcurl4-openssl-dev, libffi-dev, libmagickwand-dev, libpq-dev, libruby3.1, libssl-dev, libxml2-dev, libxslt-dev, rsync, ruby-bundler, ruby-dev, ruby-http-parser, tzdata, wget, zlib1g-dev Conflicts: diaspora, libruby2.7 Description: distributed social networking service - installer Homepage: https://wiki.debian.org/Diaspora Description-md5: 120c7fb469648e6eb3e942926e8b1ea0 Section: contrib/net Priority: optional Filename: pool/contrib/d/diaspora-installer/diaspora-installer_0.7.18.2+debian3~bpo12+1_all.deb Size: 21584 SHA256: f71649c6221b647dca57e7c8e9c045a4544a08103e48714d28465d545a1139c9 Package: diaspora-installer-mysql Source: diaspora-installer Version: 0.7.18.2+debian3~bpo12+1 Installed-Size: 12 Maintainer: Debian Ruby Extras Maintainers <pkg-ruby-extras-maintainers@lists.alioth.debian.org> Architecture: all Depends: dbconfig-mysql | dbconfig-no-thanks, default-libmysqlclient-dev, default-mysql-server | virtual-mysql-server, diaspora-installer (= 0.7.18.2+debian3~bpo12+1) Description: distributed social networking service - installer (with MySQL) Homepage: https://wiki.debian.org/Diaspora Description-md5: c18a155ca94ebb0900ab3ea2aa77e4b9 Section: contrib/ruby Priority: optional Filename: pool/contrib/d/diaspora-installer/diaspora-installer-mysql_0.7.18.2+debian3~bpo12+1_all.deb Size: 4852 SHA256: 05e50f43d84a1cbff57c4019d867d6677007d1307f9202f6005a117192f40a70
I will further investigate to find out why this seems to work for you and others but not for me, but I think having that additional seperation between packages is not a bad thing, as it follows the (likely undocumented) format for Packages indices more strictly and prevents issues (maybe only for me 8).
Many thanks,
Frank
-
Thank you very much for the detailed analysis @frei_zs !
I agree, this seems like it's worth trying. And hopefully it won't break :)
We'll try to get this in the next maintenance release on Friday via PG-2618; if it's something we think is worth a pre-release/test cycle, we'll let you know, but probably simple and harmless enough to do.
Clearly "their" files have new lines, and the specs don't say it's "wrong" so far as I can tell.
-
Thank you for taking time to sort this out with me!
I greatly appreciate your efforts and will be happy, if this works out well. :)