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

Paul-Andre Panon paul-andre.panon at avigilon.com
Tue Dec 11 00:51:11 UTC 2018


Earlier today I wrote about the changes in PR500. That parsing actually
seems to be OK after all because the EVR entries in the database are OK.

That said, it looks like the query that generates the list of upgradeable
packages in the Spacewalk GUI is system_upgradable_package_list in
spacewalk/java/code/src/com/redhat/rhn/common/db/datasource/xml/Package_qu
eries.xml

<mode name="system_upgradable_package_list"
class="com.redhat.rhn.frontend.dto.UpgradablePackageListItem">
  <query params="sid">
SELECT  n.id AS id,
        n.id AS name_id,
        lookup_evr(((latest.evr)).epoch, (latest.evr).version,
(latest.evr).release) AS evr_id,
        latest.package_arch_id AS arch_id,
        (latest.evr).epoch AS epoch,
        (latest.evr).version AS version,
        (latest.evr).release AS release,
        n.name AS name,
        n.name ||'-'|| evr_t_as_vre_simple(latest.evr) || '.' ||
latest_pa.label AS nvrea,
        n.name ||'-'|| evr_t_as_vre_simple(spe.evr) || '.' || spa.label AS
installed_package,
        n.id || '|' || lookup_evr((latest.evr).epoch,
(latest.evr).version, (latest.evr).release)|| '|' ||
latest.package_arch_id AS id_combo
  FROM
       rhnServerPackage sp
  join rhnPackageName n
    on n.id = sp.name_id
  join rhnPackageArch spa
    on spa.id = sp.package_arch_id
  join rhnPackageEvr spe
    on spe.id = sp.evr_id
  join (
        select sop.package_name_id,
               sop.package_arch_id,
               max(PE.evr) evr
          from rhnServerOutdatedPackages sop
          join rhnPackageEVR pe
            on sop.package_evr_id = pe.id
         where sop.server_id = :sid
         group by sop.package_name_id, sop.package_arch_id) latest
    on latest.package_name_id = sp.name_id
  join rhnPackageArch latest_pa
    on latest_pa.id = latest.package_arch_id
  join rhnPackageUpgradeArchCompat puac
    on puac.package_arch_id = sp.package_arch_id
   and puac.package_upgrade_arch_id = latest.package_arch_id
 where sp.server_id = :sid
 order by upper(n.name)
  </query>
  <elaborator multiple="t" params="sid">
  SELECT  PN.id AS id,
          SOP.errata_id AS errata_id,
          SOP.errata_advisory AS errata_advisory,
          E.advisory_type AS errata_advisory_type,
          E.severity_id AS errata_severity_id
    FROM  rhnServerOutdatedPackages SOP
          INNER JOIN rhnPackageName PN on SOP.package_name_id = PN.id
          INNER JOIN rhnErrata E on SOP.errata_id = E.id
   WHERE  PN.id IN (%s)
     AND  SOP.server_id = :sid
  </elaborator>
</mode>

The sub-clause

     join (
          select sop.package_name_id,
               sop.package_arch_id,
               max(PE.evr) evr
          from rhnServerOutdatedPackages sop
          join rhnPackageEVR pe
            on sop.package_evr_id = pe.id
         where sop.server_id = :sid
         group by sop.package_name_id, sop.package_arch_id) latest

is returning the gcc_8-related packages because they are provided by the
rhnServerOutdatedPackages view

SELECT DISTINCT SNC.server_id,
       P.name_id,
       P.evr_id,
       P.package_arch_id,
       PN.name || '-' || evr_t_as_vre_simple( PE.evr ),
       E.id,
       E.advisory
  FROM rhnPackageName PN,
       rhnPackageEVR PE,
       rhnPackage P,
       rhnServerNeededCache SNC
         left outer join
        rhnErrata E
          on SNC.errata_id = E.id
 WHERE SNC.package_id = P.id
   AND P.name_id = PN.id
   AND P.evr_id = PE.id

and the view is listing those packages because of entries for those
packages in the rhnServerNeededCache table. So the question is what is
populating the rhnServerNeededCache table incorrectly, and why?




More information about the Spacewalk-list mailing list