Issue
Using a Raspberry Pi, I am trying to use a newer version of puppet than the provided 2.7 by adding the puppetlabs repository, which has no 'binary-armhf' folders. (For non-Raspbian users - Raspbian is wheezy-based.) This repository is structured as follows:
- dists
- hardy
- ...
- ...
- wheezy
- dependencies
- ...
- main
- binary-all
- binary-amd64
- binary-i386
- source
- dependencies
- hardy
My expectation is that APT should, on seeing that there is no main/binary-armhf
directory (in the wheezy/Release
file), fall back to main/binary-all
; instead, apt-get update
prints an error
W: Failed to fetch http://apt.puppetlabs.com/dists/wheezy/Release Unable to find expected entry 'main/binary-armhf/Packages' in Release file (Wrong sources.list entry or malformed file)
and apt-cache madison puppet
does not show any binary packages (only source) as available for installation from apt.puppetlabs.com.
From inspecting other packages correctly installed from the default repository, apt on this platform seems to accept 'all' as an architecture for packages that happen to be listed in a binary-armhf/Packages
file; however, it seems not to accept 'all' as an architecture when looking for a Packages(.gz)
to download.
To the actual questions:
- Are there any clients that actually consider their own architecture to be 'all'?
- Is there a way to configure APT to check
main/binary-all
in addition tomain/binary-$native_arch
? EDIT: There is (using thedeb [arch=all]
in sources.list) - but it's not clear if this is always safe to do. (e.g. if you say[arch=i386]
, does it make your system think it can installi386
packages, or will it just fetch the Packages list?). - If neither of the above answers is yes, what's the intended utility of a
main/binary-all
release that no clients will actually fetch?
Solution
Apt printed only warning (W:
), not error. The Release
file contains only checksums of other index files. binary-all
is for architecture independent packages, like those written in perl or python.
I suppose the Packages
file should correctly specify where to look for binary package. I have chacked it and the puppet
package seems to be specified in binary-all/Packages
file. But the main problem is probably that aptitude doesn't allow you to use any packages from repository which doesn't know your architecture. Maybe empty binary/arm-hf/Packages
file + mention of arm-hf
in Architectures: i386 amd64 all
in Release
file would suffice. Until then, you have to manually download the .deb
files and install them using dpkg -i
.
Now your 3 questions: I would say that no client has architecture "all" by default. APT does check also the "binary-all" directory, but it probably cannot live without repository which knows its architecture. Speaking of that, the workaround with [arch=all]
should work, but I would not try it with anything else than "all".
Here is a document about the format of debian repositories Debian Repository Format.
Answered By - Marki555 Answer Checked By - Cary Denson (WPSolving Admin)