Package management on RISC OS

Package management is a way of handling software installation, updates, and uninstallation that is commonplace in the Unix world. There is a package manager on RISC OS currently, RiscPkg.

Often, software depends upon other software to properly run. One of the important functions of a package manager is to manage such dependencies, so that they need not be manually installed or updated - installing a program can be as easy as selecting the program and clicking an "Install" button. Examples of typical dependencies on RISC OS are the Shared C Library and Tinct.

Additionally, package managers often have repositories of packages that have been collected, meaning that one can install software from a list of available programs, rather than searching for a certain program on the Internet.

RISC OS presents some unique challenges as compared to the environments that package management systems are typically found in.

The largest challenge is that in Unix-like OSes, applications tend to be installed in a few fixed locations. While this presents an easy structure for a package manager to handle, it creates an inflexible system for the user, as the user can't sort applications without using symlinks (a kind of shortcut.) This isn't acceptable in RISC OS, so a package manager for RISC OS must be tolerant of the user's preference for where an application is to be installed.

Another challenge is the user interface. In a Unix-like OS, dedicated commands and programs exist for manipulating packages. For example, the following command installs Firefox on a system using Debian GNU/Linux or a related OS from the command line:

This isn't exactly the most user friendly approach, and even dedicated applications aren't always user friendly, especially given the way that RISC OS users are used to installing applications - that is, copying them from a ZIP file to the directory that the application will be installed in, which is a method that rarely works with a package manager. And, dedicated package formats aren't easy to handle unless you have the package manager for those formats in place, which can be a real problem on RISC OS.

RiscPkg
Main article: RiscPkg

RiscPkg is the only currently available package management system for RISC OS.

RiscPkg's package format contains all files in the package in a ZIP file, so that RiscPkg is not needed to install applications that have been packaged by it. However, they still must be installed by RiscPkg (which isn't the most user friendly of applications as of this writing) to be handled by the package management system, and the packaging isn't the most friendly for a user that doesn't have RiscPkg.

Also, right now, RiscPkg needs configuration files to be edited to change the installation location of software, and it isn't as flexible as it could be, although it's already more flexible than most package management systems.

PackMan
PackMan is an alternative front end for the RISC OS package management system. It uses the same backend to to process and install the packages.

Other package management ideas
One possibility for improving package management under RISC OS is to have software that calls the package manager when first run. This would allow software to be installed using the normal method of dragging and dropping to whatever directory the user desires, while still providing a way for all necessary dependencies to be installed, without user intervention. If done properly, this would even allow installations without the package manager in place, and more easily than RiscPkg allows.

Work would have to be done to ensure that uninstallation is properly tracked - one possibility is to check for the presence of all packages whenever doing any package management task, although this would slow down the package manager when more packages are installed. Another would be to modify the Filer to notify the package manager when the application is deleted.

More info

 * The RISC OS Packaging Project (RiscPkg)
 * Wikipedia article on package management systems
 * More information on PackMan