# Puppy Package Manager (PPM)

A "package" is Linux terminology for an application. These are held in online repositories, and you can download and install any package.

## How to install a package

You click a radio-button along the top to choose the desired repository -- usually the left-most one is the one most suitable for your current version of Puppy.
The radio-buttons aligned vertically on the left enable you to narrow the display to a specific category (these notes are for the 'Classic' user interface, 'Ziggy' UI has slightly different layout).
Notice the checkboxes labeled EXE, DEV, DOC and NLS. Many Puppy PET packages are split into smaller packages, as follows:
EXE: This is the actual application, you definitely want this.
DEV: This contains development files, only of interest to those into compiling source code.
DOC: This contains the documentation files of the package
NLS: This contains the international language files of the package.
Note that all packages (if you only install the main "EXE" package) support English. The NLS package will add support for other languages, but this varies considerably from package to package. Some packages do not have any non-English support.
Note that PET packages follow a naming convention, like this:
abiword-1.2.3.pet ("EXE" package)
abiword_DEV-1.2.3.pet
abiword_DOC-1.2.3.pet
abiword_NLS-1.2.3.pet
Also note that not all authors of PET packages follow the practice of splitting PET packages into these component parts. In some cases there may be, for example, 'abiword-1.2.3.pet' which has everything in it. The reason that the splitting is usually done is to reduce the size of the main EXE package.
As from late May 2012, the PPM is enhanced to support EXE,DEV,DOC,NLS filtering of Debian and Ubuntu DEB packages and Mageia RPM packages. For example, 'abiword-doc_1.2.3-3build1_all.deb' is recognised as a documentation package.
When you click on one of the packages displayed in the big window, another window pops up asking if you really want to install the package, and also offers further information about the package -- so you can learn more about it before deciding whether to install it.

## How to uninstall a package

When a package is installed, it appears in the window bottom-right.
To uninstall a package, simply click on it. There will be another window asking you to confirm deletion.

## Package repositories

There are various PET repositories. PETs are the Puppy format for packages, an acronym that we humourously say stands for Puppy Extra Treats. Those on offer will depend on which Puppy you are using, but usually there will be these available at least:
puppy-2: The very old Puppy 2.x series
puppy-3: Puppy 3.x series
puppy-4: Puppy 4.x series
puppy-5: Puppy 5.x series
puppy-noarch: These have no compiled executables and work in any Puppy (and any CPU)
puppy-common: These have compiled executables and are intended to work in any Puppy
A note about those last two: "noarch" packages do not have any compiled executables, so they will work regardless of CPU -- x86, ARM, whatever. "common" have compiled executables, and are a collection of packages used in most builds of Puppy.
For your Puppy, you may also have others, such as 'puppy-quirky', 'puppy-wary5', or 'puppy-lucid'. One of these will be a collection of packages created specifically for your particular Puppy. For example, Precise Puppy is built from Ubuntu Precise Pangolin binary packages, and PET repo 'puppy-precise' has PET packages created explicitly for this pup.
Generally, use those that seem most appropriate to your version of Puppy. The older ones have packages that may or may not work in your Puppy -- the older the repository, the more likely this may be the case.
We mostly keep the old repositories available, as sometimes there is some old package that you really want to use. But as a general principle, look in the more recent repositories first.
Your Puppy may be built from the packages of one of the other major Linux distributions, such as Debian, Ubuntu or Slackware. In that case, PPM will offer those repositories. They are going to be the most compatible and the ones that you should look in first. For example, Precise Puppy, built from Ubuntu Precise Pangolin, will have the 'ubuntu-precise-main', 'ubuntu-precise-universe' and 'ubuntu-precise-multiverse' repositories.
Of course, the packages of other distributions are not going to be PET packages. PETs have ".pet" on the end of the filename (file extension).
Debian and Ubuntu have DEB packages, with ".deb" on the end of the filename.
Slackware packages have ".tgz" or ".txz" file extension.
Mageia has RPM packages, with ".rpm" file extension.
Whatever the type of package, PPM is capable of installing it.

## Searching

The "Find:" box enables you to search for any package.
You can type in a partial name, but a match is only found from the left. For example, if you do a search for "pan" you might find this:
pango-1.28.1-w5 Library for layout and rendering of internationalized text
pango_DOC-1.28.1-w5 Library for layout and rendering of internationalized text
pangomm-2.26.2-w5 oo wrapper for pango library
pangomm_DOC-2.26.2-w5 oo wrapper for pango library
panoramixproto-1.1-w5 Panoramix extension headers
But doing a search on "mm" yields nothing, as there are no package names starting with "mm".
However, the Find box will accept '*' wildcards, what is referred to as "glob wildcards". So, type in "*mm" will find all packages with "mm" in their names.
You can even have multiple wildcards, for example "p*mix*to", which will find the 'panoramixproto' package.
The search is case-insensitive, so a search for "PAN" will give the same results as shown above.
As from May 2012, PPM also supports searching for multiple keywords. Also, the Description field is searched as well as the package name. For example, it you type into the search-box, "abiword plugins", it will find packages with these two words, either in the package name or the description.
Also from May 2012, you can choose to search just the current repository or all repositories. Previously, it was restricted to current repo only.
One thing to note about the search is that it searches the entire repository (or repositories), and ignores the vertical Category radiobuttons on the left side.

## Installing without the PPM GUI

You can actually download any package, from anywhere, and install it. All that you have to do is click on the package in the file-manager window, and the package-installer component of PPM will run and install the package. This works for many types of packages, including PETs, Ubuntu/Debian DEBs, Slackware, and Arch packages.
Note however, if you install an individual package in this way, without going through the PPM GUI interface, any dependencies are not installed, and you will have to take care of that yourself.
One good thing, a package installed in this way will show up in the PPM GUI installed-packages-window and it can thus be uninstalled.

## How to update Puppy to next version

A little while ago, someone criticised PPM, stating that it did not allow a complete upgrade of Puppy to the next version. The package managers in some distributions allow you to install all packages required to completely upgrade to the latest version of the distro.
PPM does not offer that, because Puppy does not work that way. It is outside the ambit, or we could say the "contract" of what PPM is required to do. A new version of Puppy is provided as just three or four files. Say for example you have a "frugal" installation of Puppy on hard drive, it will consist of just three files, vmlinuz, initrd.gz and the main Puppy filesystem (for example precise-5.3.sfs). There is also a fourth file known as the "devx" (for example devx_precise_5.3.sfs). To upgrade, all you do is replace those files. It is a totally different system to a package-by-package upgrade. This page has more details: http://puppylinux.com/hard-puppy.htm
Regards,
Barry Kauler, May 2012