Software Installation

This section may include details on including updates, since an update is software (which is meant be to be an update to other software). The presense of software is typically noticable. However, the method of installation may be done “behind the scenes”, so an network administrator may be able to perform this without much (or, perhaps, any) interaction by the end user.

The need for upgrading

Once upon a time, a seemingly long, long time ago, upgrading software was mostly about getting new features. If those weren't needed, then running old software was perfectly acceptable in many scenarios. TLDP section about upgrading/installing software noted,

“There is no important reason to run the newest version of all of the software. If you find that you would like or need features that a new version offers, then upgrade. If not, don't upgrade. In other words, upgrade only what you must, when you must. Don't upgrade for the sake of upgrading. This wastes a lot of time and effort.”

This way of thinking may not work in nearly as many scenarios today. The rise of Internet usage and Internet-based malicious activity (most definitely including criminal activity) has led to an increased importance on computer security. Running the latest code, or at least the latest code that is marked as “stable”, is basically a standard expectation of decent modern computer security.

Operating System components

To clear up any misconceptions that people may imagine and conjure up on their own, OpenBSD's man page for pkg_add says “Note: System distribution files, e.g., base28.tgz, comp28.tgz, are not packages and may not be installed using pkg_add.”

In some cases, some of these may be untarred over an installed operating system: the operating system's upgrade guides will actually recommend that for most or all of the tgz files except for the etc??.tgz and xetc??.tgz files. (However, providing further generalizations on when this may be safe to do did not seem prudent: It may be wiser to simply check the actual upgrade guide for the specific version being upgraded to.)


(This guide does not currently have many recently-tested details for FreeBSD. There may be a way to add packages using sysinstall in FreeBSD 8 and earlier? FreeBSD 9 may come with bsdinstall (instead of sysinstall?) (This is different software than pc-sysinstall/pc-sysinstaller (as noted by FreeBSD Handbook: Introducing bsdinstall) which references PC-BSD Installer (instructions for installing FreeBSD).))

Microsoft Windows
During an interactive operating system installation there may be an opportunity to install software. The list of software that can be installed will be similar to what is found by installing integrated software.
[#swpkmgmt]: “Software package (management/installation) systems”/“Software distribution systems”

Some systems will often have software installed with a package manager. This may seem curious to those who typically download software straight from a vendor's website. Benefits to using a package manager include:

  • Package manager software is often set up to download software from trusted archvies. If some software is found to have a security vulnerability, it may be pointed out. If a software developer is refusing to fix an obvious problem, and/or for other reasons the software appears to be malicious, the people who maintain the public archives may decide to stop hosting such software. This oversight by maintainers of public archives can be a deterrant from a software developer trying to distribute software which is mostly malware by nature, or by sneaking in some additional malware.
  • The package manager handles dependencies. This may reduce the requirement for developers to deal with such things.

There are different formats for software packages. The main criteria that is used here for breaking down the package management software solution options into categories is based on which software can handle a specific “format” of the files that store the code and perhaps also the repository which is hosting such files. (This decision was made in the year 2010 A.D. or earlier, and may become less relevant if/when some software starts to really support other repositories well.)

An old article (Dec 7, 2003 A.D.), The ideas behind Compile, notes a standard which often works for Unix: “Most of the time,” a *.tar.gz archive containing sources “can simply be unpacked, and then three magic commands, "configure, make, make install” will do the trick.”
An old article (Dec 7, 2003 A.D.), The ideas behind Compile, basically notes that Compile is designed to simplify package creation and maintenance. The basic idea is that when different groups of operating systems all use different file formats for their individual repositories, there is a lot of effort needed to support the customized differences.
[#pkgtools]: pkg_*

Possible home page (which even has a logo for this software): (which seems rather NetBSD-related/focused)

OpenBSD man page for pkg says, “pkg is meant to be a replacement of the old pkg_* tools. For the time being, it should only be invoked internally” by other software. In the OpenBSD man page for pkg: section documenting BUGS, the page has been known to say, “This program's design is not even finished yet.”

This section is about the suite of software that contains pkg_add, pkg_info, pkg_delete, pkg_create. There is a man page (section 5) about the format for OpenBSD binary packages, which is a different page than the man page (section 7) about the overview of the binary package system. Other software or information that is or may be related/similar: OpenBSD man page for pkg_merge, OpenBSD man page for package (name) specifications, OpenBSD man page for, OpenBSD man page for pkg_mklocatedb, OpenBSD man page for pkg-config.

[#pkgtlrpo]: Setting respositories

In general, it is advised to set OS environment variables named PKG_PATH and PKG_CACHE. Neither of these are necessarily required, and setting them up may take more time the first time that packages are to be installed. However, they do make the package-adding process easier later, and so the time payoff could be as soon as the second time packages are ever added. They should be fairly easy to implement if these instructions can be copied and pasted. If there is not an easy way to paste into the terminal shell, one may wish to hold off on making package adding easy until that remote access may be obtained later. (Setting PKG_PATH isn't strictly necessary as pkg_add may still be used by referencing remote files with a URL or by referencing local files. The main limit to not using PKG_PATH is just that pkg_add won't be able to search online when a URL isn't given.)

[#obmpkez]: OpenBSD: Making package management easy (Recommended settings for OpenBSD)

For OpenBSD, using an official, paid-for CD is recommended (primarily because doing so involves Supporting OpenBSD).

Following these steps will allow packages on the local hard drive (due to prior installations) and from an official OpenBSD CD (if one is mounted) to be referenced before using the Internet. (Naturally this requires a tad bit of caution, just enough to make sure that no fake CD, which has the paths of an OpenBSD CD but is not genuine, is not installed in the path (“/media/opnbsdcd in this example”) that gets referenced. (Similarly, having an OpenBSD CD in the drive from a different version of OpenBSD will cause an incorrect version of a package to be referenced. That may or may not be an issue. (At the time of this writing, it hasn't been determined by the author of this text whether pkg_add routinely does version checking.) (If pkg_add handles this version checking, it may not be an issue. Otherwise, it may be critical to avoid OpenBSD FAQ 15.4.1#NoFun: “crazy errors”.)

These environment variables are meant for programs that require superuser access. Therefore, it only makes sense to become a superuser before setting or trying to use the variables. (There is little reason to set the variables with another username that cannot effectively use them.)

First, set the operating system/command interpreter shell environmental variable PKG_CACHE. e.g. (if using ksh) then the following may work:

export PKG_CACHE=/srv/bigspace/pkgcache

Then, follow these instructions (which are an elaboration of using the technique listed at Packages/Ports FAQ 15.2.2: “Making things easy: PKG_PATH”.)

The assumptions of these instructions are not likely to be a problem, but are hereby documented the extremely thorough who want to be cautious. These assumptions of these instructions are that there is no ~root/bin/pkgcmd command that needs to be backed up first, and that ~root/.profile has not been previously backed up to a location under /origbak/. Additionally, PKG_CACHE should be defined, the superuser's name is root, and the shell should work like sh so “ echo $( echo ~root ) ” will return a directory such as /root or /home/users/root. If any of these assumptions do not seem accurate, then modify the example code as needed.

Quick backup guide for files that are about to be changed
ls -td1 /origbak/ver* | head -n 1

(If the output of this command is “ls: /origbak/ver*: No such file or directory” then /origbak/ver1 may be used. If the output had said “/origbak/ver36” then we would be using the next higher number: “/origbak/ver37.”)

This example code uses /origbak/etc/ver6/.

The following commands try to back up pkgcmd (in case it exists, even though it probably does not). (This could be placed in a condition so that only runs if the file does exist, probably by using something like “[ -f ] ||”.) The example code is a bit sloppy: If ~root is /home/root then the chmod gets /origbak/home/root but not /origbak/home. (Getting all the directories may increase complexity and it was deemed unnecessary overkill for this example.)

mkdir -p /origbak/ver6/$( echo ~root )
chmod go-rwx /origbak/ver6 /origbak /origbak/ver6/$( echo ~root )
cp -p $( echo ~root )/.profile /origbak/ver6/$( echo ~root )/.
cp -p $( echo ~root )/bin/pkgcmd /origbak/ver6/$( echo ~root )/bin/.

The following code will make the necessary directories and also creates and runs a pkgcmd command which is stored in a ~root/bin directory.

sudo mkdir -p $PKG_CACHE ~root/bin /origbak$( echo ~root )/bin
sudo chmod og-rwx $PKG_CACHE ~root/bin /origbak$( echo ~root )/bin /origbak$( echo ~root ) /origbak
echo \#\! /bin/sh | sudo -n tee -a ~root/bin/pkgcmd
echo export PKG_CACHE=${PKG_CACHE} | sudo -n tee -a ~root/bin/pkgcmd
echo export PKG_PATH=\${PKG_CACHE}/.\:/media/opnbsdcd/\$\(uname -r\)/packages/\$\(machine -a\)\:\\ | sudo -n tee -a ~root/bin/pkgcmd
echo ftp://ftp.\$\(uname -s\).org/pub/\$\(uname -s\)/\$\(uname -r\)/packages/\$\(machine -a\)/ | sudo -n tee -a ~root/bin/pkgcmd
sudo cp -p ~root/.profile /origbak/$( echo ~root)/.
sudo chmod ugo+rx ~root/bin/pkgcmd
. ~root/bin/pkgcmd

The above lines make some directories so they are not accessible by other users. That may not be desired for some directories, particularly the $PKG_CACHE directory. If there is no concern about people accessing that directory (and there is not likely a need for concern if the only packages installed are public packages that people could obtain anyway), then one may allow that directory to be accessed. To do so, set the permissions (which are some of the file attributes) with:

chmod og+rx $PKG_CACHE

The actual end result of creating the ~root/bin/pkgcmd file may be manually verified by viewing a file's contents:

cat ~root/bin/pkgcmd

The desired end result, that should be what appears in the ~root/bin/pkgcmd file, is something like the following text:

export PKG_CACHE=/srv/bigspace/pkgcache
export PKG_PATH=$PKG_CACHE/.:/media/opnbsdcd/$(uname -r)/packages/$(machine -a):\
ftp://ftp.$(uname -s).org/pub/$(uname -s)/$(uname -r)/packages/$(machine -a)/

Another thing that perhaps should be added to ~root/bin/pkgcmd is: “ export FTPMODE=active ”. (This hasn't been heavily tested by the author of this text at this writing. It may be in some cases that setting FTPMODE may be required, and in some other cases that etting FTPMODE may break things. The easiest way to find that out is to see if pkg_add tends to fail with a remote package without that environmental variable set is to try installing a remote package. (To force a remote package to be used before any of the other locations on $PKG_PATH, simply specify a URL of a remote package when running pkg_add.)

Details about those commands (for the curious about how they were determined...)

About the above commands: The backslash at the end of the “ export PKG_PATH ” line is there to signify that the following white space character (which causes the next text to appear on a new line) should be ignored. If support for that is not implemented in the shell being used, simply eliminate the backslash and put the ftp URL were the backslash was (right after a colon).

Note that the commands involving $( need to have characters escaped in the relevant echo commands. Do not simply put an “ echo ” command before the words “ export PKG_PATH ” and redirect the output expecting it to go into a text file. (Actually, the contents that will be put in the text file in that case will likely be literal, and that likely won't be a problem. However, it is good to understand when escape code usage is required.)

One may wonder why the text file is being stored in ~root/bin (where it will presumably only be readable by root) and why the script that sets the variables is stored in ~root/.profile instead of setting the variables in /etc/.profile so that all users get that benefit. The answer is because other users will have no need for those variables. The pkg_add and similar pkg_* commands will require superuser privileges, and environmental variables will tend to be reset by sudo. (The fact that the environmental variables are reset by sudo may not be noticed a lot of times because environment variables specified on the sudo command line may be expanded by the shell before sudo runs any other code, so the modified command line has the expansion of the variables before sudo clears out much of the environment.) If the pkg_add command is run directly from sudo, that may often work well if a URL or local file is specified (because the environment variables won't be needed), but if the another user's environment variables are going to be used then “ sudo -i pkg_add ” will cause ~root/.profile to load, and that may be the best way to load up the environment with these types of variables.

If the currently logged in user's directory is preferred over ~root then using the ~$USER might be preferred. (It is recommended to test any variation and its effects before blindly relying upon it. Using such an alternative may not have been well-tested.) The pkg_add command is going to require superuser access anyway, so there may not be a huge compelling reason for an end user to try to set $PKG_PATH. An authorized end user may easily run ~root/.profile before the pkg_add command by using “ sudo -i pkg_add ”.

Recommended settings for FreeBSD

(The next couple of paragraphs may require some HTML clean-up, specifically with the CSS references, regarding what is a directory or a file.) Note that ports for some older versions may be located under: This may be documented in something like (that same directory also may have some symlinks to README.TXT with names like “7.1 moved to ftp-archive”). e.g. may have /pub/FreeBSD-Archive/old-releases/i386/7.1-RELEASE/packages which may be a symlink to ../../../ (which is /pub/FreeBSD-Archive)'s ports/i386/packages-7.1-release

For FreeBSD, it may be worthwhile to have PKG_PATH refer to a location under this FTP site:

This may be documented in a location such as right next to other files: Located in that same directory ( ), there may also be some text files with names like “7.1 moved to ftp-archive”. This text file may refer to which has subdirectories named after architectures. Those subdirectories named after architectures may have subdirectories named after multiple FreeBSD versions. (An example directory may be 7.1-RELEASE.) The packages may be symlinks; e.g. from underneath the i386/7.1-RELEASE subdirectory, a symlink named packages may point to an appropriate location underneath the location three directories up. e.g. /pub/FreeBSD-Archive/old-releases/i386/7.1-RELEASE/packages may point to ../../../ports/i386/ which is effectively being where the packages are actually stored.

(This text is currently holding off from making a recommended value, so that uname may be used and easily tested to create a nice command line.)

Other OS
Finding software/listing software available
Using websites, or downloading a list of ports and searching through that information. Some examples/solutions:
Using pkglocatedb

This is not meant to be a recommendation or an endorsement, but simply mentioning an alternative (which may not have yet been fully explored). “OpenBSD newbies” post shows to install a package named pkglocatedb and then use pkglocate executableName

Using pkg_find
This is not meant to be a recommendation or an endorsement, but simply mentioning an alternative (which may not have yet been fully explored). See's review of pkg_find, which may be downloaded from Michael Erdely's website at (Find the software with a filename of pkg_find-1.8*.tar.gz or whatever looks newest.) Note: It appears that now redirects to; does not seem to have a current hyperlink to the software.)
OpenBSD specific
FreeBSD-specific and
Other operating systems
Checking for updates
New release of OS
Pre-order page, main site, OpenBSD Journal. For -current, view source and/or snapshots area.
[#obchpupd]: Checking for updated OpenBSD ports

Undeadly forum post mentions that there may be stable “packages” (rather than just “ports”) seen in the near future.

For a specific port, see The OpenBSD package collection has history of ports. e.g. History of the OpenBSD Qemu port.

Installing software

OpenBSD's ports page (“Motivation” section) at said “Packages look like simple .tgz bundles, but they should always be added using” pkg_add, “as there might be some extra information that only” pkg_add “knows how to handle.” (It appears some of this information has now been moved to OpenBSD FAQ 15 (packages and ports system): Section about how packages work (FAQ 15.2.1).)

[#usobpkad]: Using pkg_add to add packages in OpenBSD
Adding a package

Superuser access will be needed, so make use of sudo as appropriate to run software as a superuser.

It is generally nicest to have the repositories set.

pkg_add -ivv package_name ” will be verbose and possibly interactive. The “package_name” may be a URL (e.g. or There are also a couple of other options which are generally more convenient in the long term, but do require that the pkgtools repository information is configured. These options are to just use the filename of the package name (such as screen-#.#.#p#-shm.tgz or screen-#.#.#p#-static.tgz or just screen-#.#.#p#.tgz), or, in many cases, just using a program name that is part of the package name (such as “screen”).

As an example of what prompts may show up in interactive mode, many versions of OpenBSD have offered multiple “flavors” of the program called “screen”. If the archive/repository that is checked first has multiple versions, the installation program may ask the user which variety to install. Note that this prompting may not occur if the public archive has multiple versions but if there is only one version in another location, possibly a private archive, which is checked before the public location. This means that if one or more packages are found at a location specified earlier in the PKG_PATH, then pkg_add will act like those are the only packages available. The pkg_add program will not seek out later locations to see if there additional choices to offer, unless every prior location already checked had zero packages that match the provided name.

To remove the possible interactivity, just leave the i off the -ivv parameter. (Hopefully the program does what the end user is wanting. (Further details may be sensible to place in these directions.))

As for the package_name, that may be a reference to a local file or a URL. The PKG_CACHE and PKG_PATH directories will be checked.

Signature checking

To see if signature checking is happening, check the output. OpenBSD FAQ 15: section on package signatures (FAQ 15.3.11) has example output, and details on how a package creator can make such a signature. Here is some example output (currently mocked up based on the example from the FAQ):

$ sudo pkg_add vte
vte-0.24.3: ok
Packages with signatures: 1

Post-installation documentation

Check /usr/local/share/doc/pkg-readmes/ as some packages (including Firefox, Qemu, and Alpine) may put documentation in that directory. Also check /usr/local/share/doc/ for a directory named after the package. Multiple packages have been known to have a README.OpenBSD file in such a directory. (CDRTools has been seen doing this, as have old versions of Qemu before the data ended up getting moved to /usr/local/share/doc/pkg-readmes/ into a file named after the package.)

Checking for a man page may be fruitful.

Running “ pkg_info -M packageName ” may show a message. Such details may be nice to know, such as the following which was seen when installing Samba 3.5.6 (in OpenBSD 4.9):

The default passdb backend has been changed to 'tdbsam'!

Running “ pkg_info -L packageName ” will show the list of files included in the package. Any included documentation files should show up in that list.

Of course, for third party software, the website of the third party project may also include some documentation.

Simplifying the process even further (for long-term use)

It is generally most convenient to install a package when environmental variables refer to repository information, because then the packages can be added by name rather than path. It is likely best, though, if those environment variables are not set for standard users. This is because standard users don't have the permissions to modify the system-wide package database, so they can't effectively use the envirionment variables anyway.

The way to handle this is to use commands that set the environment variables, but to use those commands only when running a command as an aurthorized user. Such commands may be placed in the .profile file stored in the directory of the user with more permissions.

Then, the easy way, which hopefully won't work, is to just prepend the pkg_add command with “sudo -i ”. If this easy approach is permitted, this will cause the sudo command to run the superuser's .profile file (e.g. the ~root/.profile file). However, trying to do this will hopefully result in “ sudo -i ” giving the output, “This account is currently not available.” (A return/exit/errorlevel value/code of 1 is generated.)

In the short term, it may be best to just work around this by first running a shell as a superuser, then setting any necessary variables (specifically, setting the package repositories) in that shell, and finally adding the desired package.

That workaround is basically a short, and more specific, way of describing one of the workarounds that is provided in the The section about running programs as a superuser: subsection about sudo -i showing “This account is currently not available. describes the problem in more detail, and which also providing multiple solutions which have been found to work well with this stiuation (including one which may be a bit more complicated to set up, but then may be a more convenient solution for long-term use).

[#usfbpkad]: Using pkg_add to add packages in FreeBSD
Verification needed: If getting from the main repository, one may simply use “ pkg_add -r package_name ” and one does not need to specify the repository. However, it is recommended to set a repository for a few reasons: Having it look at $PKG_CACHE and/or other local resources may result in faster data re-retreival, and down the road older versions of FreeBSD may be able to find some of the files that is moved from the original main location to another public archive on the main site. (Naturally, this depends on the data being in the expected location where older versions get archived, and this may be disrupted if the version is removed from the public archive location altogether or if the archive maintainers move the files to a location that is different than the expected location.)
[#pkginstd]: Showing installed software


That shows the software that is installed.

Showing some details about installed software
pkg_info -L pkgname

shows the list of files that came installed with the software.

Some packages will provide documentation at the time of installation. To see this, use:

pkg_info -M pkgname

unless using older versions of the software: with OpenBSD 4.6 and earlier (see OpenBSD 4.6's manual page for pkg_info), a -D parameter could be used. (The new parameter was first introduced with OpenBSD 3.7, which was the first parameter to mark the old option as being deprecated. OpenBSD 5.3 was tested with a valid customization of “ -D pkgName ” and the result just showed a list of packages, as if no parameters were provided. No explanation behind any reason for the change has yet been found, and so no explanation is being provided here.

Additionally, the software suite supports a method to record the list of software, and to be able to later re-install that same software (to the same machine or to a different machine) using the list of recorded software. The rest of this section discusses this more elaborate concept.

Run pkg_info -m and pipe it to a text file. did, during OpenBSD 5.4's development, show a way of saving and then restoring such a list. It involved first running commands that were effectively like the following. Note that the reference to tee does not have a “ -a ” parameter, so this overwrites any existing file.

pkg_info -mq | tee pkglst-m.txt
pkg_info -q | tee pkgsall.txt
Even more info

The actual commands that were documented were:

pkg_info -mq >/root/pkg_list_manual.txt
pkg_info -q >/root/pkg_list_full.txt

Then, the guide recommended uninstalling all packages except those related to firmware. This may not be appropriate/useful to do in some other circumstances, but this guide was specifically about performing a specific upgrade to the operating system. The command shown was:

pkgdelete -X /var/db/pkg/*-formware-[0-9]*

Then the guide had even more instructions related to upgrading the operating system.

Re-installing the programs could be done using a couple of commands. The OpenBSD upgrade guide showed the following commands (but with different filenames):

pkg_add -z -l pkglst-m.txt
pkg_add -za -l pkgsall.txt
Removing software

Perhaps pkg_delete

To remove a port in OpenBSD, the process will also remove a package: see OpenBSD FAQ 15: section on uninstalling a port (FAQ 15.3.7).

Updating software
To find out if there is an update to the software, see the section on updating software. This section is simply a quick guide on how to apply updates using this package management software.

OpenBSD “ports” man page: section called “BUGS” notes “Ports documentation is split over several places”. Expect that finding information may take a while...

[#debpkg]: .deb packages (handled by “apt” software suite, and alternatives)
Selecting/setting respositories

Some text files may be used. There may be some other methods to edit the repositories from within some programs. (These directions could be improved.) /etc/apt/sources.list (is non-free in a separate file?) Further details are needed here (like how to manually add non-free if that was skipped before but is desired now). Make sure that any process meant to edit a list of respositories has enough permissions to do so. If using a relatively unfamiliar method to edit text files, be sure that the file was successfully saved before relying on the changes to the file.

Updating the local cache
Before trying to download software, update the local cache's list of available software. One clear benefit is that this may help identify newer software which is available. Another, though, is that by having the lists may point to newer versions of the software instead of older versions of the software, there is less likely to be a problem caused by the list pointing to an older version of software which has been removed from the archive. (Instructions for how to update the local cache using various software is/will be in the sections about the specific software options.)
Some software options
Aptitude (an installer for text mode and, now, more...)

Debian FAQ on Package Tools says “Note that aptitude is the preferred program for daily package management from console.”

Wikipedia's article on Aptitude software: section about Google Summer of Code mentions GSoC 2008 leading to a GTK+ GUI being put into the main codebase. (The cited web page seemed down when checked, perhaps use Wayback Machine's archive of cited site.) (Possibly relevant: Debian Wiki about Summer of Code 2010 project Aptitude-Qt references an aptitude-gtk and adept.) That may be of more interest to GNOME uses, while Debian Wiki about Summer of Code 2010 project Aptitude-Qt will likely be of more interest to KDE users. Debian's FAQ on package management tools: section on dselect states “currently users are encouraged to use aptitude” (rather than some of the older alternatives that had been a primary method in the past).

If aptitude does not seem to have an ability that apt-get does, it still makes sense to follow the OS vendor's advice as much as possible by using aptitude for the things it does support (like upgrading info about pacakages).

Recommended by Debian over some other alternatives
For those who use apt-get, note apt-get may not be the best way to upgrade Debian packages between releases of the operating system. For those who use dselect instead, note the section titled aptitude recommended over dselect.
Using the command line
unknown: something like u (upgrade), m (mark all (new/updated)), u (upgrade all), g (go to screen showing packages/summary), g (go further; start installing).
Using the graphical interface
Advanced Package Tool (“APT”) (uses apt-get/etc.) has some command lines.

[#aptgnoup]: apt-get may not be the best way to upgrade Debian packages between releases

Debian Sarge Upgrade Guide section 4.5: Upgrading Packages (before sub-section 4.5.1) says “The recommended way to upgrade from previous Debian GNU/Linux releases is to use the package management tool aptitude. This program makes safer decisions about package installations than running apt-get directly.” (The statement is mirrored by upgrades for newer releases Etch and Lenny, and is similar in structure to the Woody's upgrade guide: section on using dselect statement which recommended the dselect software, also noting that “tool makes safer decisions about packages than apt-get.” However, Sarge (Debian 3.1)'s upgrade guide: note on upgrading Aptitude also notes: “Upgrade tests have shown that sarge's version of aptitude is better at solving the complex dependencies during an upgrade than either apt-get or woody's aptitude.” So anybody who has dismissed aptitude's upgrades due to experience woody (Debian 3.0) (or, presumably, older code) may want to try a newer version.) Etch upgrade guide section 4.2.3: Checking package status stated: “Note that aptitude uses a different method for registering packages that are on hold than apt-get and dselect.”

Some other tools from Debian
tasksel. (dselect is mentioned in more detail in the “Older APT tools” section.)
Synaptic (Package Manager)
See Debian's Package Management page (section on Symantec) offers few, but praising words. The main web page says it “provides the same features as the apt-get command line utility”. For compiling this software, (at least version 2.4 of) Gtk+ is required. (Is Ubuntu/GNOME using this?)
Older tools for Debian packages
[#dselect]: dselect
[#dselcptd]: aptitude recommended over dselect
Debian's FAQ on package management tools: section on dselect states about dselect, “For woody and earlier releases, this was the main package management interface for for first-time installations, but currently users are encouraged to use aptitude instead. Some users might feel more comfortable using aptitude and it is also recommended over dselect for large-scale upgrades.” (Perhaps see also tasksel?)
Adept (a.k.a. “Adept Manager”)
Wikipedia's page on Adept Manager says, “Adept 2 is for KDE 3. The last stable release was 2.1.3. Adept 3 is for KDE 4.” A maintainer of the Adept software, Petr Ročkai, noted that an announcement of Adept being discontinued was made on a blog post called “Farewell, Adept”, on December 18, 2008. Wikipedia's page on Adept Manager goes on to say that “development was discontinued, except for bug fixes, as Adept was replaced by KPackageKit for Kubuntu's 9.04 release.” “Adept, however, can still be installed from the Debian Testing, Debian Unstable and Ubuntu” repositories for multiple versions. “Bug fixes are still done to Adept, but the major work is discontinued.”

(Not to be confused with Kynaptics: forum post refers to “Kynaptics (the program for synaptics touchpad)”.)

Probably meant as a portmanteau of “KDE” and “Synaptic package manager”. Kynaptic guide mentions “Kynaptic is the default package manager of Kubuntu 5.04.” (That is an old version of Kubuntu.) Wikipedia's page on Adept Manager notes that Adept “replaced the Kynaptic package manager” (perhaps referring to being Kubuntu's default package manager?) A forum post notes, “Kynaptic was supposed to be KDE version of Synaptic, but it seems to have died.”

Wikipedia's article on KPackage notes that KPackage supports Debian packages and some other formats. KPackage , and will be renamed to Shaman 2 (or , according to Wikipedia's article on KPackage, Shaman2).
Finding software / listing software available
Using software tools
Finding software in Kynaptic
Begin with step #3 of Kubuntu FAQ with Kynaptic guide.
Using info on the web
Installing software
Installing to an online computer that can reach a repository
Other scenarios
Ubuntu's guide for installing software packages on a machine without an Internet connection lists Keryx as one option, and also provides information about using Synaptic. APTURL is recommended by Ubuntu's documentation on installing software: section about text-based methods. See also: Kubuntu guide: How to create a local repository from discrete packages?
Showing installed software
Removing software
Checking for updates
Using software

Note that this may involve updating some data files (which lists the latest versions). To do that, the package manager software may need to be the only software editing the list of pacakages on the machine. (So, while downloading and installing some software, checking for an update on another program is something that may simply not work fully until the package database is unlocked.)

Aptitude command line
Aptitude GUI
If sudo is installed, use:
sudo apt-get update
If sudo is not installed, then installing sudo is recommended. However, until that is done, leave off the word “sudo” from the command line and run the command line from a command prompt with full superuser permissions.
Using the web
Searching online archives, checking news sites, etc. (The amount of useful info in this particular section is currently small.)
Upgrading software
Additional note(s)

SuperDebs ( Wikipedia's article on “Super OS”: section on “RUNZ Framework” ),

Wikipedia's article on Aptitude: section called “Easter egg” notes that using a parameter of “ moo” may yield some interesting results in multiple programs (mainly apt-get and aptitude), and using one or more “ -v” command line switches may result in different results (in aptitude). Being that the referenced programs may be considered the most official programs in Debian to be handling APT-style packages, it wouldn't be surprising if other packages included this 4E: extremely essential easter egg. Debian's Wiki entry on Aptitude says “It does not, however, have Super Cow Powers, meaning that it does not implement the moo operation, verbosely or otherwise.” Rubbish!

Ubuntu's Package Manager Troubleshooting Procedure is some official documentation by a respected project. A guide to using dlocate shows a method of identifying which package was the origin of a file found on a hard drive, noting that is faster than “dpkg -S filename”.
Kubuntu FAQ: info on converting an RPM file into *.deb format
RPM-based software

Used by Red Hat, SUSE, Mandriva.


Wikipedia's article on Fedora: section about software repositories notes, “Third party repositories exist that distribute more packages that are not included in Fedora either because it does not meet Fedora's definition of free software or because distribution of that software may violate US law. The primary third party repositories, and the only fully compatible ones, are RPM Fusion and Livna. RPM Fusion is a joint effort by many third party repository maintainers. Livna is still maintained separately as an extension of RPM Fusion for legal reasons and only hosts the libdvdcss package for encrypted DVD playback.”


Wikipedia's page on the RPM package manager: “Front ends” section lists some various software and which operating systems they are used for. (The list may be rather specific to software that uses a CLI.)

[#yeldogum]: “Yellowdog Updater, Modified” (yum)


Yellowdog Updater (“YUP”)

This software had been released for a distribution called “Yellow Dog Linux” (“YDL”), although even Yellow Dog Linux has now replaced this software (with “Yellowdog Updater, Modified” (yum)).


Novell has released ZYpp code as GPLv2 avialable from Github repository for Libzypp. This standard is supported by a command line program called zypper and ZYpp is also supported by a program called YaST (“Yet another System Tool”) which uses a graphical interface.

Unsurprisingly, these programs are supported by Novell's products: SUSE and the “openSUSE” free variant. (Wikipedia identifies the Libzypp portal (at as being the “Zypp official website”. The zypper program is also supported by MeeGo.

File format notes page about OpenBSD's “rpm” package states, “RPM is a package management system based on top of cpio.” Also available: page about OpenBSD's “rpm2cpio” package states, “Rpm archives are actually cpio archive disguised behind another header.” “Rpm2cpio is a simple perl filter that strips this header, without having to install the whole rpm program.” A cpio archive is supported by the cpio format, and the name stands for “copy files in and out”

[#mswsfins]: Installation of software in Microsoft Windows

Package/Software Management in Microsoft Windows:

[#mswsfinb]: Built into the operating system

Note: At the time of this writing, this has not been heavily tested by the author of this text.

Seeing a list of registered installed programs

Use WMI by running:


Note that this may take a while to run. (In contrast, using the graphical interface may show partial results initially.)


To uninstall, determine the product name (by using WMI to determine the name of the product, using the previously-provided instructions):

WMIC PRODUCT WHERE name="ProductName" call uninstall

or, for more automation:

echo y | WMIC PRODUCT WHERE name="ProductName" call uninstall
[#msaddftr]: Installing software bundled with Microsoft Windows

The following command line options may be helpful.


Keith Mayer's Blog entry: “Server Core in Windows Server 2012 - Improved Taste, Less Filling, More Uptime” (Part 19 of 31) notes:

Uninstall-WindowsFeature Server-Gui-Shell -Restart

That specific feature may be newly uninstallable in Windows Server 2012, but this does suggest that PowerShell can be effectively used to interact with features. This also may be an approach that uses more generalizes software than Dism.

For the time being, check out the (next) section about Dism, just because that guide is currently a bit more ready for effective utilization.

Social subdomain of TechNet: forum topic on installing software: November 19, 2009 post mentions a get-windowsfeature command in PowerShell. This post seems to suggest this may use .Net (NetFx2-ServerCore), PowerShell (MicrosoftWindowsPowerShell), and PowerShell Cmdlets (ServerManager-PSH-Cmdlets) features, and that “ Import-Module ServerManager ” may need to be run first (before running get-windowsfeature).

Using OneGet (PackageManagement )

Users of Windows 7 SP1, Server 2008 R2, and newer can use this (although separate installation may be needed for some operating systems). See: TechNet Blog of Package Management in Windows 10 notes this was included in WMF 5.0 Preview -- Microsoft's download page for Windows Management Framework 5.0 notes .NET 4.5 is required.

TechNet Blog of Package Management in Windows 10 notes, “PackageManagement is also an open source project at You can check out the latest news and code from there.”

filth's answer to Stephen G Tuggy's question, on Software Recommendations Stack Exchange, about updating software shows this:

PS C:> Get-Command -module PackageManagement | sort noun, verb
PS C:> install-package chrome

(The first of those commands may be abbreviatable in multiple ways: “gcm -m package* ”.)

[#mswndism]: Deployment Image Servicing and Management (“Dism”)

TechNet: DISM Command-Line Options mentions this as being available for Windows Vista Service Pack 1, Windows Server 2008, and Windows PE (and some newer options). This command has also been known to be part of Windows 7.

However, this command was found to actually NOT exist with Windows Server 2008. (On the other hand, OCSetup did exist in that Windows Server 2008 installation.) TechNet page about Server Core from 2008 R2 states “Unlike Windows Server 2008, Server Core installations of Windows Server 2008 R2 use Dism.exe to install and uninstall most server roles.”

If the software to be installed is an optional component of Windows, then the command line software software Dism (verified to be part of Windows 7) may be helpful. For example, older versions of Microsoft Windows came bundled with a telnet.exe file which, in Windows Vista and newer, is simply unavailable until it is “installed”.

Another very noteworthy option, atlhough it doesn't impact either of the following two examples, would be “ /NoRestart”.

This may be fixed by installing the feature using:

Dism /online /enable-feature /featurename:TelnetClient
Dism /online /enable-feature /featurename:More Games

(The “ /online” simply specifies that the operation should be performed on the currently running installation of Microsoft Windows.)

Like using the graphical interface, such an installation is a bit slow. To uninstall the software, use “ /disable-feature ” instead of “ /enable-feature ”.

Oh, and don't forget about this awesome software package! (This is an example that shows a space in the feature name.)

Dism /online /enable-feature /featurename:TelnetClient
Dism /online /enable-feature /featurename:"More Games"

To see the list of features that may be installed with this command, and whether they are currently installed (“Enabled”) or uninstalled (“Disabled”), run:

Dism /online /get-features /format:table | more

(Don't like the table format? /format:list is also an option.)

TechNet: DISM Command-Line Options says “DISM consolidates the functionality of several Windows OEM Preinstallation Kit (Windows OPK) tools, including PEImg, Intlcfg, and Package Manager.”

Package Manager (from Microsoft Windows)

Social subdomain of TechNet: forum topic on installing software: Later April 14, 2009 post stated, “Pkgmgr.exe is available on both Full and Server Core installations of Windows Server 2008.”


pkgmgr /iu:"DHCPServer" /norestart /l:pkgmgr.log

To see what is installed, see: listing Windows Service Roles. (See the lists of services that can be added with the OCSetup command.)

Note: If using this method to install a role, the related service may initially be Disabled. (This was noticed when installing DHCP Server to Windows Server 2008.) See adjusting running software for details on how to handle services.

It looks like the log gets created, as one or more files which are not ASCII text, and stored in the %windir%\System32\ directory.


To list the installed components: ServerManagerCmd -query optionalOutputFilename

(The default output file is: none. No output file.)

TechNet: Adding Roles and Features has example command lines. Also, a comment states that “Windows Server 2008 R2”'s “ServerManagerCmd.exe tool” states “that it is deprecated and” instead to “use PowerShell cmdlets”.

[#wnoptcp]: Windows Optional Component Setup (OCSetup)

See: Installing Roles and Features in Microsoft Windows Server operating systems for an overview of the general concept that these instructions help to accomplish. (This section is about one available implementation using a command line program.)

OCSetup is one option.

[#lswnrole]: Obtaining a list of roles

Windows Server 2008 Server Core may come with a program called OCList which does NOT get installed to a Windows Server 2008 Full installation, and which is expected to be removed (Retiring OCList). A list of available roles can be seen by a screenshot of OCSetup's output from guide to OCList and OCSetup command line tools, or TechNet: Installing and Uninstalling Roles and Features Using Ocsetup.

Another option may be to run “ ServerManagerCmd -query ”. This requires dealing with UAC, and the Roles database needs to not be modified by Server Manager when this is done. (This program also shows Features. The sections are separated by headers that identify the start of the section listing ----- Roles ----- and the section listing ----- Features -----.) However, these names don't seem to match up entirely with lists meant for OCSetup. (The DHCP Server is called DHCP rather than DHCPServer or DHCPServerCore.)

Note: Perhaps this doesn't necessarily mean that all roles can be implemented in Server Core. TechNet: “Installing a server role on a server running a Server Core installation of Windows Server 2008 R2: Overview” lists which roles can be used with Server Core (including: AD CS, AD DS (although installation may be a further challenge, as the graphical Active Directory Domain Controller Installation Wizard (Dcpromo.exe) is unavailable, so an “answer file” must be used), AD LDS, DHCP Server, DNS server, “File Services (including File Server Resource Manager)”, Hyper-V, Streaming Media Services, Print and Document Services, and “Web Server (including a subset of ASP.NET)”.

Help is available with:


A component may be installed using a syntax such as:

start /WAIT OCSetup.exe componentName /passive /norestart

As examples:

Example using Windows Server 2008 Full Installation
start /WAIT OCSetup.exe DHCPServer /passive /norestart
Example using Windows Server 2008 Server Core

(This does not work in Windows Server 2008 Full Installation. If /passive is not specified, the error message says “The specified Windows component could not be found: DCHPServerCore”.
start /WAIT OCSetup.exe DHCPServer /passive /norestart

Note: Simply installing a role does not mean that it is going to be usefully functional yet. For instance, TechNet: “Installing a server role on a server running a Server Core installation of Winodws Server 2008 R2: Overview states that an “unattend” file needs to be used (to actually get a domain to be installed). Similarly, in order to really be useful, Microsoft's DHCP service may still need a scope to be added.

The default log file might be %windir%\Logs\CBS\CBS.log file (for the Component-Based Servicing Log). TechNet: OCSetup's “Troubleshooting” section also mentions the Windows Update log (%windir%\WindowsUpdate.log), Event Viewer, or “Turn Windows features on or off” (under the Control Panel applet related to Programs).

Other options

TechNet: DISM Command-Line Options says “DISM consolidates the functionality of several Windows OEM Preinstallation Kit (Windows OPK) tools, including PEImg, Intlcfg, and Package Manager.”

Control Panel applet

From the command line, this can be started with: “ start control appwiz.cpl ”.

Built into the operating system is a control panel application for programs, with a name including the word “Programs”. (In Windows 95, this was called “Add/Remove Programs”. In Windows Vista, this is called “Programs and Features”. In some versions of Windows, this might be named “Software and Programs”.

Another resource that describes this is: Application wizard control panel applet.

[#cpprguni]: Uninstalling software through the control panel applet

Uninstalling software on this platform of operating systems is most commonly done with one of two methods. One of those methods is to run an uninstaller that is listed in the control panel application which lists some various software applications. Each program listed should have an uninstaller available, which can be run either by left clicking on a software application and then clicking a button that says "Uninstall", or, perhaps only if such an “Uninstall” button does not show up, one may be able to right-click the name of the application and choose uninstall. The other common method to locate an uninstaller is to look in a sub-folder which is on the Start Menu, in the “Programs” or “All Programs” folder. Then the Uninstaller might be locatable by looking for a subfolder named after the software application and/or the software vendor. (If a folder is named after a software vendor, the sub-folder may be named after the software program.)

Both methods involve running uninstallation programs that were provided by the supplier of the software. Therefore, there is no particular reason that the uninstaller would be any more trustworthy than the software it cames with. Sometimes the uninstaller may be a program that starts by presenting options including uninstalling the software and other options, such as repairing the software installation or even installing new software components.

Adding software
[#wncpswin]: Installing Integrated software using the Control Panel applet

This approach does work for consumer versions of Microsoft Windows.

Software may be added through the control panel applet which is about programs. For older Microsoft Windows operating systems, such as Windows 95, this may be limited to components that the operating system knows about, which would basically be a list of software that came on the operating system CD. Some newer versions of Windows may call such software “Features” of Windows, such as Windows Vista which describes such software as “Windows features”.

In order to be able to conveniently use this method to install software, the software's installation files need to be conveniently available. This is one of the benefits to having the operating system's installation files available on a readily accessible CD, in a directory which is easily accessible, such as being on the same hard drive partition as the installed operating system. (Another reason may be in case the original files are requested for some other reason, such as original driver files being looked for at a time when some other software is being installed.) Therefore, it is recommended to have the relevant installation files easily available. While copying the operating system's main installation files, there may be some other software on the operating system's CD which may be useful. (Examples include TweakUI, and Windows Support Tools. At least some such software may also have been made available to be downloaded from Microsoft. However, installing the downloadable version of the software may require a bit more effort, including locating the version of the software that is compatible with the operating system.)

In Microsoft Windows Server 2008 (and presumably other versions), trying the approach of going to the Control Panel's AppWiz.cpl and choosing “Turn Windows features on or off”, will simply run Microsoft Windows “Server Manager”. (See Installing Roles/Features in Microsoft Windows Server operating systems.)

Windows 7 (and maybe some other versions as well?) has an OptionalFeatures command. This command shows the “Windows Features” window similar to choosing Features from within the “Programs and Features” control panel applet.

[#instbyun]: Using uninstallers to install
A rather ironic method of installing software may sometimes be available: choosing the option named “Uninstall” which is used to uninstall software. When running an uninstaller (as found in the control panel applet about programs) (or as found on the Start menu), the uninstall software may provide options including uninstalling software, repairing software, or even installing new software components. For example, if a partial installation of Office is installed, including Microsoft Word and some database software, one might be able to go to the control panel applet, find an entry related to Microsoft Office, choose “Uninstall” so that the uninstaller runs, and then use the software that runs to view installed components and change which components are installed. One could use this method to install Microsoft Excel, a popular and major component of Microsoft Office.
Other method(s)
Windows Vista's control panel applet has a hyperlink called “Get new programs online at Windows Marketplace”. (The referenced hyperlink redirects to a location on
[#wnsvirol]: Installing Roles and Features in Microsoft Windows Server operating systems

There are various approaches. In some cases, this may not be significantly different than the more general topic of Installing software bundled with Microsoft Windows. However, this section focuses on some of the interface/unique experiences encounted with the Server operating systems, in ways which may differ from the consumer-oriented variations.


Dism can handle more than just server roles. The following may identify most (or all?) of the supported roles:

Dism /online /get-features /format:table | find /i "Role"

Once the desired role has been identified, see: adding Windows features for info on Dism.

Windows Optional Component setup (OCsetup)
This is also an option. See: Windows optional component setup.
Options on Microsoft Windows Server
[#wnrladwz]: Add Roles Wizard

A couple of ways to get to this program:

Using Microsoft Windows “Server Manager” to get to “Add Roles” Wizard

To use this approach, the first step is to get to Microsoft Windows “Server Manager”.

From Microsoft Windows Server Manager, the most common way may be to go to to the main screen (which is the default), and select: [“Server Manager”, in “Roles Summary” section, the “Add Roles” option]. (This option might not be visible until scrolling/tabbing down to it. Tabbing may be slower, though; on a fresh Windows Server 2008 installation the tab key may need to be pressed 18 times to highlight the right option, although likely that precise number of times may vary. So, using a rodent to scroll down a full screen “Server Manager” (to see the “Add roles” option) is likely to be the fast way.)

Select “Add Roles” (by pressing the space bar, if it was tabbed to).

Another approach (generally longer) is to first go to the “Roles” screen, which can be reached by choosing the “Go to Roles” which is right next to the “Add Roles” option just mentioned. Or, in the left frame, there is the “Roles” option (likely/certainly the very second option in the tree of options). Then, on the “Roles” screen, the directions are similar to the more commonly used path: in “Roles Summary” section, select the “Add Roles” option.

Initial Configuration Tasks (from Microsoft Windows Server's OOBE.exe)

Options are available, as seen in the top two otpions of section 3 (“Customize This Server”) in the following Windows Server 2008 screenshots: Initial Configuration Tasks (example screen from running Microsoft Windows at 800x600 resolution), Initial Configuration Tasks (program window when Microsoft Windows is at 1024x768 resolution).

Either way of getting to the “Add Roles Wizard” works fine.

“Add Roles Wizard” Initial Screens

Upon entering the wizard, there may be an [informational screen from the “Add Roles Wizard”]. (This will happen on a default installation.) Checking the “Skip this page by default” checkbox is recommended. (By doing so, it does work as well as hoped: re-running the “Add Roles Wizard” starts by going to the next screen. This skipped screen will be easily accessed using the “&lgt; Previous” button.) [informational screen from the “Add Roles Wizard”]

[“Add Roles Wizard” list of Windows Server 2008 Roles]

Choose one or more desired role(s) to add. (That may be done by pressing the down arrow, and pressing the Space Bar to alter check boxes.) Once every desired role is checked, press the graphical “Next >” button.

Role-specific details

The Add Roles Wizard will/may then ask questions about each role that will be added.

[#wnrladwe]: End of “Add Roles Wizard” (Reviewing, Confirming, and Proceeding with chosen options)

At some point, advancing to the next screen will get past any screens that are specific to the role(s) being installed, and the screen will go to a more generalized “Confirm Installation Selections” screen. At this time, before choosing “Install”, there is the option to press Shift-Tab a couple of times to highlight “Print, e-mail, or save this information”. (Then, after confirming that option is now selected/highlighted, press Enter to use that hyperlink.) Selecting this option causes the default web browser to go to file:///C:/Windows/logs/ServerManagerInstallationLog.html. (Perhaps selecting the option will actually create that file if it does not yet exist?) This file may then be handled like any other web page; this file may be backed up, E-Mailed, etc.

When done interacting with the Server log at this point, the “Add Roles Wizard” has the “Next >” button may grey out, and the button to its right may show as “Install”. Proceed with that button.

On the finish/“Results” screen, press Shift-Tab to reach “Print, e-mail, or save the installation report”. That goes to file:///C:/Windows/logs/ServerManagerInstallationLog.html which itself hyperlinks to file:///C:/Windows/logs/ServerManager.log

The final screen may provide a warning about a required reboot. For example: [“Installation Results” screen showing a required reboot (after installing Hyper-V)]. If the logs have already been viewed (if that is desired), then selecting “Close” is safe. It proceeds to [“Add Roles Wizard” screen offering to restart]. When asked about performing a reboot, choosing “No” and then Alt-O (to “Close” the previous Results screen) leads back to [“Server Manager”, now with the higher (second) status bar displaying the message, “Console cannot refresh until computer is restarted” next to a “Restart” hyperlink].

Rebooting the operating system sooner, rather than later, is generally preferred for multiple reasons: the new software may function better after the reboot, and authorized users can once again have the ability to perform tasks such as adding additional Features or Roles.

After the reboot, and then after logging in, a [“Resume Configuration Wizard” screen] may appear. Then a “Progress” phase may say “Collecting installation results...”, e.g. “Collecting installation results...” for Hyper-V. Then a Results screen may show how smoothly the installation went. (e.g. Results installing Hyper-V in Windows Server 2008, which comes with “a pre-release version of Hyper-V.” Rather than immediately using the “Close”, it is recommended to first (press Shift-tab to most quickly) select the “Print, e-mail, or save the installation report” hyperlink.

Digital locker assistant
Windows Vista has a “Digital locker assistant”. At least one method of getting to this software is via a hyperlink found in the control panel applet. One of the links, “Shop for software online”, simply goes to “”. Another hyperlink was called “Learn more online”. The following text was found on “By the end of August 2009, digital locker service will be shut down. Digital locker account holders should retrieve and record elsewhere their software keys from digital locker before this shutdown occurs.”
Windows Marketplace

Windows Marketplace is a web site which may be referenced by some of the software built into some of the Microsoft Windows operating systems. For example, Windows Vista refers to this directly via the Programs control panel applet, and that operating system also refers to this web site from the software named “Digital locker assistant” (which may be run from the control panel applet).

A FAQ on the front page of has stated, “Windows Marketplace has transitioned from an ecommerce site to a reference site.” The FAQs on the main site make it clear that this had offered third party products: the Help/Support FAQ says “Microsoft no longer supports downloading of third party products previously on Windows Marketplace. Please contact your merchant of record for more information on how to access these products.” The web site's FAQ provides further shifting of support to other parties: Information about requesting a refund says, “Each seller listed on Windows Marketplace has its own return and refund policy. Please contact the product manufacture or seller of your purchase.” Similarly, return information says “Please contact your Merchant of Record (aka "MOR") to determine if a refund is available.”

Some additional software to help manage software installations

For cleanup, Microsoft has released multiple programs with a name including the word “Cleanup”, and such tools may help uninstall some software (perhaps limited to Microsoft software) more completely in case the software doesn't appear to be fully uninstalled. Examples include software with names such as “Windows Installer CleanUp Utility”, “Uninstall Cleanup Tool”, and “.NET Framework Uninstall Tool”. As these seem to be regularly updated (probably to add support for newer software), it may be best to just download these on an as-needed basis. Simply search for this if the need comes up, and make sure to not use any software unless it comes from a trusted location: namely *

Microsoft has released an “Automated Installation Kit” (“AIK”) for some software. For instance, details are available at the “Readme” file for the Windows Automated Installation Kit for Windows 7.

Third party software package management solutions
There may be some third party solutions. (These haven't been fully tested at the time of this writing, so only use at your own risk!) One of the compelling reasons why package management solutions are frequently used in other operating systems, such as Debian-based releases, is because those package management systems are the most well known easy method to obtain software for such platforms. Although that reason may not be as compelling for the Microsoft Windows platform, since other operating systems may have other solutions, there may be other benefits to using package management software which check known software repositories, including easy installation (including dependency handling) and uninstallation, easy ways to check for substantial new versions of software, and the ability to check reputation (perhaps mainly by simply checking whether software is even in a specific repository).
Installing software directly
In addition to being able to find various software by going to the various vendors, there are popular archives which may have lots of different software. Some recommended repositories include: mozdev PluginDoc: Windows (Most Popular),, TOOGAM's software archive, SysInternals, SourceForge (which has a lot of great software, although this site also has a lot of software for platforms other than Microsoft Windows).
Other methods
The download page for Wine from may provide some details about other formats being used: .txz by Slackware 13.1, .pbi for PC-BSD, .pkg for Solaris. Another package management system used is portage, and it is used by Gentoo (and Sabayon). A package manager named “pacman” is used by Arch Linux. Wikipedia's page on Linux Mint: section on “Software developed by Linux Mint refers to “Software Manager”, with a note that “The option to use the old MintInstall program is available”.

The following may not be primarily about a centralized package installation tool, but still be related on some way to distributing software packages.


Software repositories

Popular software repositories may often be the default repositories used by some popular package management software solutions. For this reason, it is recommended to check for information about repositories in the sections about package management software; specifically in the subsections about customizing/checking/changing which software repositories are used. Here are some additional ones.

Debian Backports has been moved to the website; it had been at Older versions may be at's section of Debian Backports. Perhaps see also: Wikipedia's page on Super_OS: “Software repository” section.
OS/2 Hobbes Archive (at the New Mexico State University) was a huge source of OS/2 software. The site says “We look forward to keeping hobbes alive as long as it is used and appreciated by the OS/2 community.”
Apple II
Apple II Asimov FTP site has a lot of software for the Apple II platform.
Click'N'Run / One-Click & Run
Video game systems

Legal software can be obtained from Zophar Domain's Legal ROMs section ( ). Some of the ROM software is distributed with source code, such as Tic Tac Toe for the Super NES and Bingo for the NES. (Both of these examples have been made available from Zophar's area of legal ROMs). ROM software may also be legally downloaded from MAME's ROMs for Free Download, although that site notes that the ROMs are not necessarily redistributable. Although there has been some stigma in using ROMs on emulators because of less authorized use that occurs in some cases, there is nothing illegal nor shameful in legally using such ROMs when proper authorization has been freely granted.

Many of the free, legal ROMs may not have been commercial in the past. Those ROMs may often be less famous examples, often being developed in homebrew environments. Quality of such games may, in at least some cases, be notably less than comparable polished games that were created with the financing of commercial budgets. For some commercially available games, purchasing a legal license for non-commercial (home-based) use is an offering that was available from StarROMs before Star ROMs closed down. The ROM code of a the “Game Genie” for the NES was released by CodeMasters, who designed the device and who used Mattel for distributing and marketing the device.

[#sftwrupd]: Updating software

Updates in software are often able to be implemented in one of two basic ways: applying an update to the older software, or completely removing the older software and then installing the newer software. Using an update may be faster, and may be smaller to download than an entire newer version. In some cases, the latest version of software (or critical data, such as tables of tax information used by financial software) may commonly be distributed as updates, so applying updates is required in order to reach the latest version of the software and/or related data.

Preparing for updates

Guidelines on performing updates will vary. Some strict guidelines for an organization, for example, may require that the updates be pre-tested by having them be installed on less critical machines before they get applied to more critical systems. Those less critical machines, which may be designed exclusively for the purpose of being used to test updates, are generally expected to differ very little from the machines that are used in an actual production environment. For instance, logs showing when the machine was last logged in, and by whom, will vary. However, other than the small subset of data related to how the system was used, and by whom, and when, all other details of the machine may be identical to what is being used by an end user.

Such rigid guidelines may commonly not be applied to smaller organizations, such as a household with only a single resident who uses only a single computer. However, even in such cases, it is good to make sure that crucial data is fully backed up. (Actually, ideally important data should be getting backed up even when no updates are planned.) Even if the software update process results in a report showing that the update was successful, the resulting software after the update may not work as well as before the update. In very severe cases, an operating system may not fully start.

If a system cannot easily have all updates tested before they are applied, it may be good to regularly apply updates (automatically) anyway. This could cause problems, and those problems may need to be dealt with (perhaps quite quickly, under circumstances of time pressure). However, if a computer is regularly used to connect to the Internet and browse public web sites, those problems may be less severe/critical and/or common compared to the likely problems that may occur if a system is not being updated. (The precise truth of this comparison involves generalized predictions which may not be true in call cases. How true such predictions are likely to be for individual situations will be determinations that may be worthy of having individual judgement calls be made.)

Some software will have an option to automatically check for updates. The clearest example of this may be anti-malware software, where updates are generally considered essential to continue to be decently useful. A well-done implementation is Firefox, which informs users (and may automatically download) when the program is started. A comparatively poor method used by some software is to run a special program whenever the operating system starts up. This method not only increases the time of the system's startup process before the system is decently useful, but ends up costing resources even if a user has stopped using the software.

Some software will come with a method to update the software. In some cases, updates may be checked for by going to the program's “Help” menu. (e.g. Adobe Reader?) In a small number of cases, Windows Control Panel may have a control panel applet for the software (e.g. Java (what? JRE?), QuickTime?) and that control panel application may have an option for updating.

Software that supports package systems, such as pkg_*, apt, and yum, may often have a way to update software. This can be advantageous. Instead of the developer's sites needing to support bandwidth, software repositories dedicated to sharing software can take on the role of providing the bandwidth. Administrators of a computer system or a network of computer systems can roll out updates of multiple pieces of software at a time when it is convenient for the administrator to spend time implementing the updates and when there will likely be time for handling the additional support that updates may cause. The Administrator may also be able to use a rather uniform process to roll back an update on multiple computer systems if the update ends up being problematic.

Automatic updates may be applied in some cases. Centralized updates may be applied in some cases, and individuals wishing to upgrade earlier might be barred (by security permissions) to perform that task (or they might be allowed to do so at their own risk).

Updates may be made available from a vendor.

Updating OpenBSD (info from, More Packages for OpenBSD

[#osupdate]: Operating system updates

In some sense, updating an operating system is simply a case of updating software. Sometimes some special software may be commonly used for updating the operating system.

A lot of these details are specific to an operating system, and so there is a separate area discussing operating system updates to cover many of the details. For some, like multiple versions of Microsoft Windows, this may cover a concept such as automatic updating. In other cases, compiling from souuce code may be a covered topic.