@radky @Marv @jrb
Although the version of the Puppy Package Manager adapted for Debian and the Overlay file system omits some of the expected functions of the legacy version, I offer fixes for the issues in the attached package.
There are two regressions in the installer, both fixed by a one-line change. The timestamps of installed files get overridden by the time of installation. The other issue relates to the handling of files that replace a symlink: If the old version of a file is actually a link, the file gets installed to the target of that old link!
Both issues are due to the copying of the expanded tarball to the install locations and are resolved by changing the copy (cp) command from:
cp -fr ${WKDIR}/* /
to:
cp -ar --remove-destination ${WKDIR}/* /
The uninstall regression is that uninstalled files that replaced files that are part of the installation are not replaced by the original versions. This leaves the installation versions unusable because the files are missing.
The problem with the Overlay file system is that it is impacted by changes to an individual layer of the layered file system, which the aufs (and its predecessor) tolerated. My solution merely changes the visible (or deleted) files, to restore the old version of a file. Deleted files are represented by zero-length, no-permission files that cannot be deleted without damaging the layered file system.
With that technique, though, installation files that a package deleted will be copied from the installation to the pupsave file/directory, whereas with aufs the "whiteout" indicator was simply deleted from the second layer of the file system as well as the top layer, to expose the installation-layer copy.
With the uninstall fix, save-file space is not recovered as it was. I am considering a way to recover the space during the next reboot.
If anyone has reservations about the uninstall changes, please post them.
Note that installing the package will initially fail but will succeed if you immediately install it again. This is because the package changes the install script while it is installing that package; the second install uses the new version.
Richard