I am using reprepro to create a partial local Debian mirror. My conf/updates file looks like this:

Name: update-wheezy
Method: http://ftp.tu-graz.ac.at/mirror/debian
Suite: wheezy
Components: main contrib non-free
Architectures: i386
FilterList: purge mirror.packages

FilterList points to the file mirror.packages which contains all the currently installed packages. I create this file with dpkg:

dpkg --get-selections > conf/mirror.packages

So far so good. It works well. But then I noticed that some packages are missing in my local repository. The output of dpkg --get-selections contains some lines where the package name ends with :i386. Example:

libxxf86dga1:i386                               install
libxxf86vm1:i386                                install
lighttpd                                        install

Exactly those i386-packages are missing. I got around this by removing the suffix:

dpkg --get-selections | sed 's/:i386//g' > conf/mirror.packages

Now my questions:

  1. Is this a bug in reprepro? Or am I doing something wrong? The man page states that FilterList takes the output format of dpkg --get-selections.
  2. Is there some way to have dpkg suppress the architecture?
  3. Why do some packages have the :i386 suffix, but most have not?
  4. Why is the architecture part of the package name anyway? Is it possible to have the same package from different architectures on the same system?

The :i386 is not part of the package name but an indication of the architecture the package is for. This is a result of debian introducing support for installing packages from multiple architectures ("multiarch").

See https://wiki.debian.org/Multiarch for more info.

I'm not positive on what determines whether the architecture is shown for a particular package. Initially I thought it was only shown when the package was from a foreign architecture but from the nharrer's comments I was clearly mistaken. Looking at nharrer's list and thinking about other contexts I have seen the :<architecture> in I think it may be showing it for all "multi-arch:same" packages

I suspect that the filterlist funcationality in reprepro predates multiarch, doesn't understand what the :i386 means and therefore treats it as part of the package name.

| improve this answer | |
  • Makes sense. However, uname -m shows i686. dpkg --print-architecture shows only i386. So I think it's a pure i386 system. I am confused now. With dpkg -l, I can see that there are only packages from architecture i386 and all. But some packages from i386 have the :i386 suffix and some have not. – nharrer Oct 20 '15 at 8:28
  • ok, seems I was mistaken, maybe it's putting the :<architecture> on for "multi-arch: same" packages even if they are from the native arhitecture or something. – Peter Green Oct 20 '15 at 11:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.