www.cendio.com
Bug 5202 - package installer doesn't work with dnf
: package installer doesn't work with dnf
Status: CLOSED FIXED
: ThinLinc
Server Installer
: trunk
: PC Unknown
: P2 Normal
: 4.11.0
Assigned To:
:
:
:
: 7328 7342
  Show dependency treegraph
 
Reported: 2014-06-30 10:00 by
Modified: 2019-05-20 15:16 (History)
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


Attachments


Note

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


Description From cendio 2014-06-30 10:00:34
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 From cendio 2015-06-30 14:59:02 -------
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 From cendio 2016-03-11 17:19:35 -------
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 From cendio 2016-04-01 14:09:26 -------
Bug 4208 might be a solution to this.
------- Comment #4 From cendio 2016-06-29 14:27:25 -------
As a start I've added a platform specific note for Fedora. Will do the same for
Ubuntu.
------- Comment #5 From cendio 2016-06-29 14:28:45 -------
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 From cendio 2018-12-18 13:40:20 -------
*** Bug 7296 has been marked as a duplicate of this bug. ***
------- Comment #7 From cendio 2018-12-18 13:41:01 -------
Bug 7296 has details on the situation for RHEL 8, which has replaced yum with
dnf.
------- Comment #8 From cendio 2019-04-09 10:01:26 -------
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 From cendio 2019-04-09 10:22:20 -------
(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 From cendio 2019-05-14 10:21:11 -------
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:

https://dnf.readthedocs.io/en/latest/api.html

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 From cendio 2019-05-14 10:39:07 -------
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 From cendio 2019-05-14 12:57:25 -------
This method seems to work fine. I did find some bugs in the API documentation
though:

https://bugzilla.redhat.com/show_bug.cgi?id=1709352
https://bugzilla.redhat.com/show_bug.cgi?id=1709783

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:

https://bugzilla.redhat.com/show_bug.cgi?id=1709359
------- Comment #13 From cendio 2019-05-14 13:07:08 -------
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 From cendio 2019-05-17 12:27:21 -------
Should be done now. Seems to work well on RHEL 8 and Fedora Rawhide.
------- Comment #19 From cendio 2019-05-20 15:16:26 -------
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.