Obtaining Alien & Difficult Applications

Moderator: Forum moderators

Post Reply
User avatar
mikeslr
Posts: 2963
Joined: Mon Jul 13, 2020 11:08 pm
Has thanked: 178 times
Been thanked: 917 times

Obtaining Alien & Difficult Applications

Post by mikeslr »

Under Puppys No Package Manager is Perfect.

Puppys are 'binary compatible' to some operating system published by some Major distro, most often one by Ubuntu, debian, and Slackware, recently Void. Binary compatible does not mean identical. It only means that significant, foundation binaries of a particular operating system were used and that via Puppy Package Manager access is provided to the repositories of that version of the Major Distro.

Between the foundation binaries and applications a user might run --e.g. firefox, KDEnlive, gimp-- are infrastructure applications: libraries/dependencies. Puppys' infrastructure is often unique to Puppys. And the infrastructure used by the operating system whose binaries Puppys have employed may be absent. This is often the case when Qt, Qt5 and python libraries are among the infra-structure that was included in the Major Distro but absent from Puppy.

As a result, although Puppy Package Manager provides access to the repo of its binary-compatible distros repositories, applications installed from those repositories may not run OOTB.

Puppy Package Manager is good, but not perfect. pkg-cli, http://murga-linux.com/puppy/viewtopic. ... 649#985531 and pkg2, viewtopic.php?p=51728&sid=4c8337c47760d ... a78#p51728 are even better once you've mastered them. I haven’t. But my understanding is that among their capabilities is that –unlike Puppy Package Manager-- it is fairly easy to add repositories.

Caution: Know your Puppy and the distro whose repositories you are adding. Linux distros have substantially diverged in how they build applications. Ubuntu frequently uses libraries modified from those first published by debian. So while debian debs can often be used in Puppys binary compatible to Ubuntus, the same can’t be said about using Ubnutu debs in Puppys binary compatible to debian. Slackware has its own way of doing things. Moreover, recently some major distros have implemented the ‘User-Merge’ Rule restricting where libraries can be located. Older Puppys and some new Puppys don’t follow that Rule. Even if ultimately usable, the libraries of packages not following that Rule would have to be relocated to comply with that Rule if they are to be used in Puppy following that Rule. And vice-versa.

Some Puppys now offer apt and or synaptic or Void’s Official Package manager as the Package Manager or as an Alternate Package Manager. They are better than PPM, but still not perfect. They only know what dependencies are necessary for an application to run under the binary-compatible Major Distro.

I don’t know how to compile applications. But for years I’ve built applications not otherwise available to a Puppy using PPM, and more recently Apt/Synaptic. And occasionally wasted a lot of time trying to. The two tools I use are PaDS and ListDD. Your Puppy may already have ListDD builtin: Menu>Utilities>ListDD. If not, it can be downloaded from https://www.forum.puppylinux.com/viewto ... 260#p32260. ListDD will examine all the libraries then installed –Right-Click its binary(ies), select ListDD from the popup menu, and the “Missing” tab at the bottom will reveal what’s missing. It can also suggest what may be missing from an extracted package not yet installed. But remember it only searches ‘installed’ libraries. The package, itself, may include some/all missing libraries. Look in all the folders under /lib, /usr/lib and /usr/local/lib of an extracted package. Further information about ListDD can be found on its thread.

The most recent version of PaDS can be found here, https://www.forum.puppylinux.com/viewto ... 6355#p6355. Read that thread for restrictions, limitations and advice. Reading the thread on the Old Forum, https://oldforum.puppylinux.com/viewtopic.php?t=113888 may provide additional insight.

What PaDS 1.17 does is serially decompress all the packages you’ve placed in a named folder (e.g. my-app), copy their contents into a work directory in RAM and generate [at /root] an SFS (e.g. my-app.sfs) you can SFS-load and test including using ListDD to determine if there remain missing dependencies. If so, SFS-Unload, find the missing, place them in the work directory and re-run PaDS. [Tip: Unless you move the SFS out of /root before SFS-unloading it will be deleted].

I’m not going to again provide details about using PaDS and ListDD as I’ve done so several times on the above mentioned threads and the posts I’ve linked to below. Rather, I’ll take this opportunity to note what I think may not be obvious especially with respect to their use under recent Puppys.

Recommendation: Find an alternative application. Alternatives often accomplish the same thing, differing from a User’s prospective only in what their GUIs present. Do you really want to spend your time building applications rather than using them?

Caution 1: First Backup your SaveFile/Folder. If you really screw up only the SaveFile/Folder contains your errors. The rest of your system files are in READ-ONLY file-systems. Deleting the SaveFile/Folder returns you to a pristine system that will use your backed-up SaveFile/Folder.
[My quick way of backing up a SaveFile/Folder is to boot ‘pfix=ram’, Right-Click the SaveFile/Folder, select Duplicate from the pop-up menu, and give the duplicate a name which Puppy won’t load or offer to load on boot-up: e.g. fossapup64Save >X1fossapup64Save. Not sure the same can be done when Overlays are employed].

Caution 2: Run your Puppy under Pupmode 13. See this post, https://www.forum.puppylinux.com/viewto ... 183#p97183 and the advantage briefly mentioned below.

Caution 3: If ListDD or Control file --see below--indicates that what is missing is glibc higher than that built into your Puppy, Quit. A Puppy can only have one version of glibc built-in. Upgrading is difficult to impossible and if successful will likely break some (many) applications depending on the older glibc. It may be possible to build a portable-application with a different glibc and instructions to use it, but that is also rather difficult. Far simpler to deploy a newer Puppy: it only needs its own folder and a listing on your boot-menu.

I start my search for missing dependencies using Puppy Package Manager’s Search box. If, for example, what was missing was ‘libXfixes.so.3’, my search term would be ‘libXfixes’: The repos PPM access may have newer versions you can use by creating a symbolic link.

If using PPM is unsuccessful, I’ll open a web-browser to https://pkgs.org/. pkgs.org’s Search Box will generate a display all repos of many major distro version’s repositories having packages meeting the search criteria. Try to stay as close as possible to your Puppy’s binary compatible distro: the further you stray the more likely you are to encounter problems, some impossible to solve. Following the links pkgs.org provides will lead you to a download location. Note that on a web-pages you encounter will be a list of the dependencies each packages has.

If you download a ‘deb’ and extract it, you’ll find within the extraction folder a text file named ‘control file’. It lists that packages dependencies known to the major distro.

If your Puppy provides Apt or Synaptic as a package manager these can be configured to download libraries, even entire applications without installing them. The downloaded files will be found in /var/cache/apt/archives. AFAIK, it is safe to delete all files from this folder before executing the download so that previously stored (but unneeded by your application) files don’t get mixed in. The new files in that folder can be moved into the named folder you create for PaDS.

As of this writing AFAIK, SFS-Load/Unload does not function as well under Puppys employing Overlay rather than AUFS or Bookworm and VanillaDpup even when employing AUFS. A reboot is necessary to have an Application SFS to become part of, or removed from, your current operating system. This renders it inconvenient to test the SFSes PaDS creates.Recommendation: After the SFS has been created, mount it [Right-Click>View Contents] and copy all its contents into a named folder you’ve created; then Right-Click and Select dir2pet from the popup-menu. This will create a pet you can test under PupMode13 without actually writing it to your SaveFile/Folder/OverlayFolder. Install the pet (it will only be installed in RAM). Restart-X (AKA Graphical Manager) to have Puppy recognize it as now part of your System. ListDD can now be used to ascertain if there remain missing libraries. If found, they can be included in the original folder PaDS used –re-run PaDS-- or extracted and manually copied into the ‘named folder you used to create the pet; with dir2pet again being executed after you uninstall the disfunctional pet.

If your Puppy enables the use of more than one Package Manager, each will only know what it, itself, has installed on your System. On Puppys offering Apt and/or Synaptic it will neither recognize nor be able to remove dependencies installed by PPM. As Apt/Synaptic are better at automatically installing dependencies whenever possible I’ll use them. But there are applications whose dependencies they can’t provide. For example, MasterPDFEditor4 depends on Qt4 which is no longer in the repositories of recent Linux versions. In such cases, I’ll boot ‘pfix=ram’ so as not to employ a SaveFile/Folder/OverlayFolder, build the application and include it in an adrv.sfs or ydrv.sfs via the Save2SFS tool offered by nicOS-Utilities-Suite. See https://www.forum.puppylinux.com/viewto ... 983#p12983 for the download link and instructions. Apt/Synaptic can manage everything the creators of the Major Distro expected it to manage; Save2SFS can manage everything else.

how to install binaries from ubuntu repos, https://oldforum.puppylinux.com/viewtop ... 0#p1024636
Getting more Applications for your Puppy, viewtopic.php?p=2952#p2952
Roll your own Sylpheed Portable for Linux, viewtopic.php?p=40354#p40354

Post Reply

Return to “File Management”