Puppy's Package Management System



Puppy Linux and its derivatives use a different package management system than other distros. Although Puppy Linux is not as popular as other branches of GNU/Linux, all hardcore Linux users should know how to use the Puppy's package manager. It is one of the easiest package systems to use (if not the easiest).

NOTE: Puppy Linux also supports SFS packages/files, but that is a whole other topic.

Puppy Linux and its forks use Puppy Package Manager (PPM) which primarily uses PET packages. PET packages are the installation files that have the *.pet file extension. PET stands for "Puppy's Extra Treats" or some people say "Puppy's Enhanced Tarballs". A PET file is just a tarball (.tar.gz) renamed to *.pet and has a md5sum appended to the end of the file (EOF).

NOTE: Just in case I am not clear in what I mean by "installation file", this example may help. In MS-Windows systems, software is installed using a file with the extension "exe" or "msi". Such files are installation files/packages. Ubuntu uses files with the extension "deb". These DEB files are installation files. Such files add more applications, drivers, wallpapers, etc. to the system.

Notice that I said PPM primarily uses PET packages. Puppy Package Manager also supports the following packages - .deb (Debian), .tgz (Slackware), .pkg.tar.gz (Arch), and DotPet. Puppy Package Manager can also access Ubuntu repositories.

NOTE: A repository (repo) is a collection of software packages that is typically hosted on a server.

Inside a PET file, there are two scripts, a ".desktop" file, maybe some XPM or PNG files, a folder with the software, and the specs file (pet.spec) in older PETs. Of the two scripts, one is named "pinstall.sh; it executes after installation (post-installation script). The second script, puninstall.sh, executes after the package is uninstalled. The ".desktop" file is used to make the menu entry for the software. For example, on a Puppy system, if a user sees Firefox in the application menu, then they know that Firefox's PET file contained a ".desktop" file. Puppy Linux stores these desktop files in /usr/share/applications/. The icon used in application menus is the XPM or PNG file seen in the PET file. The folders contain the software and the contents are copied to the specified location. For instance, if a directory named "opt" is in the root of the PET file, then the contents of that folder will go in /opt/.


NOTE: By the way, do you ever see those applications in the menu that are using a generic or odd-looking icon? Well, they have that icon because their PET file lacked a XPM or PNG icon, or the icon file was corrupted. The XPM and PNG files go in /usr/local/lib/X11/mini-icons/ and the ones with a number in the name (*48.xpm) belong in /usr/local/lib/X11/pixmaps/. Another possibility is that the *.desktop file did not specify an icon.

The specs file is a file titled "pet.spec" and is seen in older PET files. It is a plain-text file that contains general information about the software. Below is an example of the contents. As you can see, the file contains information like the name of the software, size, type of software (multimedia), and other info.

Banshee-2.1.0-lucid525|Banshee|2.1.0-lucid525||Multimedia|161096K|pet-packages-lucid|Banshee-2.1.0-lucid525.pet||Listen to music|ubuntu|lucid||

To install a local PET file, click it and PPM will open to allow the user to install the package. To install packages in a repository, open Puppy Package Manager and search for the desired package. The installation is self-explanatory. Just select the desired software and click install. Allow the dependencies to install unless there is some reason not to allow the extra packages to install. When installing local PET packages, make sure that the package is not intended for an older version of Puppy Linux. Mixing versions may cause issues.

To uninstall software, open PPM. Depending on the version used, double-click a package and select uninstall or click the uninstall button which opens a window. In that window, select the software to uninstall. To uninstall packages quickly, use Unpet. Using Unpet is faster than using Puppy Package Manager to uninstall software.

Puppy Linux also supports DotPet files which can be installed using dotpuprox.sh like this - “dotpuprox.sh DOTPUP-FILE”

To make your own DotPet files, you could use PetMaker. PetMaker is a GUI application with a simple layout. To make the PET file, type the desired name for your PET file. Then, in the next two boxes, browse and select the files/directories that need to go in your PET file. Once done, click "Create PET".

Some alternatives to Puppy Package Manger (PPM) exist. QuickPet is a stripped down version of PPM. This means QuickPet is smaller, easier to use (or so says the developers), and more simple. Additionally, QuickPet supports PET and SFS files. SlickPet is even more lightweight than QuickPet and supports PET, tgz (Slackware), and txz (Salix). One difference between PPM and the two smaller package managers is the amount of available software; PPM offers the most packages. PPM does not support Salix packages. So, users can have PPM and SlickPet installed on the same system to have access to a greater amount of packages. Having SlickPet and PPM on the same system will not cause conflicts/issues.

Puppy Linux offers some conversion utilities that convert between different package types as seen below.

dir2pet - convert a directory of files to a PET file.

new2pet - Place the new2pet command before the needed commands to compile source code (like "new2pet make install"). Doing so gets the newly created files (the final binaries, not the *.o files) and puts them in a PET file. In other words, this is like a source to PET converter. Users could make a shell alias for "new2pet" and name it "src2pet" just for fun (and accuracy).

new2dir - This is like new2pet, but the files are put in a new directory.

pet2tgz - This converts PET to Slackware packages.

tgz2pet - This converts Slackware packages to PET files.

pup2pet - This command converts DotPup packages to *.pet. Actually, this is embedding the DotPup in the PET file.

To do a real convert from DotPup to PET, try this. DotPup files are installed using "dotpuprox.sh" rather than PPM, and the new2dir and dir2pet (together) converts outputed files to PET. Right? Then, we can use this command - "new2dir dotpuprox.sh /PATH/PACKAGE.pup; dir2pet DIR". Now some of you may be thinking "why not use dir2pet instead of using two conversions?". Well, some Puppy Linux users claim the command above is better. You can try using dir2pet if you wish. I just mention new2dir and dir2pet because that is what most user recommend, but do which ever suits your needs.

Other conversion utilities include deb2pet, rpm2pet, alien2puppy, and a few others.

DEBATE: Do you think the conversions tools (like pet2tgz) help make the PET system more popular? Are such tools efficient? Would you knowingly use a converted package on a server?


  • slide.JPG
    63.1 KB · Views: 88,784
Last edited:

It is useful to convert packages when Puppy doesn't have that package my favourite 2 Puppy utilities are unzipper'drag'drop and makepet the were developed by Bigg_Bass who developed Slaxerpup Uused a Slackware kernel instead of a Puppy Kernel). This is useful when PPM or Puppy Package Manager fails to cope in modern Puppies with installing .deb and .txz packages and you have to manually install programs with dependencies.

With the first tool I can unzip a tgz, txz and tlz (by renaming as txz) I then insert any libs and then turn that directory with all its files into a .pet so when I think about it it is easier to use then pet2tgz etc and allows me to make static-lib .pet files all in 1 package.

By the way he went on to work on Porteous Linux and ported those unzipper'drag'drop to slackware.


they are available here http://sourceforge.net/projects/anitaos/files/Anitaos/Important Tools for Anitaos/
Last edited:
I have applied some minor tweaks to this article.
Hi Devyn a very good article regarding Puppie's Package Management.

It is interesting to note there is some acknowledgement by the Puppy community that PPM doesn't handle packages from other disros that well when it comes to installing programs with lots of dependencies. I know this from experience such as the annoying showing something is installed when its not in the package manager and this was mostly in the later puppies in the Debian Wheezy, Precise Puppy era.

However much is being done to try and correct this problem with Puppies which are Woof CE based - a fork of the original Woof building System that Barry Kauler came up with.

Secondly Woof CE Pups by a developer called EMSEE with Synaptic. There was for a while an attempt to make new system called Packdude which would be faster and more efficient than PPM, Link: http://www.murga-linux.com/puppy/viewtopic.php?t=93620&sid=b5831e8fa29c75cc85ad0fffcef0b433

To sum up I don't think Barry K has totally succeeded with Woof to make full compatibility with the likes of Slackware and Ubuntu when handling lots dependencies, but he did succeed in bringing more packages available in the repos for Puppy than back before Woof in the unleashed days where everything was more hand built. To understand his intentions I have provided a link below:

At the end of the day puppy is still enjoyable to use and sometimes requires me to do a bit of DIY to fix things but it is great as my day to day OS, probably 3.01, Lucid and the T2 based Pups are the best.

Especially t2 based as packages don't have so many dependencies that the Ubuntu, Slackware ones have, eg 4.31 vs Lucid. We know the package manager isn't perfect and I guess as Puppy Linux users we live with it.

Anyway that is end of my ramblings - thanks again for the great article on Puppy Package Management
Last edited:
why is that puppy os do not utilize the apt package mangaer if it is based on ubuntu?
If you want that your probably better off using Dog Linux - same abilities as Puppy and behaves like Puppy...
G'day @nockroot and welcome to linux.org :)

...if it is based on ubuntu?

It's not.

Puppy was based on Vector Linux, which derived from Slackware. There are a number of Puppy versions that can accept Ubuntu binaries, and they have access to the Ubuntu Repositories.

You can read about Puppy at Wikipedia


If you have more questions, please start a Thread in an appropriate subforum, take a look around :)

Chris Turner
G'day Darren @darry1966 ;)
Gday Wiz hope your having a good 2021.

Members online