Bugzilla – Bug 1226192
cups allows library versions to be different, causing symbol lookup error: /usr/lib64/libcupsmime.so.1: undefined symbol: _cups_debug_printf
Last modified: 2024-07-16 07:20:56 UTC
Created attachment 875426 [details] showing the version differences visually This is only seen on 15-SP5 QU4 candidate testing, but has persisted multiple snapshots so seems not going away automatically with refreshed media. It was not an issue on released 15-SP5 QU3, and it is not an issue on 15-SP5 GA + maintenance updates. The symptom / reproduce steps are (but see below): 1. zypper in cups 2. cupsd -t Expected result: '"/etc/cups/cups-files.conf" is OK' Actual result: 'cupsd: symbol lookup error: /usr/lib64/libcupsmime.so.1: undefined symbol: _cups_debug_printf' I've found that for some reason, using the QU media and installing cups results in having the following packages of version 2.2.7-150000.3.54.1: cups cups-client cups-config cups-filters libcups2 but the following packages 2.2.7-150000.3.40.1: libcupscgi1 libcupsimage2 libcupsmime1 libcupsppdc1 I was not able to reproduce it manually by installing the current 142.7 image, but I'm able to give access to an automated testing machine where the build is installed and the problem can be / has been reproduced. It can be manually fixed with zypper in libcupscgi1 libcupsimage2 libcupsmime1 libcupsppdc1, but if there's a hard dependency between the versions, the dependency should be a forced one. There also could be some archive / media creation problem since it is not going away with a new build (QU snapshot 1 and snapshot 2 had almost two weeks in between). in openQA: Always latest result in this scenario: https://openqa.suse.de/tests/14568261 Last good: Build 137.77 (QU3) https://openqa.suse.de/tests/14069530
Adding that for my manual testing I tried installing manually, while where the problem can be reproduced used this autoyast file https://github.com/os-autoinst/os-autoinst-distri-opensuse/blob/master/data/security/autoyast/create_hdd_gnome_x86_64.xml (or one of the others, the problem is also shown on aarch64 and x86_64 uefi).
My analysis: CUPS in SLE15 only "Requires: libcups2 = %{version}-%{release}" via "Requires: cups-client = %{version}-%{release}" does not require the other CUPS libraries packages libcupscgi1 libcupsimage2 libcupsmime1 libcupsppdc1 ------------------------------------------------------------ # osc cat SUSE:SLE-15:Update cups cups.spec \ | grep '^%package.*libcups' %package -n libcups2 %package -n libcupscgi1 %package -n libcupsimage2 %package -n libcupsmime1 %package -n libcupsppdc1 # osc cat SUSE:SLE-15:Update cups cups.spec ... Name: cups ... Requires: cups-client = %{version}-%{release} ... %package client ... Requires: libcups2 = %{version}-%{release} ------------------------------------------------------------ In contrast CUPS in Factory does require the exact matching version-release of all libcups* sub-packages: ------------------------------------------------------------ # osc cat openSUSE:Factory cups cups.spec \ | grep '^%package.*libcups' %package -n libcups2 %package -n libcupsimage2 # osc cat openSUSE:Factory cups cups.spec ... Name: cups ... Requires: cups-client = %{version}-%{release} ... %package client ... Requires: libcups2 = %{version}-%{release} Requires: libcupsimage2 = %{version}-%{release} ------------------------------------------------------------ My "forensic archaeology" results how things changed: In older times (e.g. in SLE12) there was only one CUPS libraries package "cups-libs" and CUPS requires its exact matching version-release via "Requires: cups-client = %{version}-%{release}" ------------------------------------------------------------ # osc cat SUSE:SLE-12:Update cups cups.spec ... Name: cups ... Requires: cups-client = %{version}-%{release} ... %package client ... Requires: cups-libs = %{version}-%{release} ------------------------------------------------------------ The relevant cups.spec contents in SLE15 CUPS originate from the CUPS in Factory change with revision number 142 ------------------------------------------------------------ # osc rdiff -c 142 openSUSE:Factory cups ... +Fri Oct 13 11:11:10 UTC 2017 - jengelh@inai.de + +- Implement shared library packaging guideline [boo#862112] ... Name: cups ... Requires: cups-client = %{version}-%{release} -Requires: cups-libs = %{version}-%{release} ... +%package -n libcups2 ... +%package -n libcupscgi1 ... +%package -n libcupsimage2 ... +%package -n libcupsmime1 ... +%package -n libcupsppdc1 ... -%package libs ... %package client ... -Requires: cups-libs = %{version}-%{release} +Requires: libcups2 = %{version}-%{release} ------------------------------------------------------------ which ony requires the exact matching version-release of libcups2 but it does no longer require the other now separated / splitted CUPS libraries packages libcupscgi1 libcupsimage2 libcupsmime1 libcupsppdc1 This missing requirements were added in CUPS in Factory via a change with revision number 145 ------------------------------------------------------------ # osc rdiff -c 145 openSUSE:Factory cups ... %package client ... Requires: libcups2 = %{version}-%{release} +Requires: libcupscgi1 = %{version}-%{release} +Requires: libcupsimage2 = %{version}-%{release} +Requires: libcupsmime1 = %{version}-%{release} +Requires: libcupsppdc1 = %{version}-%{release} ------------------------------------------------------------ In CUPS in Factory the change with revision number 142 happened on 2017-11-02 and the change with revision number 145 happened on 2018-04-25 ------------------------------------------------------------ # osc log openSUSE:Factory cups ... r145 | dimstar_suse | 2018-04-25 07:57:26 | ... ... r142 | dimstar_suse | 2017-11-02 09:23:22 | ... ------------------------------------------------------------ CUPS for SLE15 was branched / forked from CUPS in Factory between 2017-07-31 and 2017-11-25 or 2018-03-30 ------------------------------------------------------------ # osc log SUSE:SLE-15:GA cups r5 | fcrozat | 2018-03-30 06:39:00 | ... CUPS version upgrade to the 2.2.7 bug fix release ... r4 | sbehlert | 2017-11-25 21:49:14 | ... Automatic request from openSUSE.org:openSUSE:Factory by UpdateCrawler r3 | fcrozat | 2017-11-03 08:49:41 | ... Automatic request from openSUSE.org:openSUSE:Factory by UpdateCrawler r2 | fcrozat | 2017-09-28 11:51:17 | ... Automatic request from openSUSE.org:openSUSE:Factory by UpdateCrawler r1 | oertel | 2017-07-31 23:49:51 | ... osc copypac from project:SUSE:Factory:Head package:cups revision:93 ------------------------------------------------------------ So in the CUPS in Factory change with revision number 145 the part that requires the exact matching version-release of the other separated / splitted CUPS libraries packages is missing in CUPS for SLE15.