[Spacewalk-list] Ubuntu 18.04 package management in Spacewalk 2.8

philippe bidault philippe.bidault at gmail.com
Tue Dec 4 23:44:25 UTC 2018


Hi all,

I am trying to make our Spacewalk 2.8 working with Ubuntu 18.04, but as
well described here :
https://github.com/spacewalkproject/spacewalk/wiki/DebianUbuntuSupportIn27

... there are 3 main issues :

"1- The current version comparison logic does not distinct a dot from an
hyphen, a tilde or a plus character. This leads to some packages wrongly
shown as an update for a client in spacewalk when the package is actually a
downgrade. The client however uses a correct comparison and handles the
package upgrade correctly

2- The deb importer does not import all the package header information into
the database and the repository-writer will not write the missing
information to the repository metadata served by spacewalk. This will lead
to problems on the client in case of the missing Multi-Arch header: Clients
will try to reinstall the same package over and over again when this header
is missing.

3- A deb repository provided by spacewalk is not GPG signed and thus will
not work without disabling secure-apt. Spacewalk imports and recreates the
repository based on the imported package catalogue, this will destroy the
GPG signing of the repository vendor."

I did manage to solve the point 2 and 3. The point 3 thanks to this method
:
http://www.devops-blog.net/spacewalk/gpg-signing-apt-repository-in-spacewalk

Regarding the point 2, I did have to customize the script
https://github.com/rpasche/spacewalk-debian-sync/tree/add-multiarch-header ,
as it seems that in any case the add of the Multi-Arch header in
Packages.gz is not enough for Ubuntu 18.04. I did only succeed in not
ending in an infinite loop of packages flagged to be upgraded as the result
of "apt upgrade" by adding more headers in Packages.gz :

        p, v, a, multi, breaks, predeps = line.rstrip().split("||")
       if (packages.has_key(p + v + a) and (multi is not "#")) :
           packages[p + v + a]['Multi-Arch'] = multi
       if (packages.has_key(p + v + a) and (breaks is not "#")) :
           packages[p + v + a]['Breaks'] = breaks
       if (packages.has_key(p + v + a) and (predeps is not "#")) :
           packages[p + v + a]['Pre-Depends'] = predeps

Right now, what is really causing me much more trouble, is the point 1,
which is making Spacewalk not really reliable for deb package management ,
as I have a permanent list of upgradable packages in the Spacewalk console,
whereas the installed versions are already the latest.

Example :


Latest Package
Installed Package
gcc-8-base-8-20180414-1ubuntu2.amd64-deb
<https://space01/rhn/software/packages/Details.do?sid=1000010058&id_combo=21120|7544|145>
gcc-8-base-8.2.0-1ubuntu2~18.04.amd64-deb
lib32gcc1-8-20180414-1ubuntu2:1.amd64-deb
<https://space01/rhn/software/packages/Details.do?sid=1000010058&id_combo=21933|7796|145>
lib32gcc1-8.2.0-1ubuntu2~18.04:1.amd64-deb


So in resume, I have 2 questions :

- Regarding the point 1, is there already an existing solution I could use,
or at least some clues ?
- Regarding the point 2 : Did I miss something, or do we really need to add
some extra headers (Breaks and Pre-depends) to have the Ubuntu 18.04 client
servers correctly listing packages to be upgraded ?

Regards,
Philippe.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/spacewalk-list/attachments/20181205/d23b22aa/attachment.htm>


More information about the Spacewalk-list mailing list