[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