site  contact  subhomenews

Improved support for btrfs

March 15, 2024 — BarryK

I posted earlier today about compiling 'btrfs-progs' linked-statically, as I want to include the 'btrfs' utility in the initrd:

https://bkhome.org/news/202403/btrfs-progs-compiled-statically-in-oe.html

I will also have the 'btrfs-progs' package in the main filesystem.

using Gparted, I created a btrfs filesystem in a partition in a USB-stick, but the icon for the partition did not display on the desktop.

Hmmm... I have never worked with btrfs before, despite it being around for so many years, and the choice for root filesystem of some distros such as Fedora. I looked through the scripts and found out what was wrong. Fixes committed:

https://github.com/bkauler/woofq/commit/00505fe6ccfdd950d3d89d011afa2bbf9d868724

For anyone interested in reading more about btrfs:

https://btrfs.readthedocs.io/en/latest/   

Tags: easy

Bugfix easyVoid non-US keyboard

March 10, 2024 — BarryK

Caramel reported this problem:

https://forum.puppylinux.com/viewtopic.php?p=113730#p113730

The problem is that there are scripts that expect the Xorg keyboard layout files to be at /etc/X11/xkb. The normal path is /usr/share/X11/xkb, with extras allowed in /etc/X11/xkb; however, Puppy Linux from the very early days had /usr/share/X11/xkb a symlink to /etc/X11/xkb

easyVoid has installed the keyboard layouts to the normal path, /usr/share/X11/xkb, not a symlink, so some scripts are not working.

This goes back a long way... when the keyboard layout is chosen in the initrd, it writes the selection to /etc/keymap. At startup of X from the commandline, /usr/bin/xwin script runs, and one thing this script does is call "keymap-set --xopt", which edits /etc/X11/xorg.conf.d/10-evdev-puppy.conf with the appropriate keyboard layout.

It is that 'keymap-set' script that is broken, as it looks at /etc/X11/xkb only. Forum member shinobar wrote that script in 2010, minor mods in 2012, 2015, 2016 and one small change in 2023.

I really should fix those scripts to look at /usr/share/X11/xkb, but for now have just implemented the easy solution; made /usr/share/X11/xkb into a symlink. Here is the woofV commit:

https://github.com/bkauler/woofq/commit/ae37d3c2d67bfe9374ff90809c357d51fd750fb1   

Tags: easy

Package uninstall fixes

March 10, 2024 — BarryK

Caramel has been performing some install and uninstall tests in easyVoid:

https://forum.puppylinux.com/viewtopic.php?p=113691#p113691

Yes, there are some issues; folders and icons getting left behind after a package is uninstalled. These issues apply to all Easy* variants. I have applied some fixes:

/usr/local/petget/removepreview.sh:

https://github.com/bkauler/woofq/commit/b28a64b591ad0647e1e2bc2cc30629330262f868

/usr/bin/xbps-remove.sh:

https://github.com/bkauler/woofq/commit/7ddf41bbd34fa72ed2be6e313d3fa5a186bdc08e

One issue was that you might create an icon on the desktop for an application, but after uninstalling the application, the desktop icon is still there. Sure, you can manually delete it, but now it is likely to get deleted automatically.   

Tags: easy

Bug in Client Manager

March 09, 2024 — BarryK

In a blog post posted yesterday:

https://bkhome.org/news/202403/testing-interaction-between-xbps-and-pkgget.html

...the last snapshot shows two ways to flip an app between running non-root or root. The second method, via Login Manager, doesn't work. Caramel posted about this:

https://forum.puppylinux.com/viewtopic.php?t=10909

...I posted a fix.

This bug applies to all recent EasyOSs, including easyVoid.   

Tags: easy

EasyVoid version 240308 pre-alpha

March 08, 2024 — BarryK

If anyone feels like they would like to try it:

https://distro.ibiblio.org/easyos/amd64/releases/void/

If you already have 6.0.1 or 6.0.2, you cannot update to 240308; they are completely different.

Previous blog post about the woofV project:

https://bkhome.org/news/202403/testing-interaction-between-xbps-and-pkgget.html

We are discussing easyVoid and woofV development in the forum:

https://forum.puppylinux.com/viewtopic.php?p=113611#p113611

With 240308, you can see how PKGget (PPM) is a GUI for XBPS, and either the PPM or the XBPS utilities can be used to install and remove packages.

Note that the "current" containerized desktop works; however, the other two container icons, "www" and "term", don't.

woofV is at /usr/local/woofV, and anyone who wants to try it, go for it. You will need to open a terminal in /usr/local/woofV/rootfs/0rootfs-skeleton, then run these scripts in sequence:

# ./create-skel
# cd ..
# ./1update-pkg-dbs
# ./2dl-start-pkgs
# ./3create-start-rootfs
# ./4create-wip-dep-order
# ./5populate-rootfs
# ./6post-process-rootfs
# ./7create-easy-sfs
# ./8create-drive-img

There is not yet an overall GUI. The end result will be 'easy-<date>-amd64.img', in /mnt/wkg/data/woofV/export

A reasonably fast Internet connection is required, and first time through will take awhile as over 1000 packages have to be downloaded.   

Tags: easy

Testing interaction between XBPS and PKGget

March 08, 2024 — BarryK

Previous post:

https://bkhome.org/news/202403/xbps-utilities-work-with-pkgget.html

Looking good. I can run 'xbps-install' and 'xbps-remove' in a terminal, and changes appear in PKGget. One thing needed fixing; I found that alias settings, as set in /etc/profile.d/xbps-aliases, are not recognized in a bash script. So I edited /usr/bin/vpm, now that works also. Here is an example:

img1

Then started PKGget, and it shows 'epdfview' as installed:

img2

I have implemented an enhancement in PKGget when install a package, for example, Abiword:

img3

...extra information is shown how to run the app as either non-root or root. Clicking on the help-button:

img4

PKGget also works inside the containerized desktop, but installed apps to run as "crippled root", not as a unique user.

I will probably upload a pre-alpha build of easyVoid, version 240308, tonight.   

Tags: easy

XBPS utilities work with PKGget

March 06, 2024 — BarryK

Here is the previous woofV project post:

https://bkhome.org/news/202403/easyvoid-problem-with-user-installed-packages.html

PKGget is a GUI frontend for XBPS, but actually the "Puppy database" format is still the intermediary. There are still /root/.packages/woof-installed-packages, user-installed-packages, Packages-* and *.files files, just like any normal pup.

Testing today, looking good when using the GUI; however, if the user wants to run the XBPS utilities directly in a terminal, any change such as install a package by running "xbps-install" or removed by running "xbps-remove", does not update the "puppy format" information in /root/.packages, hence the change does not appear in the GUI.

To fix this I have created /etc/profile.d/xbps-aliases:

https://github.com/bkauler/woofq/blob/main/easyos/easy-code/rootfs-skeleton/usr/local/woofV/rootfs/0rootfs-skeleton/extra/etc/profile.d/xbps-aliases

Which will run wrapper scripts:

https://github.com/bkauler/woofq/blob/main/easyos/easy-code/rootfs-skeleton/usr/bin/xbps-install.sh

https://github.com/bkauler/woofq/blob/main/easyos/easy-code/rootfs-skeleton/usr/bin/xbps-remove.sh

Currently not supporting 'vpm'.

There are other ways to do it. Could create a daemon, that does an inotify wait on the XBPS 'pkgdb-0.38.plist' installed-packages file and the repository database files. Anyway, will see how this alias method works.

EDIT 2024-03-07:
No problem with vpm; it should work fine with these aliases.

vpm is a bash script, intended to make XBPS management easier. See project:

https://codeberg.org/armin/vpm

Personally, I find the XBPS utilities easy to use, don't see any need for vpm. Anyway, it will be in easyVoid.

Interesting, I see that there is vpsm:

https://github.com/sineto/vpsm       

Tags: easy

easyVoid problem with user-installed packages

March 04, 2024 — BarryK

Here is the previous blog post in this easyVoid and woofV project:

https://bkhome.org/news/202403/xbpsget-cli-utility-to-install-xbps-packages.html

In a nutshell, woofV builds an easyVoid distribution with XBPS package manager handling all package installation, update, removal, etc. woofV creates 'easy.sfs' with all packages populated in it by XBPS.

However, there is an elephant in the room. Actually, there are a couple of elephants; considering just one of them here. The problem is, how to handle user-installed packages when there is a version update?

Here is the situation...

When XBPS installs a package, its details get added to file /var/db/xbps/pkgdb-0.38.plist. This is an XML text file, and information about all installed packages are in here, in alphabetical order. If, for example, I install 'abiword', various details about it, such as the description and size, get put into that file. Also, another file gets created, /var/db/xbps/.abiword-files.plist, XML also, that lists all the files in that package.

Say that the current version of easyVoid is "240304". Now, I used woofV and create a new release, say "240405". A user of "240304" can click on the "update" icon and download the new version. The three files 'vmlinuz', 'initrd' and 'easy.sfs' are extracted from the downloaded file, and after a reboot, the user has updated.

The problem is that 'easy.sfs' has /var/db/xbps/pkgdb-0.38.plist, which is the up-to-date packages in this new release. However, because of the layered filesystem, the old /var/db/xbps/pkgdb-0.38.plist will be "on top".

...which is just the start of the problems.

That particular problem is solved by the 'init' script in the initrd, which will delete /mnt/wkg/.session/var/db/xbps, that is, the folder on the top read-write layer. So, the /var/db/xbps files in easy.sfs will appear "on top".

The real problem is that this new 'pkgdb-0.38.plist' will not contain the information about any of the user-installed packages, nor will there be any '.<package name>-files.plist' files. XBPS will no longer know that they are installed. That is one of the elephants.

I thought of two possible solutions. Firstly, use XBPS to uninstall the user-installed packages before the reboot, then reinstall them after booting up the new release. Secondly, extract all the user-installed information out of pkgdb-0.38.plist, then merge it into the new pkgdb-0.38.plist after rebooting to the new release.

I decided on the latter solution. To implement that, wrote two scripts, 'pkgdb-extract-users' and 'pkgdb-merge-users'. Here they are:

https://github.com/bkauler/woofq/blob/main/easyos/easy-code/rootfs-skeleton/usr/local/woofV/support/pkgdb-extract-users

https://github.com/bkauler/woofq/blob/main/easyos/easy-code/rootfs-skeleton/usr/local/woofV/support/pkgdb-merge-users

...probably they could be implemented more efficiently using 'xmllint', 'xml2' and/or 'awk'.

When you click on the "update" desktop icon, the script /usr/local/easy_version/easy-update runs, and this will now run 'pkgdb-extract-users'. At reboot, the 'init' script in the initrd will delete the old pkgdb-0.38.plist and the hidden files, then /etc/rc.d/rc.update will run 'pkgdb-merge-users'. The changes to those three scripts are here:

https://github.com/bkauler/woofq/commit/9cb568dc618f00ea9393ac1d8fe81ae00a07b9bb

Could get XBPS to do an automatic update of user-installed packages also; will probably add that.

This is not yet tested.

As an extra note, I found it an interesting read; wiak, rockedge, jamesbond and peebee deliberating on the early design of VoidPup:

https://forum.puppylinux.com/viewtopic.php?t=4741

Hopefully one elephant has been negotiated out of the back door. Or rather, I had to demolish a wall to get it out. The other elephant is handling of the 'devx' SFS, which will be considered soon.

I would like to add one extra comment. It is awkward getting XBPS to function with a layered filesystem, aufs or overlayfs; however, it does bring a major advantage, support for snapshots. XBPS knows nothing about snapshots, but this is inherent in the design of EasyOS, and indeed in all layer-based pups such as those built from Woof-CE.

In the case of Easy, the previous 'vmlinuz', 'initrd' and 'easy.sfs' files will still exist. So, perchance you don't like the latest version, easy-peasy can roll back to the previous. So, we are adding major functionality to XBPS.        

Tags: easy