Some problems after upgrading to Tumbleweed

I started with LEAP 15.1 x86_64; upgraded (?) to Tumbleweed.

One of the more important apps for me is DisplayCal, a color management program. Worked fine on LEAP. It now needs some python 2.7 modules that were removed during installation. A couple of them are installed for python 3; they are not good enough.

Where might I find python2 modules for Opensuse? They are not in the standard repos.

As I understand it, python-2 is completely removed from Tumbleweed. You will need a newer version of your program that uses python-3 (if such a version is available).

I’d run with a container (podman). Take a base image (Leap if there’s still python2 in there, otherwise find another distro), then install the software. Mount the X socket and Xauthorithy and run.

No version available for the current Tumbleweed.

I did download some python2 modules from the LEAP 15.2 OSS repo. Maybe not the best way to go about this, but the app works fine now.

Hmm. I read “I’d run blah blah blah. Mount blah blah blah and run.” Perhaps a bit more detail?

Sure! I’ve read you managed to “fix” the issue but this might be useful knowledge for you.

Containers/sandboxes/namespaces/jails/chroots are a mechanism to create a virtual “something” inside your computer, while providing bare metal performance, that is, there’s no virtualization/emulation involved. This “something” at least is a mount namespace, but usually includes user, network, pid, ipc, etc, so containers can be pretty much isolated from the host operating system. They can see only host resources that were allowed for them to see, while the host can see everything inside a container. The only thing a container and the host OS must absolutely share is the kernel, everything else can come from another distro.

If a software isn’t provided by the repos, I’d consider a containerized approach. This way I keep my machine “untainted” by packages which can possibly create runtime issues to the system. Tumbleweed moves only forward, so legacy packages are best run in a container.

The main feature of containers is that they are portable, that is, they bring everything that is needed to run a given software. As such, they are popular with server-side software. Nevertheless it’s possible to run graphical applications on it, if you provide a graphical context for them to run. In Linux/Xorg environment the X11 protocol can be leveraged.

First of all, you’ll need to install either docker or podman. They differ in how they manage images and containers. Docker uses a daemon, while podman does not.

Then you’ll need to create a file named Dockerfile to describe the environment:

FROM registry.opensuse.org/opensuse/leap

RUN zypper --non-interactive in --recommends python2 DisplayCAL dejavu-fonts
RUN useradd -mr -u 1000 -g 100 user

USER user
WORKDIR /home/user

CMD "displaycal"]

Build the image once:

docker build -t displaycal .

Then run:

docker run --rm --env "DISPLAY" --volume=/tmp/.X11-unix:/tmp/.X11-unix:ro --volume=$XAUTHORITY:/home/user/.Xauthorithy:ro --env "XAUTHORITY=/home/user/.Xauthorithy" displaycal

Note that I don’t use this tool, so I don’t know whether it needs anything else to run. Sometimes it’s needed to pass additional volumes/privileges to the container.