|
Bugzilla – Full Text Bug Listing |
| Summary: | recent update of package 'man' is causing installation errors | ||
|---|---|---|---|
| Product: | [openSUSE] openSUSE Tumbleweed | Reporter: | Giacomo Comes <comes> |
| Component: | Other | Assignee: | Dr. Werner Fink <werner> |
| Status: | RESOLVED FIXED | QA Contact: | E-mail List <qa-bugs> |
| Severity: | Normal | ||
| Priority: | P5 - None | CC: | comes |
| Version: | Current | ||
| Target Milestone: | --- | ||
| Hardware: | Other | ||
| OS: | Other | ||
| Whiteboard: | |||
| Found By: | --- | Services Priority: | |
| Business Priority: | Blocker: | --- | |
| Marketing QA Status: | --- | IT Deployment: | --- |
|
Description
Giacomo Comes
2024-01-31 05:45:40 UTC
Does /usr/lib/tmpfiles.d/man-db.conf exists? Does /var/cache/man/ exists? Is this a container or full system with running systemd? What happens is you run /usr/bin/systemd-tmpfiles --create /usr/lib/tmpfiles.d/man-db.conf (if first answer is yes of course and we have a running systemd) I don't have this errors ... but here a /var/cache/man/ exists Please give 'man' from https://download.opensuse.org/repositories/Base:/System/standard/ a try .. guess: architecture is x86_64 (In reply to Dr. Werner Fink from comment #1) > Does /usr/lib/tmpfiles.d/man-db.conf exists? Yes > Does /var/cache/man/ exists? Yes > Is this a container or full system with running systemd? full system with systemd > What happens is you run > > /usr/bin/systemd-tmpfiles --create /usr/lib/tmpfiles.d/man-db.conf command get executed, no error messages (In reply to Dr. Werner Fink from comment #3) > Please give 'man' from > > https://download.opensuse.org/repositories/Base:/System/standard/ > > a try .. guess: architecture is x86_64 I did a new installation and now I don't see the error as well. Either the recent mass rebuild fixed the problem, or there was some hiccup during my previous installation. Anyway, since I cannot reproduce the problem anymore, I'm going to close this bug. If the problem resurface again, I'll reopen it. This is an autogenerated message for OBS integration: This bug (1219370) was mentioned in https://build.opensuse.org/request/show/1145198 Factory / man The bug is back and this time I had the opportunity to try several installation and I think I understood what is going on. The installation I did was with tumbleweed snapshot 20240208. I have a local copy of it so I can do several installation test without worrying about new packages being available in tumbleweed. During a installation, after the 'man' package is installed the error messages about '/var/cache/man/nnnnn not found' starts to appear in /var/log/zypp/history. Each error message is printed after the corresponding package is installed. The error is consistent with the fact that /var/cache/man does not exist while the packages are installed, because it gets created at the end of the installation process when the transpost scriptlet of the package 'man' get executed. During the installation, while the error messages were written in /var/log/zypp/history, I decided to run: /usr/bin/systemd-tmpfiles --create /usr/lib/tmpfiles.d/man-db.conf and after that /var/cache/man was created and in /var/log/zypp/history there were no more error messages. It looks to me like the macro %transfiletriggerin defined in the package 'man' is executed not at the end of the transaction, but at the end of each package installation, like if it was a %filetriggerin macro. If I have to guess, there is a bug in the code that decides when to run the filetrigger macro. Hmm ... I had added some lua code to exactly catch this case ... from https://build.opensuse.org/request/show/1145198 ``` %if 0%{?suse_version} >= 1699 %transfiletriggerin -p <lua> -- %{_mandir} %else %filetriggerin -p <lua> -- %{_mandir} %endif %trigger_functions stat = posix.stat("%{_localstatedir}/cache/man/index.db") if stat then execute("%{_bindir}/mandb", "--quiet") else domkdir = false stat = posix.stat("%{_localstatedir}/cache/man") if not stat then domkdir = true elseif not (stat.type == "directory") then domkdir = true os.remove("%{_localstatedir}/cache/man") end if domkdir then posix.mkdir("%{_localstatedir}/cache/man") posix.chown("%{_localstatedir}/cache/man", "man", "man") end execute("%{_bindir}/mandb", "--quiet", "--create") end ``` does this code really not work for you? I had several times removed /var/chache/man and reinstalled with success the package man The tumbleweed snapshot I was using did not have the updated man package. Let me use the latest snapshot and see how it goes. This is an autogenerated message for OBS integration: This bug (1219370) was mentioned in https://build.opensuse.org/request/show/1146144 Factory / man I tested the current tumbleweed snapshot which contains the man package with SR#1145198. There are no error messages in /var/log/zypp/history during the installation. When the man package with SR#1146144 appears in next few days in tumbleweed I'll test it too and report here. I tested the latest tumbleweed snapshot which includes man-2.12.0-4.1 with SR#1146144. At the end of the installation I found the following error message in /var/log/zypp/history: # 2024-02-17 21:15:18 man-2.12.0-4.1.x86_64.rpm installed ok # Additional rpm output: # Failed to open '/usr/lib/tmpfiles.d/man-db.conf': No such file or directory # Updating /etc/sysconfig/cron ... # Created symlink /etc/systemd/system/timers.target.wants/man-db.timer -> /usr/lib/systemd/system/man-db.timer. # 2024-02-17 21:15:18|install|man|2.12.0-4.1|x86_64||openSUSE-20240216-0|523c08bff4873411abcc210c900a98906806989bff5079c7c891637b1d672951a47e659cdd5d7a2866f06b4e1732517ebcad400154be8e2d7ee5b83c4643a160| On a fresh installation, during the pre scriptlet execution, before man istelf is installed, /usr/lib/tmpfiles.d/man-db.conf does not exist yet. May be the post scriptlet is the proper location for such failing command? (In reply to Giacomo Comes from comment #12) > > On a fresh installation, during the pre scriptlet execution, before man > istelf is installed, /usr/lib/tmpfiles.d/man-db.conf does not exist yet. > > May be the post scriptlet is the proper location for such failing command? The previous location was %postrans ... the real problenm is that due bug boo#1215538 a pure systemd based package should work without systemd. This is an autogenerated message for OBS integration: This bug (1219370) was mentioned in https://build.opensuse.org/request/show/1147518 Factory / man After the last change in the man package, there are no more errors during the installation. The issue is fixed. Closing the bug. |