|
|
New to Puppy? -- it is highly recommended to read this page!
Background
The name "package" is used in Linux for an application with all of its support files. If you have a Windows background, you will know that you can download an application and double-click on it to install it, or the web browser can choose to install immediately. It's the same thing.Calling it a "package" distinguishes it from an actual executable -- in Puppy a package has a filename ending in ".pet" (or ".pup") to clearly show that this is a package.
Puppy started life as a collection of applications on a live-CD, and that was it, no mechanism for adding packages. The fundamental reason for this was that all of the /usr directory was stored as a single file called "usr_cram.fs", that contains inside it a squashfs filesystem -- which is a compressed read-only filesystem. So, there was no way to write to /usr. Also, /bin, /sbin, /etc, /var and so on were all in ramdisk -- in fact, they were on the live-CD in the file image.gz which loads into the ramdisk at bootup -- so, anything written to those directories got lost at end of the session.
The exception was that if Puppy was installed to hard drive, with a full installation where Puppy takes over an entire partition -- as opposed to what we call a "frugal" or "coexist" installation -- then all directories are writable, as it is just like any normal installation of Linux.
With the situation of Puppy running in ramdisk, the only place that files could be saved permanently was in /root, the user's home directory, and we did offer a small collection of packages that could be downloaded and installed into /root.
Anyway, with the release of version 1.0.1, /usr became writable, by use of a technique known as unionfs. Suddenly the gates were opened, and along with two new package managers, PupGet and DotPup, we had a flood of new packages. Many of the DotPup packages do install into /root, but that is incidental -- now packages could install into /usr also.
Then, Puppy 2.00 made everything under "/" writable. That is, everything under "/" gets saved, nothing is lost at shutdown.
There was some confusion that we had two different package systems. Actually, there is a clear distinction between the two: PupGet packages are 'official', that is, they are the pool of packages used to create the live-CD, whereas DotPups are 'unofficial', that is, extra packages created by Puppy enthusiasts.
Puppy 2.14 has taken a major step to merge the package systems into one, the PET format. It has been suggested that 'PET' is an acronym for "Puppy's Extra Treats" (courtesy of Lobster) or "Puppy's Enhanced Tarballs".
PET is intended to have all the advantages of each of the earlier package formats and none of the disadvantages.
Puppy Unleashed
The Puppy live-CD is created from a collection of about 500 packages and a build script, collectively called Puppy Unleashed. The build script, actually named "createpuppy", allows selection of packages that are desired to be in the live-CD, and will create the ISO file all ready to be burned to a CD.The official Puppy live-CD is named like this, "puppy-4.00-seamonkey.iso", and currently is based on the Mozilla Seamonkey suite. But, there is also an Opera package, and John Murga has available another 50M ISO build from Unleashed based on Opera. Anyone can create their own custom Puppy live-CD, and many other Puppy enthusiasts have created their own custom Puppy.
The Unleashed suite has the 'official' PET packages. However, what about all the "left over" packages, the rest of that approx. 500 package collection that were not chosen to be in a particular build of a live-CD? The entire Unleashed suite is at various repositories on the Internet and this is where the PETget package manager comes in.
PETget is to be found in the Setup menu in Puppy (or the "install" icon on the desktop). Just select from the menu and you are greeted with a list of packages to install. Now here is the good part -- the list that you are presented with is the "left overs" of that 500 package collection. Thus, although they never made it into the live-CD, you can still install and uninstall them.
If you want to know more about Unleashed, get hold of the Puppy Unleashed core tarball and in it you will find a very helpful README file -- the Unleashed tarball is named something like 'puppy-unleashed-core-2.14.tar.gz' at the online repositories.
There is also a page that introduces Unleashed: Puppy Unleashed introduction
DotPup packages
DotPup is a simple package installation system developed by GuestToo and is described at www.puppylinux.org/wikka/DotPups.
GuestToo originally intended DotPups to be a simple package system
where you download the '.pup' package then just click on it to install.
Later on, MU developed a DotPup-creation tool that also registers the
DotPup with the PETget package manager when it installs, so PETget can
be used to uninstall it.
One word of warning. Many DotPups modify the 'Menu' (see bottom-left
of screen) directly, however Puppy 2.14 moved to an XDG menu system
in which the window manager menu configuration file is not edited at
all. Instead, the new package should install a '.desktop' file. Simple
DotPups that do not require a menu entry do not have this problem,
those that do should really be converted to PETs, using the 'pup2pet'
utility.
Or, DotPups can be created that support XDG and do not directly modify
the menu config file, and will thus be fully compatible with Puppy
-- likely MU and others will update DotPup creation tools accordingly.
Slackware packages
Puppy is compiled from source and has unique bootup and shutdown
architecture, different from any other distro. The same point applies
to Slackware -- Puppy is not based on Slackware in any way. However, a
Slackware binary package may be installed in Puppy and it may work.
A Slackware package can be converted to PET using the 'tgz2pet' utility. For example:
# tgz2pet xgames-0.2-i386-1.tgz
Which will create 'xgames-0.2-i386-1.pet'. Click on this and PETget
will install it, and will even run the install script inside the
Slackware package.
A warning though. Slackware has a different architecture and the
install script could do something undesirable in Puppy. Slackware has
different shared libraries and the required dependencies may be missing
in Puppy. However, if a Puppy developer finds that a Slackware package
does work in Puppy then technically it can be provided as a PET package
for others to install.
Note, the 'tgz2pet' script doesn't add any PET-specific enhancements
when it converts the Slackware package, so if the package does not have
a '.desktop' file then the script will not create one and there will
not be any menu entry created upon installation. More features to
support Slackware package conversion could be added in the future if
there is demand.
UPDATE 1:
Puppy version 3.xx was built with binary Slackware version 12 packages, so is highly compatible with Slackware. There is even a Gslapt PET package for installing Slackware binary packages.
UPDATE2, April 2008:
Puppy version 4.00 is compiled from source, so again is not designed as
"Slackware compatible". However, we have a "compatibility collection"
of packages that can be installed which achieves a very high level of
compatibility -- meaning that you may be able to download and install a
wide range of Slackware12 binary packages.
PETget package manager
The PETget package manager (previously known as the PupGet package manager) is selected from the Setup menu in Puppy (or via the "install" icon on the desktop). It is very simple to use. The initial window comes up, like this:
In the top pane are all the "left over" packages from Unleashed that never made it into the live-CD, that is, are not in file pup_xxx.sfs. Physically, they are all available on the Internet at various download sites such as ibibilio.org.
Any packages that you have previously installed will already be in the bottom pane. In the example you can see that I have already got Dkop, Gqview and Zedit installed.
It's incredibly simple to use: Just click on a package in the top pane to install it, or click on a package in the bottom pane to uninstall it.
You can see that the packages have brief descriptions, but if you scroll the pane to the right, there is further information about the dependencies and size of the package.
However, it doesn't end there. The above describes how to install an 'official' package, that is, one from the Unleashed suite. However, a PET package can also be 'unofficial', meaning not part of the Unleashed suite, created by a Puppy enthusiast.
How would you install such a PET package? Simple, just download it, then click on it.
The ROX-Filer file manager understands any file that ends with '.pet' and if you click on it then ROX-Filer will launch PETget. Any PET package, official or unofficial, can be installed this way.
In addition, so does SeaMonkey, the web browser. Click on any ".pet" file on a webpage and SeaMonkey will offer to either download it or immediately open it in PETget. The latter means that you just click on a PET package on a web page and it gets installed!
(In fact, any application that reads mime-type information from /etc/mailcap and /etc/mime.type will recognise .pet files and launch PETget. Ditto for the mime-type database in /usr/share/mime)
Technical details of PETget
When a PET package is installed, the PETget package manager keeps a record of the installation like this:
That is, /root/.packages directory has the files as shown. Each installed package will have at least one file here. For example, the Xbubble package has "xbubble-0.2.4.files". This is used by the PETget package manager to uninstall the package.
The file "packages.txt" is a list of all the Unleashed suite of packages, whereas "livepackages.txt" is a list of packages not in pup_xxx.sfs (and so not in the live-CD) and thus candidates for installation by PETget -- it is this file that is read and appears in the PETget GUI window shown above.
The file "alienpackages.txt" is a list of packages that are installed but are not part of the Unleashed collection. The PETget package manager has an option to install any arbitrary PET package available locally (on your computer) or somewhere on the Internet and if this isn't a package from the Unleashed suite then it is classed as "alien" or "unofficial".
The easiest way to learn what is in those files is to go and look at them, but here is a typical entry in "livepackages.txt":
"xchat-1.8.11" "xchat 1.8.11: IRC chat client" on "Internet +gtk+ 520K" \The first field is the package name. The second field is has the package-name and its version-number delimited by a space followed by a short description. The third field is either "on", "off" or "unavailable" and "on" means that it is installed, "off" means it isn't. The last field is the category (Desktop, System, Internet, etc. -- see list in left-side of the above PETget GUI), then a list of dependencies, then the size (uncompressed) of the package.
The ".files" files are just a list of the installed files. For example, this is the content of "xchat-1.8.11.files":
/usr/local/bin/xchatSimple enough, just a list of the files that got installed.
/usr/share/doc/xchat/xchat.html
/usr/share/doc/xchat/xchat.sgml
/usr/share/doc/xchat/xchat-1.html
/usr/share/doc/xchat/xchat-10.html
/usr/share/doc/xchat/xchat-2.html
/usr/share/doc/xchat/xchat-3.html
/usr/share/doc/xchat/xchat-4.html
/usr/share/doc/xchat/xchat-5.html
/usr/share/doc/xchat/xchat-6.html
/usr/share/doc/xchat/xchat-7.html
/usr/share/doc/xchat/xchat-8.html
/usr/share/doc/xchat/xchat-9.html
/usr/local/lib/X11/mini-icons/xchat.xpm
/usr/local/lib/X11/mini-icons/xchat_mini.xpm
UPDATE, April 2008:
You can see at the top of the PETget main GUI window, radiobuttons to choose a repository. Even though you are running Puppy4, it is allowed to install packages from an earlier version of Puppy. There are three repositories available, Puppy4, Puppy3 and Puppy2, which are repositories of official PET packages for the Puppy version 4.xx, 3.xx and 2.xx series.
Note though, it is best to look for what you need in the Puppy4 repository first.
Unofficial PET packages
Anyone can create a PET package. There are tools that make it extremely easy. Once created, it can then be made available online for others to use.If a Puppy user downloads an unofficial PET package, how do they install it? How can they uninstall it?
Installation is very simple, just click on it. ROX-Filer will then launch PETget and the package will install.
PETget will create an entry in "alienpackages.txt" for the package, just like I showed above for Xchat. And, PETget will create a list of the installed files, just like I showed above for Xchat.
For example, say that you installed a package called "Torsmo", that is a single executable that installs into /usr/local/bin. and maybe an icon into /usr/local/lib/X11/mini-icons/. Here is an entry that would go into into "alienpackages.txt":
"torsmo-1.0" "torsmo 1.O: system monitor utility" on "System 56K" \And here is what would be put into file "torsmo-1.0.files":
/usr/local/bin/torsmoOne other point -- a PET package can optionally have install and uninstall scripts.
/usr/local/lib/X11/mini-icons/torsmo.xpm
I have written a page that introduces PET packages.
SFS modules
Last but not least! SFS modules are a very powerful system of "package management", totally different from PET packages and the PETget manager.If you read the technical docs about Puppy, you will learn that the live-CD has four files on it -- vmlinuz, initrd.gz, pup_xxx.sfs and devx_xxx.sfs. This is not the place to describe what those files do, but see that two of them have '.sfs' filename extension -- this means that they are SFS files.
Puppy uses Unionfs, which enables these SFS files to be in layers, one under the other. When Puppy is running, there are at first two layers, approximately like this:
| Top layer: | The "pup_save" file (your personal files) |
| Second layer: | The pup_xxx.sfs file (all the Puppy files) |
Now, this is what you can do: you can load additional SFS files as third, fourth and fifth layers. But, what does this mean in practice?
It would be good to summarise the overall concept from the usage point of view:
| Download any SFS file to /mnt/home (the same place as your "pup_save" personal storage file), run the BootManager (in the System menu) to select or deselect what SFS files you want to use, reboot Puppy and its ready to go. |
The above summary encapsulates the entire thing. SFS files are typically "combo packs" of applications, containing all packages needed for what is required. For example, there is a "mySQL-PHP-Apache" SFS module available. The really beautiful thing is, you just download it, select it in the BootManager, reboot, and its installed and ready to go. Don't want it anymore? -- either just delete the '.sfs' file or deselect it in the BootManager.
Another important point: no dependencies to worry about! If the SFS file is designed for your version of Puppy, then it will have all needed dependencies in it.
This is the most incredibly simple way to install (and uninstall) large combinations of packages. A few great SFS files:
| devx_xxx.sfs |
This has everything needed to
turn Puppy into a complete C/C++/FreeBasic compiling environment. Want
to compile source packages? -- this is what you need. Note, the "xxx"
is the Puppy version number, so be sure to get the right one (for
example devx_400.sfs is for Puppy version 4.00) |
| kernel_src-2.6.21.7.sfs |
Use this as well as the above if you want to compile kernel drivers. |
| openoffice-2.2.0.sfs |
The entire Open Office suite. Wordprocessor, spreadsheet, database, graphics. |
So, where do you get them? SFS modules have caught the imagination of many Puppy enthusiasts, and if you look around in the Puppy Discussion Forum you can find announcements of the latest on offer. Make sure that you get SFS modules that work with your version of Puppy.
I have the 'devx_xxx.sfs' file available at the official Ibiblio repository, see my Download page. I may also have the Open Office SFS and some others available.
(c) Copyright Barry Kauler 2006,2007,2008, www.puppylinux.com
No part of this page is to be reproduced anywhere else. I have found that there is a problem where parts of my web pages are being inserted at other sites, then not updated, whereas I am updating my pages regularly. This is not a desirable situation, so please just link to my pages.




