instool is a small installation program that will install tar.gz packages and create uninstall information for later use. It can also read makefiles and create uninstall files for a make install operation.
Packages installed with instool can be uninstalled at any time. Uninstall packages can also be listed at any time to track what is available. instool works for normal users or for administrators in root mode (uid 0).
It keeps it's uninstall files in a directory in the users home path, or a system directory, depending on the mode it is run under.
instool also now works with source packages by reading the make file and determining the files install when you do a make install. It does not do the install for you, but it can create uninstall file from a makefile.
Below are the command line options that instool understands :
packagename Installs packagename (the name of a tar.gz package)
-l Lists all uninstall files available for the current user
-s filename Tells instool to search a makefile in the current directory to find all install targets used with the make install command and create an uninstall file. the user must supply a filename to name the uninstall file (usually the name of the package).
-u filename Tells instool to uninstall a package based upon the information created during the installation. The package must have been installed by instool. Uninstall files are
stored in the .uninst directory under the users home dir.
-i filename Installs a package. This is the same as using instool packagename.
For users, instool creates a directory named .uninst in their home directory to store all .uninst files. For root, instool creates a directory named /usr/uninst/ to store all system wide uninstall files. instool records the base directory that each package is installed to as
well as all files and paths created during the install.
Listing uninstall files
When used with the -l switch, instool will list all uninstall files for the current user, or for system packages if you are logged in as root. Those filenames must be used with the -u (uninstall) switch. The filenames are based upon the original name of the package installed.
Be aware that if you install more than one version of a package, instool will keep seperate files for each install based on the filename of the package. If different versions are installed to the same base path, any uninstall will delete files of the same name from a previous (or later) installation.
Uninstall filenames are stripped of their .tar.gz or .tar.bz2 extensions and stored as the base name with a .uninst extension appended. To uninstall a package, it is not necessary to include the .uninst extension. Just supplying the base package name is enough. use the -l switch to list packages that have been installed with instool.
When used with the -s switch, instool will look for a makefile in the current directory and find the install targets. From this information, instool will build an uninstall file based on the filename that you supply. the -s switch should be used after you have already successfully compiled and installed the package. instool does NOT do an actual installation in this mode. It simply finds what was installed, and where. As an example, if
you use :
instool -s svgalib
instool will follow the install process specified in the Makefile and create an uninstall file named svgalib.uninst in the appropriate directory. It will not acually do any installation however. It is important that instool is run after the actual compile and install process because many packages require a configure script be run prior to running make and then make install. The options and variables created by the configure script are important to the
function of instool.
If you are root, instool will allow you to change the base install directory before it begins the process. This can be useful for mutiple versions of a package.
instool does not currently delete empty directories during an uninstall. It may in the future, but for now, you have to do that manually if you wish.
This is not meant to be a package manager, or to replace system apps like rpm or apt. It is simply a tool to ease the process of installing a tar.gz package with the option to easily and quickly remove it later. You should always try to find packages specifically for your distributions package management system before resorting to a tar.gz package.
There are packages that are not available in rpm or deb format though, and that is why I wrote instool. The ability to read makefiles and undo a make install at any time without having to keep the source directory intact is a nice feature too. Many makefiles do not include an make uninstall target anymore, as some that do, don't do a terribly clean job
of removing files they install.
You can put instool into any pathed directory you like. If you don't want users to have easy access to it, I would suggest /sbin or /usr/sbin since it is not in the default path for users. You can also simply change the file permissions for instool to 700.