I’ve been aware of Add or Override Content in /usr - KDE Linux for many months, & some time ago i followed the given procedure to create “foo”, just to picture what happens. However, i still have not grasped what i can productively use this tool to accomplish. If someone might provide some practical examples hereafter herein pls, that might help.
For instance, atm my primary interest in a possible use of this tool, is whether it somehow could be a means to install my VPN’s GUI app, which hitherto afaik is incompatible with kdelinux.
The apps i d/l from Download Windscribe | Windscribe work fine in my ArchLinux & LMDE mutable systems. Can sysext somehow help me here in kdelinux?
Thx.
PS: To date i use my Windscribe account via four imported discrete wireguard server profiles in NetworkManager, but whilst better than nothing i lose most of the extra functionality this way.
sysext is just a /usr overlay from a folder in ur home. useful when u already have files u want under /usr. vendor .deb/.rpm installers that also write /etc and drop systemd units still fight kdelinux.
stuff ive actually used it for:
-a static cli i built (binary under ~/kde/usr/bin then sudo systemd-sysext refresh)
-a lone .so under ~/kde/usr/lib
-a .desktop under ~/kde/usr/share/applications pointing at that binary
for windscribe on kdelinux id stick with ur wireguard profiles in NetworkManager. the gui pkg wants a mutable system and the overlay wont carry /etc bits.
if u still wanna poke it: run set-up-systemd-extension, unpack whatever the windscribe pkg drops under /usr into ~/kde/usr, refresh, then systemd-sysext status.
Thank you, i think. Clearly you’re a more advanced user then me, so your advice is hard for me to comprehend, eg:
I don’t really know how to apply this wrt the WS download page i gave. For instance, just now i d/l the Arch pkg from that site, extracted it, & looked at the contents:
[kadee@kdelinux:~/Downloads/windscribe_2.24.12_amd64.pkg] $ ls -la
total 24
drwxr-xr-x 1 kadee kadee 82 Oct 3 14:18 .
drwxr-xr-x 1 kadee kadee 624 Oct 3 14:18 ..
-rw-r----- 1 kadee kadee 10077 Sep 1 03:25 .BUILDINFO
drwxr-xr-x 1 kadee kadee 20 Oct 3 14:18 etc
-rw-r--r-- 1 kadee kadee 1992 Sep 1 03:25 .INSTALL
-rw-r----- 1 kadee kadee 2146 Sep 1 03:25 .MTREE
drwxr-xr-x 1 kadee kadee 20 Oct 3 14:18 opt
-rw-r----- 1 kadee kadee 952 Sep 1 03:25 .PKGINFO
drwxr-xr-x 1 kadee kadee 16 Oct 3 14:18 usr
[kadee@kdelinux:~/Downloads/windscribe_2.24.12_amd64.pkg] $ cd usr
[kadee@kdelinux:…/Downloads/windscribe_2.24.12_amd64.pkg/usr] $
[kadee@kdelinux:…/Downloads/windscribe_2.24.12_amd64.pkg/usr] $ ls -la
total 0
drwxr-xr-x 1 kadee kadee 16 Oct 3 14:18 .
drwxr-xr-x 1 kadee kadee 82 Oct 3 14:18 ..
drwxr-xr-x 1 kadee kadee 14 Oct 3 14:18 lib
drwxr-xr-x 1 kadee kadee 50 Oct 3 14:18 share
[kadee@kdelinux:…/Downloads/windscribe_2.24.12_amd64.pkg/usr] $
so what do you advocate i should do with those non-usr directories?
yeah so that pkg dump is exactly why sysext wont carry windscribe for u.
sysext only overlays ~/kde/usr onto /usr. the etc/ and opt/ folders in that extract sit outside that. windscribe also wants its own service bits under those paths.
copying just usr/lib + usr/share into ~/kde/usr then refreshing might drop some files there, but the gui still wont wire up without /etc and /opt.
stick with the wireguard profiles in NetworkManager on kdelinux. thats the path that actually works on an immutable tree.
The sysext can also overlay /opt. After adding the /opt directory into the extension (at the same level of hierarchy as the /usr), you need to make systemd reload the extension so that it knows /opt is there:
Anything in /etc in the sysext is indeed ignored. (There is a parallel concept of ‘confexts’ which are like sysexts except that they target /etc, but those are intended for systems where /etc is immutable, so not KDE Linux.)
Of course, /etc is a writeable directory in KDE Linux, so one possibility is just copying the files in there from the Arch package.
I don’t really know AUR packaging well, but it looks like that .INSTALL file has a collection of shell functions to be run pre- and post-install.
I guess those would be run when you install on Arch, but they won’t be run just by placing them in a sysext.
They seem to add some users and groups, start systemd services, and change permissions on the files in /opt (in your case, via the sysext).
In principle that could be turned into a setup script on KDE Linux with a few adaptations, but obviously we’re straying some distance from “out of the box” territory.
It might work on Kapsule, because Kapsule is supposed to expose most of the host (including network setup) to the container. But definitely no guarantees since Kapsule is still under construction.
I feel silly for saying this, but in apparent absence of an export function like distrobox has, i simply do not know where to now look to find the actual Windscribe executable, to try launching it that way. Simply trying both Windscribe & windscribe in the active Archlinux Kapsule container in Konsole did not work [-bash: Windscribe: command not found and -bash: windscribe: command not found].
To separate if this is a “Windscribe” problem or a “Me - Ignorance” problem, i next installed some silly little GUI game in this same container, bovo, which installation also completed without error. Then, i tried launching it from the same cli, just by entering bovo… & instantly the GUI app launched & afaict seems to run properly.
From that comparison i thus provisionally conclude:
kapsule is an exciting project whose progress i now keenly await
Windscribe GUI app really can’t be used in kdelinux, alas
Most packages install an executable into /usr/bin. So (I haven’t checked), that package probably installs /usr/bin/bovo.
/usr/bin is almost always part of the user’s PATH. So you can just type bovo and the shell will look for it in all the PATH directories, and successfully find /usr/bin/bovo.
But Windscribe installs the executable into /opt/windscribe, which isn’t on the PATH. So from inside the Kapsule container, try the command with its full path:
/opt/windscribe/Windscribe
You could also invoke it from a shell outside the container:
kapsule enter archlinux /opt/windscribe/Windscribe
Thank you. Possibly part of the problem might be that, if you recall earlier in this thread, i had tried getting the GUI app to work via sysext, from which my /opt/windscribe/Windscribe is already occupied, even before today’s attempt with kapsule.
Thus maybe i need to delete this initial kapsule container, remove all my existing /etc, /usr, & /opt fragments relating to windscribe, then recreate the container, then try launching via that path from inside the container?
You might want to, just for the sake of tidiness. But it shouldn’t be necessary per se - when run from inside the Kapsule, /opt/windscribe/Windscribe refers to the container’s /opt, not to the host’s (sysext-enriched) /opt.
part of the problem may be the systemd service(s) not starting up, since they aren’t actually present until the overlay is applied, I think. You may want to try starting them manually before running the application GUI. I have no idea how to make this service load automatically in this sort of situation.
I had some experience doing something similar for the keyd key remapping daemon I compiled. It did work once I manually started the services, but I put down trying to figure out (or ask) how to have systemd load it once the overlay had been loaded.
The services never get enabled, because if you just put the package files in a sysext, the functions in .INSTALL never get called like they would when installing the package from the AUR.
If you enabled them, they should be ok at reboot, because sysexts get mounted early on.
One could try to put together an “install on KDE Linux script” based on that .INSTALL file but as I say, you’re getting quite a long way from things ‘just working out of the box’.
The attraction of using Kapsule here is that you “really install” the package in the container, including the install scripts.
Thank you both. I was away at dinner, but since then, still focusing on kapsule [i’ve still not done the sysext cleanup, now i understand there’s two separate /opt’s, so will do that housekeeping another time] i have fab news & frustrating news
fab = running kapsule enter archlinux /opt/windscribe/Windscribe
does launch the VPN GUI with no errors,
does let me log in with my account credentials,
does let me do my usual global server selection & activation,
running ping 9.9.9.9 -c7succeeds,
streaming internet radio in clementine works
frustrating = when thus connected to any of the Windscribe servers
browsers cannot load any tabs anymore
thunderbird can’t sych emails any more
flatpak update just hangs forever at Looking for updates…
…so in other words, the ostensibly large step forward here by using kapsule, in practical terms seems pointless, when i can’t do most of the important mandatory activities.
For a brief moment i wondered if maybe the kdelinuxFirewall [which i manually enable after each reboot, in System Settings, per my separate thread] might be clashing with the app, but even after disabling the firewall, exiting the VPN app, re-starting said app, as soon as i connect to any servers, the above-listed problems still arise.
Rats .. haha, this feels like the old aphorism about the snail on the well wall, creeping up then sliding down again.
All of the actions i listed, wrt cli, are done outside the container, in a regular Yakuake session [ie, the pinging, the flatpak update process]
All the Firefox & Thunderbird actions are done outside the container, in my regular FF & TB apps
Clementine is just my regular flatpak app
Though i have no idea how to prove or fix it, the fact that the two apps relying on DNS resolution, fail to work when the app is connected, implies possibly that DNS server resolving is broken when connecting to Windscribe servers that way? It’s certainly not a fundamental defective VPN app issue per se, because when i’ve booted back into my real Archlinux rather than kdelinux, i use that same app & it works perfectly… otherwise ofc i’d have abandoned it years ago.
This is all incomprehensible to me wrt root-cause & how to troubleshoot. I fear this likely signals the end of the road for this quixotic quest.
# this one with GUI app not running, & just using my Windscribe Wireguard config in NetworkManager [ie, my regular arrangement for months, given no GUI app hitherto possible in kdelinux]:
[kadee@kdelinux:~] $ resolvectl query kde.org
kde.org: 85.10.198.55 -- link: ws-sydney
-- Information acquired via protocol DNS in 9.1ms.
-- Data is authenticated: no; Data was acquired via local or encrypted transport: no
-- Data from: network
[kadee@kdelinux:~] $
# this one just naked on my ISP:
[kadee@kdelinux:~] $ resolvectl query kde.org
kde.org: 85.10.198.55 -- link: enp2s0
-- Information acquired via protocol DNS in 11.5ms.
-- Data is authenticated: no; Data was acquired via local or encrypted transport: no
-- Data from: network
[kadee@kdelinux:~] $
# this one with the container app running & connected to a server:
[kadee@kdelinux:~] $ resolvectl query kde.org
kde.org: 85.10.198.55 -- link: enp2s0
-- Information acquired via protocol DNS in 297us.
-- Data is authenticated: no; Data was acquired via local or encrypted transport: no
-- Data from: cache
[kadee@kdelinux:~] $
# this one also with the container app running & connected to a server; it simply hung, til i aborted the command [& note - i already had this page open in a browser tab, & it now also stopped loading]:
[kadee@kdelinux:~] $ resolvectl query virtualbox.org
^C
[kadee@kdelinux:~] [130] $
# this one with the container app still running but disconnected from any server [& note - the browser tab now resumed reloading]:
[kadee@kdelinux:~] [130] $ resolvectl query virtualbox.org
virtualbox.org: 138.1.33.162 -- link: enp2s0
-- Information acquired via protocol DNS in 374us.
-- Data is authenticated: no; Data was acquired via local or encrypted transport: no
-- Data from: cache
[kadee@kdelinux:~] $
For me it was compiled from source, same as I do in mutable distros. The systemd service never got started during boot, but it ran fine when I started it manually. If it could be run as a user service, it probably would have worked, I think, but this particular thing can’t, iirc.
I never saved the logs, so I can’t try and track the reason, and I don’t have a working PC or VM with KDE Linux at the moment so I may be missing something obvious of course. Like manually enabling the service or something? I don’t think this was the issue, but you never know.