Bug 5202 - package installer doesn't work with dnf
Summary: package installer doesn't work with dnf
Alias: None
Product: ThinLinc
Classification: Unclassified
Component: Server Installer (show other bugs)
Version: trunk
Hardware: PC Unknown
: P2 Normal
Target Milestone: 4.10.1
Assignee: Pierre Ossman
Keywords: relnotes, samuel_tester
: 7296 (view as bug list)
Depends on:
Blocks: 7328 7342
  Show dependency treegraph
Reported: 2014-06-30 10:00 CEST by Aaron Sowry
Modified: 2019-07-11 16:53 CEST (History)
2 users (show)

See Also:
Acceptance Criteria:
* tl-setup should clearly show which packages are directly needed, and which are only dependencies * tl-setup should show progress whilst installing packages (in GUI mode) * the log file should contain information about the package installation process * dnfhelper should be included in the sources package


Description Aaron Sowry cendio 2014-06-30 10:00:34 CEST
YUM will be replaced[1] with DNF from Fedora 22 onwards, which presumably means it will end up in RHEL as well. We should check that the ThinLinc installer plays nicely with this package manager, and that any syntax/behaviour changes[2] are accommodated for.

[1] http://fedoraproject.org/wiki/Changes/ReplaceYumWithDNF
[2] http://akozumpl.github.io/dnf/cli_vs_yum.html
Comment 1 Pierre Ossman cendio 2015-06-30 14:59:02 CEST
Tried a fresh install of Fedora 22 and yum is indeed gone so tl-setup can no longer provide a smooth installation. Opening for discussion.
Comment 2 Samuel Mannehed cendio 2016-03-11 17:19:35 CET
One of the effects of this on Fedora 23 is that tl-setup doesn't install all necessary packages. One of these packages is selinux-policy-devel. If the user misses, like I have done a few times, that tl-setup asks you to install this manually, you will not get a very obvious error. The log mentions in that it didn't manage to install a few things, however.

The result when you try to login is that the client says there are no working agents. And the following appears in vsmagent.log:

> tl-session: tl-xinit exited with status=71
> subprocess: execvp: Permission denied

An intermediate solution could perhaps be to give the administrator a warning.
Comment 3 Pierre Ossman cendio 2016-04-01 14:09:26 CEST
Bug 4208 might be a solution to this.
Comment 4 Pierre Ossman cendio 2016-06-29 14:27:25 CEST
As a start I've added a platform specific note for Fedora. Will do the same for Ubuntu.
Comment 5 Pierre Ossman cendio 2016-06-29 14:28:45 CEST
Oops. That comment was for bug 5742, which added a note for both the Python/PyGTK issue, and the DNF issue (which is relevant for this bug).
Comment 6 Pierre Ossman cendio 2018-12-18 13:40:20 CET
*** Bug 7296 has been marked as a duplicate of this bug. ***
Comment 7 Pierre Ossman cendio 2018-12-18 13:41:01 CET
Bug 7296 has details on the situation for RHEL 8, which has replaced yum with dnf.
Comment 8 Peter Åstrand cendio 2019-04-09 10:01:26 CEST
On RHEL8 one gets:

"ThinLinc requires a few libraries and binaries to work as expected.
This system lacks one or more of them and you need to manually install
the packages which provides:

  libutil.so.1, libnspr4.so, libssl3.so, librt.so.1, libz.so.1,
libgcc_s.so.1, libcrypt.so.1, libpthread.so.0, libgssapi_krb5.so.2,
libnss3.so, libncurses.so.5, libpam.so.0, libm.so.6, libdl.so.2,
libX11.so.6, libc.so.6, ss, /usr/sbin/sendmail, gs, pgrep, xauth"

Workaround is to run dnf manually:

dnf install libutil.so.1 libnspr4.so /usr/lib64/libssl3.so librt.so.1 libz.so.1 libgcc_s.so.1 libcrypt.so.1 libpthread.so.0 libgssapi_krb5.so.2 /usr/lib64/libnss3.so /usr/lib64/libncurses.so.5 libpam.so.0 libm.so.6 libdl.so.2 libX11.so.6 libc.so.6 /usr/sbin/ss /usr/sbin/sendmail /usr/bin/gs /usr/bin/pgrep /usr/bin/xauth

Note that /usr/lib64 is required for some libs, or only the i686 version will be installed.
Comment 9 Peter Åstrand cendio 2019-04-09 10:22:20 CEST
(In reply to comment #8)
> On RHEL8 one gets:
> Workaround is to run dnf manually:

Also required:

# dnf install selinux-policy-devel

Also useful:

# dnf install cups
Comment 10 Pierre Ossman cendio 2019-05-14 10:21:11 CEST
dnf does unfortunately not seem to have a "batch" mode where it prints well structured output. It does have an API though that they claim they'll keep stable:


A problem is that it is essentially Python 3 only as that is what dnf uses on both RHEL 8 and current Fedora versions.

We could solve this by creating our own "dnf" command that is a front-end for the API, but gives us the structured output we are currently lacking from the normal "dnf".
Comment 11 Pierre Ossman cendio 2019-05-14 10:39:07 CEST
RHEL 8 also has the fun detail of having their "Platform Python" for system tools like dnf. Right now this is the same as their standard Python 3, but they have indicated that this might change. So to safely access the API we probably need to use the same "Platform Python".
Comment 12 Pierre Ossman cendio 2019-05-14 12:57:25 CEST
This method seems to work fine. I did find some bugs in the API documentation though:


There are also a few functions that aren't officially part of the API that we'd like to use to get details about the transaction. I've added a request to make these official:

Comment 13 Pierre Ossman cendio 2019-05-14 13:07:08 CEST
I did not find an API for locking, unfortunately. This has the potential risk of the system changing between us showing what we intend to do, and actually doing it.

I'm not sure if it is worth trying to sort this out. To solve it I guess we would need to make sure the process using the DNF API stays alive and that we have a more active bidirectional communication with it.
Comment 18 Pierre Ossman cendio 2019-05-17 12:27:21 CEST
Should be done now. Seems to work well on RHEL 8 and Fedora Rawhide.
Comment 19 Samuel Mannehed cendio 2019-05-20 15:16:26 CEST
It was a bit tricky to test on RHEL 8, but with these steps I managed:

 1. manually run: "dnf install python2" (bug 7295)
 2. to start the installer: "PYTHON=python2 ./install-server"
 3. in tl-setup: de-select the options to install python-ldap (7330) and pygtk-libglade (7329)

* text-mode works fine, logs errors about python-ldap and pygtk-libglade

* GUI-mode is a bit trickier since you have to go back one step and deselect the package installation when python-ldap and libglade fails. This is something our customers might have problems with.

* log file looks good

* dnfhelper is included in the server bundle, under "sources/thinlinc-tlmisc-open-sources.tar.gz"

Looks good.
Comment 20 Pierre Ossman cendio 2019-07-11 10:28:09 CEST
I'm getting spam in tlsetup.log on systems not running DNF: "Could not import DNF API". Very confusing.
Comment 22 Pierre Ossman cendio 2019-07-11 13:45:28 CEST
Fixed now
Comment 23 Samuel Mannehed cendio 2019-07-11 16:53:24 CEST
Looks good.

Verified that I could also see the problem on Ubuntu 18.04, and that it is now fixed with build 6178.r34322.jenkins1406.

Note You need to log in before you can comment on or make changes to this bug.