Bug 1769168 - Add dnfdragora to EPEL8
Summary: Add dnfdragora to EPEL8
Keywords:
Status: NEW
Alias: None
Product: Fedora EPEL
Classification: Fedora
Component: yumex-dnf
Version: epel8
Hardware: x86_64
OS: Linux
unspecified
high
Target Milestone: ---
Assignee: Orphan Owner
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2019-11-06 02:27 UTC by Edward Diener
Modified: 2020-10-03 22:24 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed:
Type: Bug


Attachments (Terms of Use)

Description Edward Diener 2019-11-06 02:27:17 UTC
I do not see yumex-dnf in EPEL8. I asked in the EPEL developer list that dnfdragora be created in EPEL8. Centos8, and I assume RHEL8, have no graphical package manager at all. Therefore there is a need to create one that works for workstation end-users. I was told to use bugzilla to make that request. So I have done so here, using yumex-dnf as the component since dnfdragora as a component does not exist in the component list above. I was also asked to mention that the following packages also need to be created for EPEL8, to support dnfdragora:

python3-cairosvg
python3-dnfdaemon
python3-notify2
python3-pystray
python3-yui

Thank you !

Comment 1 Mark Goldberg 2020-01-12 07:28:25 UTC
I found that if these rpms were installed (find them with rpmfind) using rpm -i --nodeps <link from rpmfind> (dangerous I know):

libyui-gtk-2.44.9-11.fc29.x86_64
ghex-libs-3.18.3-8.fc29.x86_64
libyui-3.3.3-4.fc29.x86_64
libyui-mga-1.0.8-0.15.gita6a160e.20160313.fc29.x86_64
libyui-mga-gtk-1.0.2-0.16.git22f2cf6.20131215.fc29.x86_64
libyui-mga-qt-1.0.3-0.16.gitb508e88.20140119.fc29.x86_64
dnfdragora-1.1.1-1.fc29.noarch
python3-cairosvg-1.0.20-9.fc29.noarch
libyui-qt-2.47.1-13.fc29.x86_64
python3-notify2-0.3.1-1.fc29.noarch
ghex-3.18.3-8.fc29.x86_64
libyui-mga-ncurses-1.0.2-0.16.git026f2e6.20131215.fc29.x86_64
libyui-ncurses-2.48.3-5.fc29.x86_64
python3-yui-1.1.2-12.fc29.x86_64
python3-dnfdaemon-0.3.19-4.fc29.noarch
osc-0.167.2-282.1.noarch

and these links created (dangerous I know):

/usr/lib64/libpython3.7m.so.1.0 -> /usr/lib64/libpython3.6m.so.1.0
/usr/lib64/python3.6/yui.py -> /usr/lib64/python3.7/site-packages/yui.py
/usr/lib64/python3.6/_yui.so -> /usr/lib64/python3.7/site-packages/_yui.so

dnfdragora runs.

I installed a package with prerequisites and it seems to work with one issue.
After it is done installing something it shows an error that DNF is locked by another process and exits.
You can restart it and continue working.

Comment 2 Edward Diener 2020-01-12 09:33:22 UTC
Are you saying that the Fedora 29 packages listed can be installed in CentOS8 ? If so can you not add those packages directly to EPEL8 ? Do you know why in your testing that dnfdragora says that DNF is locked by another process and exits after installing something ? Can this be permanently fixed or worked around in some way so that this "bug" does not occur at all ?

Your links are odd in that one link something in Python 3.7 is pretending to be in Python 3.6 while in the other two links something in Python 3.6 is pretending to be in Python 3.7. Are you sure that is correct or did you by any chance mispring those links ?

Comment 3 Mark Goldberg 2020-01-12 09:56:48 UTC
Note that some of the rpms above may not be required. I stopped when it worked and did not remove unneeded rpms. I'm sure the ghex is not needed for this but it is a nice tool to have.

You can install any rpm that does not conflict with those already installed by adding --nodeps. rpm then will install even if the dependencies are not satisfied. This often causes problems, but I chose rpms with the least incompatibilities I could find. RHEL6 is based on f28, I believe, but f28 rpms seem to have been taken down. I could not find them at least.

Some of the rpms are meant for python 3.7 so they install stuff with names including 3.7. Since only 3.6 is available, I fake things out by linking names with 3.6 to 3.7. There are typos in my first comment. The correct ones are:

/usr/lib64/libpython3.7m.so.1.0 -> /usr/lib64/libpython3.6m.so.1.0
/usr/lib64/python3.6/site-packages/yui.py -> /usr/lib64/python3.7/site-packages/yui.py
/usr/lib64/python3.6/site-packages/_yui.so -> /usr/lib64/python3.7/site-packages/_yui.so

There are 3.7 versions of yui.py and _yui.so and 3.6 versions are needed, so i linked the 3.6 versions to the 3.7 versions.
There is a 3.6 version of libpython3.6m.so.1.0 but libpython3.7m.so.1.0 is needed by the other 3.7 packages so I linked it that way.

As I said, the above is sufficient to make it work, but not all may be necessary. I spent enough time that I stopped when it worked.

I have no idea why the DNF locked error, but it is a minor annoyance, after the requested work is done, so I am not going to pursue it. I can accomplish what I want now.

Comment 4 Edward Diener 2020-01-12 16:55:07 UTC
What does "RHEL6 is based on f28" have to do with RHEL8 ( and CentOS8 ) ? Did you mean to say instead that "RHEL8 is based on f28" ? I do not understand why I would install any of the RPMs in your list with --nodeps; don't all the packages you list need their dependencies to work correctly. I will look at the dependencies for dnfdragora on fc31, which I currently run, and see if I can figure out what the actual dependency tree is for myself, and then install each needed rpm in CentOS8 using the equivalent fc29 rpm. I am mainly a C++ programmer ( among a few other languages ) but not a Linux/EPEL packager, so please do not take my comments as criticism of your work with this, but do you intend to create EPEL8 packages so that dnfdragora can be installed from EPEL8 ?

Comment 5 Mark Goldberg 2020-01-12 19:02:55 UTC
Another typo, forgive me, it was late. Yes, RHEL8 is based on F28. The major discrepancy was RHEL8 uses Python 3.6 and F29 used Python 3.7. I could not find rpms that depend on Python 3.6.

I'm not a programmer, but am an engineer. This is an "engineering" solution, good enough, and I don't want to spend any more time on it. I have often found that the dependencies are only "suggestions".
If the package does not really depend on the differences between Python 3.7 and 3.6, it will still work. Obviously this is not good for a commercial environment. I am using the academic version with self support, more as an academic exercise. I tried building the various packages from sources, but ran into issues with the Suse build for osc. I don't take any offense. I'm sure if I wanted to spend more time, that building from source would be possible. This is an expedient solution, finished at 2 in the morning. Having the packages built for RHEL8 is obviously better but it seem this has been orphaned and is not being worked.

Comment 6 Edward Diener 2020-01-13 21:13:12 UTC
There are f28 rpms at http://rpm.pbone.net/. I do not know if all the rpms in your list are there but I do see dnfdragora for f28 there. It will probably be best for me to try those on CentOS8, rather than from f29, once I can figure out the actual dnfdragora dependency tree. If I try to install the dnfdragora for f28 on CentOS8 with a dnf install command, I think dnf will tell me what dependencies are missing, so that might be the easiest way to determine what I actually need.

Comment 7 Mark Goldberg 2020-01-14 04:25:14 UTC
I created these two .repo files in /etc/yum.repos.d/:

F28.repo:

[F28-release]
name=F28 Release
baseurl=https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/28/Everything/x86_64/os/
enabled=0
gpgcheck=0
priority=99


F28_updates.repo:

[F28-updates]
name=F28 Updates
baseurl=https://archives.fedoraproject.org/pub/archive/fedora/linux/updates/28/Everything/x86_64/
enabled=0
gpgcheck=0
priority=99

Then you can install using:

dnf install dnfdragora --enablerepo F28-release --enablerepo F28-updates

but the daemon fails to start 

dnfdaemon-system[1666]:   File "/usr/share/dnfdaemon/dnfdaemon-system", line 26, in <module>
dnfdaemon-system[1666]:     from dnfdaemon.server import Logger
dnfdaemon-system[1666]:   File "/usr/lib/python3.6/site-packages/dnfdaemon/server/__init__.py", line 58, in >
dnfdaemon-system[1666]:     dnf.transaction.DOWNGRADE: operator.attrgetter('installed'),
dnfdaemon-system[1666]: AttributeError: module 'dnf.transaction' has no attribute 'DOWNGRADE'
systemd[1]: dnfdaemon.service: Main process exited, code=exited, status=1/FAILURE
systemd[1]: dnfdaemon.service: Failed with result 'exit-code'.
systemd[1]: Failed to start Package management dnf daemon.

you can uninstall with dnf history undo <number of install command>

So, something is not working right with F28 rpms, even though they install correctly.

Comment 8 Mark Goldberg 2020-01-14 04:31:55 UTC
I created two shell scripts

install_f29_dnfdragora_rpms.sh :

#!/bin/bash

mkdir dnfdragora_f29
cd dnfdragora_f29

wget http://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/Packages/p/python3-yui-1.1.2-12.fc29.x86_64.rpm
wget http://rpmfind.net/linux/fedora/linux/updates/29/Everything/x86_64/Packages/d/dnfdragora-1.1.1-1.fc29.noarch.rpm
wget http://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/Packages/l/libyui-3.3.3-4.fc29.x86_64.rpm
wget http://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/Packages/l/libyui-mga-ncurses-1.0.2-0.16.git026f2e6.20131215.fc29.x86_64.rpm
wget http://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/Packages/l/libyui-mga-1.0.8-0.15.gita6a160e.20160313.fc29.x86_64.rpm
wget http://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/Packages/l/libyui-ncurses-2.48.3-5.fc29.i686.rpm
wget http://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/Packages/l/libyui-gtk-2.44.9-11.fc29.x86_64.rpm
wget http://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/Packages/l/libyui-mga-gtk-1.0.2-0.16.git22f2cf6.20131215.fc29.i686.rpm
wget http://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/Packages/l/libyui-mga-qt-1.0.3-0.16.gitb508e88.20140119.fc29.x86_64.rpm
wget http://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/Packages/l/libyui-qt-2.47.1-13.fc29.x86_64.rpm
wget https://rpmfind.net/linux/fedora/linux/updates/29/Everything/x86_64/Packages/p/python3-notify2-0.3.1-1.fc29.noarch.rpm
wget https://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/Packages/p/python3-dnfdaemon-0.3.19-4.fc29.noarch.rpm
wget https://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/Packages/p/python3-cairosvg-1.0.20-9.fc29.noarch.rpm
wget https://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/Packages/d/dnfdaemon-0.3.19-4.fc29.noarch.rpm
wget https://www.rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/Packages/l/libyui-mga-gtk-1.0.2-0.16.git22f2cf6.20131215.fc29.x86_64.rpm

rpm -i --nodeps --force -v *

ln -s -v /usr/lib64/libpython3.6m.so.1.0 /usr/lib64/libpython3.7m.so.1.0
ln -s -v /usr/lib64/python3.7/site-packages/_yui.so /usr/lib64/python3.6/site-packages/_yui.so
ln -s -v /usr/lib64/python3.7/site-packages/yui.py /usr/lib64/python3.6/site-packages/yui.py
ln -s -v /usr/lib/python3.7/site-packages/dnfdaemon /usr/lib/python3.6/site-packages/dnfdaemon
ln -s -v /usr/lib/python3.7/site-packages/dnfdragora /usr/lib/python3.6/site-packages/dnfdragora
ln -s -v /usr/lib/python3.7/site-packages/cairosvg /usr/lib/python3.6/site-packages/cairosvg
ln -s -v /usr/lib/python3.7/site-packages/CairoSVG-1.0.20-py3.7.egg-info  /usr/lib/python3.6/site-packages/CairoSVG-1.0.20-py3.7.egg-info
ln -s -v /usr/lib/python3.7/site-packages/notify2-0.3.1-py3.7.egg-info /usr/lib/python3.6/site-packages/notify2-0.3.1-py3.7.egg-info
ln -s -v /usr/lib/python3.7/site-packages/notify2.py /usr/lib/python3.6/site-packages/notify2.py


uninstall_f29_dnfdragora_rpms.sh:
 
#!/bin/bash

rm_if_link(){ [ ! -L "$1" ] || rm -v "$1"; }

rpm -e --allmatches -v python3-yui dnfdragora libyui libyui-mga-ncurses libyui-mga libyui-ncurses \
libyui-gtk libyui-mga-gtk libyui-mga-qt libyui-qt python3-notify2 python3-dnfdaemon \
python3-cairosvg dnfdaemon libyui-mga-gtk

rm_if_link /usr/lib64/libpython3.7m.so.1.0
rm_if_link /usr/lib64/python3.6/site-packages/_yui.so
rm_if_link /usr/lib64/python3.6/site-packages/yui.py
rm_if_link /usr/lib/python3.6/site-packages/dnfdaemon
rm_if_link /usr/lib/python3.6/site-packages/dnfdragora
rm_if_link /usr/lib/python3.6/site-packages/cairosvg
rm_if_link /usr/lib/python3.6/site-packages/CairoSVG-1.0.20-py3.7.egg-info
rm_if_link /usr/lib/python3.6/site-packages/notify2-0.3.1-py3.7.egg-info
rm_if_link /usr/lib/python3.6/site-packages/notify2.py


The first script leaves the dnfdragora_f29 directory with the downloaded rpms in case you want to keep them. If you don't delete the directory, wget will subsequently download and add .1 .2 ... but that causes no problems.

Comment 9 Edward Diener 2020-01-16 01:12:32 UTC
(In reply to Mark Goldberg from comment #8)
> I created two shell scripts
> 
> install_f29_dnfdragora_rpms.sh :
> 
> #!/bin/bash
> 
> mkdir dnfdragora_f29
> cd dnfdragora_f29
> 
> wget
> http://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/
> Packages/p/python3-yui-1.1.2-12.fc29.x86_64.rpm
> wget
> http://rpmfind.net/linux/fedora/linux/updates/29/Everything/x86_64/Packages/
> d/dnfdragora-1.1.1-1.fc29.noarch.rpm
> wget
> http://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/
> Packages/l/libyui-3.3.3-4.fc29.x86_64.rpm
> wget
> http://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/
> Packages/l/libyui-mga-ncurses-1.0.2-0.16.git026f2e6.20131215.fc29.x86_64.rpm
> wget
> http://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/
> Packages/l/libyui-mga-1.0.8-0.15.gita6a160e.20160313.fc29.x86_64.rpm
> wget
> http://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/
> Packages/l/libyui-ncurses-2.48.3-5.fc29.i686.rpm
> wget
> http://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/
> Packages/l/libyui-gtk-2.44.9-11.fc29.x86_64.rpm
> wget
> http://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/
> Packages/l/libyui-mga-gtk-1.0.2-0.16.git22f2cf6.20131215.fc29.i686.rpm
> wget
> http://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/
> Packages/l/libyui-mga-qt-1.0.3-0.16.gitb508e88.20140119.fc29.x86_64.rpm
> wget
> http://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/
> Packages/l/libyui-qt-2.47.1-13.fc29.x86_64.rpm
> wget
> https://rpmfind.net/linux/fedora/linux/updates/29/Everything/x86_64/Packages/
> p/python3-notify2-0.3.1-1.fc29.noarch.rpm
> wget
> https://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/
> Packages/p/python3-dnfdaemon-0.3.19-4.fc29.noarch.rpm
> wget
> https://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/
> Packages/p/python3-cairosvg-1.0.20-9.fc29.noarch.rpm
> wget
> https://rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/
> Packages/d/dnfdaemon-0.3.19-4.fc29.noarch.rpm
> wget
> https://www.rpmfind.net/linux/fedora/linux/releases/29/Everything/x86_64/os/
> Packages/l/libyui-mga-gtk-1.0.2-0.16.git22f2cf6.20131215.fc29.x86_64.rpm
> 
> rpm -i --nodeps --force -v *
> 
> ln -s -v /usr/lib64/libpython3.6m.so.1.0 /usr/lib64/libpython3.7m.so.1.0
> ln -s -v /usr/lib64/python3.7/site-packages/_yui.so
> /usr/lib64/python3.6/site-packages/_yui.so
> ln -s -v /usr/lib64/python3.7/site-packages/yui.py
> /usr/lib64/python3.6/site-packages/yui.py
> ln -s -v /usr/lib/python3.7/site-packages/dnfdaemon
> /usr/lib/python3.6/site-packages/dnfdaemon
> ln -s -v /usr/lib/python3.7/site-packages/dnfdragora
> /usr/lib/python3.6/site-packages/dnfdragora
> ln -s -v /usr/lib/python3.7/site-packages/cairosvg
> /usr/lib/python3.6/site-packages/cairosvg
> ln -s -v /usr/lib/python3.7/site-packages/CairoSVG-1.0.20-py3.7.egg-info 
> /usr/lib/python3.6/site-packages/CairoSVG-1.0.20-py3.7.egg-info
> ln -s -v /usr/lib/python3.7/site-packages/notify2-0.3.1-py3.7.egg-info
> /usr/lib/python3.6/site-packages/notify2-0.3.1-py3.7.egg-info
> ln -s -v /usr/lib/python3.7/site-packages/notify2.py
> /usr/lib/python3.6/site-packages/notify2.py
> 
> 
> uninstall_f29_dnfdragora_rpms.sh:
>  
> #!/bin/bash
> 
> rm_if_link(){ [ ! -L "$1" ] || rm -v "$1"; }
> 
> rpm -e --allmatches -v python3-yui dnfdragora libyui libyui-mga-ncurses
> libyui-mga libyui-ncurses \
> libyui-gtk libyui-mga-gtk libyui-mga-qt libyui-qt python3-notify2
> python3-dnfdaemon \
> python3-cairosvg dnfdaemon libyui-mga-gtk
> 
> rm_if_link /usr/lib64/libpython3.7m.so.1.0
> rm_if_link /usr/lib64/python3.6/site-packages/_yui.so
> rm_if_link /usr/lib64/python3.6/site-packages/yui.py
> rm_if_link /usr/lib/python3.6/site-packages/dnfdaemon
> rm_if_link /usr/lib/python3.6/site-packages/dnfdragora
> rm_if_link /usr/lib/python3.6/site-packages/cairosvg
> rm_if_link /usr/lib/python3.6/site-packages/CairoSVG-1.0.20-py3.7.egg-info
> rm_if_link /usr/lib/python3.6/site-packages/notify2-0.3.1-py3.7.egg-info
> rm_if_link /usr/lib/python3.6/site-packages/notify2.py
> 
> 
> The first script leaves the dnfdragora_f29 directory with the downloaded
> rpms in case you want to keep them. If you don't delete the directory, wget
> will subsequently download and add .1 .2 ... but that causes no problems.

Thanks ! I will try this out. I do not understand the last line of your comment of "wget
will subsequently download and add .1 .2 ... but that causes no problems."

Also I am curious if just using:

[F29-release]
name=F29 Release
baseurl=https://archives.fedoraproject.org/pub/archive/fedora/linux/releases/29/Everything/x86_64/os/
enabled=0
gpgcheck=0
priority=99

[F29-updates]
name=F29 Updates
baseurl=https://archives.fedoraproject.org/pub/archive/fedora/linux/updates/29/Everything/x86_64/
enabled=0
gpgcheck=0
priority=99

along with your links actually works. I will look and see if the F29 archives matches your wgets as to the archives latest releases for each package you manually wget.

Comment 10 Mark Goldberg 2020-01-16 01:27:37 UTC
If you download the same file again to the same directory, wget will download and rename it with a .1, .2 , .3 at the end. rpm will realize it is the same file and only use one of each.


If you try to use dnf with the .repo files for F29, it will try to update a lot of other EL8 rpms with F29 rpms, probably breaking a lot of things. It may be very difficult to recover if the system stops working. For example, it will try to update dnf and rpm, with ones that will not be able to get the EL8 rpms that you have to be registered for. If you ever see it ask to replace 50 rpms, please say no!

Comment 11 Fedora Admin user for bugzilla script actions 2020-05-04 17:13:13 UTC
This package has changed maintainer in the Fedora.
Reassigning to the new maintainer of this component.

Comment 12 Fedora Admin user for bugzilla script actions 2020-07-28 02:56:25 UTC
This package has changed maintainer in the Fedora.
Reassigning to the new maintainer of this component.

Comment 13 Edward Diener 2020-10-03 22:24:22 UTC
While I am appreciative with the work that Mark Goldberg did with this to get dnfdragora to work on CentOS8, even with some problems, I am wondering if EPEL8 package developers are still willing to create an EPEL8 package for dnfdragora. I know that CentOS8 has had no graphical package manager for dnf since it was created more than a year ago. I can see that supposedly this package has changed maintainer. But this package does not exist in EPEL8 as an actual package for dnfdragora that the end-user can install via dnf. Can this be rectified so that an actual package can be installed and then used as a graphical package manager on CentOS8 using EPEL8 ?


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