Every Linux distribution is different in terms of how software is installed. Linux distributions use different installation file types, package managers, and commands for installation. Even within a single form of Linux, there are different types of package managers. This article will explain how to install software on Debian-type Linux system and how to use a few of the different Debian package managers and installers as well as some useful information about Debian files and repositories. Introduction: Debian Linux systems use deb installation files. These files have the ".deb" file extension. Examples of Debian systems include Ubuntu, Finnix, Knoppix, Debian (origin of the package name), Linux Mint (Debian Edition), MintPPC, Linspire, MEPIS, and many others. The Internet media mimetype of a Debian file is application/x-deb. The Debian file itself is two tarballs (tar file; Tar files do not compress files) compressed together as one file with gzip, xz, lzma, or bzip2. One of the tars contains the program data while the other holds control information like the package name, version, description, etc. Debian files are usually downloaded by package managers from a software repository. A repository is a collection of Debian files that typically comes from a server or other location. Package managers access these repositories and download the requested Debian file. Then, the package manager installs the package. A package manager is software used to handle the installation, removal, configuration, and updating of programs and drivers on a computer system. If a Debian file is not downloaded from a repository, then the user downloaded or created a Debian file. The local file can still be installed; Debian files are not required to come from a repository, although most do. NOTE: No matter where the Debian files comes from or how it is installed, root privileges are required for installation. Graphical programs (programs that are not command-line based) will prompt the user for the root password. When using the command-line, always remember to type "sudo" before the command. If the current user is root, then root is not required to type sudo. Before package managers and installation are discussed, it is important to know some package states. When managing packages, the software packages may be in one of many states. A package with the state "not-installed" is currently not installed on the system and no residual files exist. The "half-installed" state is made when a package installation has started, but did not finish for some reason. The "config-files" state indicates a package was uninstalled, but configuration files remain in one or more of the system's directories. (If a config file remains in a home folder, that does not count.) The "unpacked" state indicates a package was uncompressed and the files are separate. A "half-configured" deb is unpacked and the configuration started, but did not finish. Files in the "triggers-awaited" state are waiting to be triggered by another package(s). The "triggers-pending" state indicates that the package has been triggered. Another state is "installed"; files with this state are fully and correctly installed. There are also package selection flags. When choosing packages to install, they will be in one of many states. The "install" flag means the software is marked for installation. A "hold" flag indicates that the package will not be installed yet. The "deinstall" flags marks applications to be removed. The "purge" flag is the same as "deinstall" except the configuration files are also removed. There is one package flag - reinst-required. Software with this flag cannot be removed from the system without forcing removal. This set of software is broken and must be repaired by reinstalling. Many of the package managers use these flags and states. When using a package manager, it helps to understand these definitions. Command-line: Debian files can be installed via command-line a few ways. If the file is local, then type "dpkg -i package.deb" in a terminal. Replace "package" with the name of the file. The command "dpkg" is the default Debian package manager. It is a command-line application. The "-i" parameter states installation and is followed by the path to the file to install. To install software from a repository in a terminal, type "apt-get install PACKAGES". Users may list one package or many separated by spaces. To add a repository, type "add-apt-repository ADDRESS" where ADDRESS is the repository location. The most common repositories that users add are Personal Package Archive (PPA) repositories. Most of these repositories are hosted by Launchpad.net. An example PPA addition looks like this: "add-apt-repository ppa:noobslab/icons". NOTE: When making package changes, the user is prompted before changes are made. Also, when installing packages, information is printed to the terminal about disk space that will be use and software that the package requires. To repair packages from a terminal, type "dpkg-reconfigure PACKAGE" where PACKAGE is the package to be repaired. If users wish to unpack a deb file to view the contents, they can use a terminal by typing "dpkg -x PACKAGE.deb ./PATH". Replace PACKAGE with the package name and PATH with the path for the output. To remove/uninstall software, type "dpkg -r PACKAGE" using a terminal. NOTE: When referring to the file of a software package, include the file extension and path to file. When referring to installed packages or a package in a repository, do not type ".deb" after the name of the package. Graphical Package Managers: Some users do not like command-lines. Thankfully, there are many alternative options. The graphical package managers are frontends to the Advanced Packaging Tool (APT). This means graphical package managers act as a Graphical User Interface (GUI) for the command-line APT tools. A frontend uses the command-line tool after the user provides the information via the graphical application. Some of the package managers are discussed under the following headers, but this is not a complete list. Synaptic: Synaptic is an advanced package manager that installs deb packages from repositories. Users can search for packages and right-click the desired packages. Options include install, reinstall, remove, complete removal, upgrade, and unmark. "Complete removal" removes the software and configuration files while "removal" only removes the software. “Unmark” is used when a user marks a change (like marking a package for removal) and the user later decides not to make the change. After the user has marked changes to be made, they can click "Apply". The "Reload" button is used to update the software list by scanning the repositories. "Mark All Upgrades" marks all of the newer versions of software to upgrade the older installed software. On the bottom-left side of the screen, users can click buttons that place the packages into groups. Users can then click a group and make searches within that group. Examples of some groups include all, not installed, installed, development, LP-PPA-noobslab-themes/raring, marked changes, arch: amd64, and many others. "All" would include every package. "Not Installed" and "Installed" would be packages not installed and packages installed, respectively. “Development” would be applications for software development like Geany or Eclipse. “LP-PPA-noobslab-themes/raring” is a repository. “Marked changes” includes the software changes that the user has made, but not applied yet. “arch: amd64” contains software compiled for AMD64 processors. There are many other groups and categories. Most are self-explanatory. GDebi: GDebi is not a package manager; it only installs local deb files. This program can also be used in a terminal. To use the GUI, right-click a deb file and choose to open with GDebi. Then, GDebi opens with information about the package. Some of the information includes description, version, required files, files included in the package, and other information. GDebi is used when a user wants to quickly install a local file. The installation is fast and GDebi does not require much of the RAM or CPU resources. APTonCD: APTonCD is not a package manager. Instead, this software allows users to make a disc containing all of the Debian files for the software that is installed on the system. However, this would only work if the Debian cache is not cleared. For instance, /var/cache/apt/archives is the directory path to a folder that contains stored debs. When a program is installed, the package manager downloads the deb to this location. These files are kept for backup purposes. APTonCD copies all of these debs to a disc or creates an ISO file (virtual disc file). This allows administrators to use this disc to install the same software on other systems required to be the same as the original. This may also be used as a backup disc of the packages. Ubuntu Software Center: The Ubuntu Software Center is a Debian package manager that is specific to Ubuntu. This package manager is designed for ease of use. Ubuntu Software Center is not an advanced application like Synaptic. Instead, Ubuntu Software Center was developed with mainstream users in mind. The package manager is very simplistic. The main screen contains a list of application types to the left and popular and new apps around the center of the screen. In the top bar, users will see large buttons for installed apps and all programs. The simplistic layout makes this package manager self-explanatory; users should be able to figure out how to use this program with ease. This package manager provides user reviews for the apps. This will help Ubuntu users to avoid buggy or malicious software. The List File for the Package Manger Systems: On Debian-based Linux systems, there are some system files that are crucial for the proper functioning of package managers. There is one that users should understand specifically. The file /etc/apt/sources.list is a plain text file with a list of repositories. Package managers read this file and use the addresses to gather lists of packages that can be installed. This file has commented lines (ignored lines) beginning with the pound sign (#). Repositories can be added or removed using a package manager or manually changing this file. Disabled repositories are disabled by placing the pound sign (#) at the start of the line. Two example lines are provided below. Code: deb http://us.archive.ubuntu.com/ubuntu/ saucy main restricted deb-src http://us.archive.ubuntu.com/ubuntu/ saucy main restricted The two lines indicate that the repositories provide binary (compiled) and source code packages, respectively. Next, the address is given. Following that information is the OS version which indicates what software is compatible with the system. In this case, the field contains "saucy". This is the codename for Ubuntu 13.10. This keeps software for Ubuntu 14.04 or Debian (Wheezy) from being installed on this system. Lastly, the repository type is listed (this is used by Ubuntu systems). The possible strings for this field include main, main restricted (or just restricted), universe, and multiverse. These for terms indicate the software's licensing and support from Canonical (makers of Ubuntu). Main - This is free software supported by Canonical. Examples include VLC, Firefox, Thunderbird, and Clementine. Restricted - This software has license restrictions like no distributing, modifying, copying, and other restrictions. This group of software contains useful applications that Canonical supports. For example, MP3 codecs and RAR are needed by many users, but the MP3 codec and RAR are not free open-source software. Universe - Software from a PPA (like Launchpad) or open-source sites (like Sourceforge) would be in the universe category. This software is free, open-source software, but Canonical does not support this software. A specific example would be the icons and themes from Noobslab. Multiverse - This group contains closed-source software that has license restrictions and no support from Canonical. An example of this type of software would be Linux video games purchased from some third-party company that has no affiliations with Canonical. This group may also contain free, closed-source software like Opera. Non-free refers to multiverse. Users may also notice the words stable, backports, proposed, updates, and security. Stable - This stable software is intended for mainstream use. Testing - This software is still being tested and is planned to become part of the next stable distribution. Unstable - This software is new and is not ready for the "Testing" category. Backports - Backport repositories contain updates that are not supported by Canonical. Proposed - These updates are proposed updates. Canonical supports these updates and uses them to test the stability of the updates before moving the software to the updates repository. Updates - These repositories are for general updates like updating Firefox from version 33 to version 34. Security - This group of software includes updates that directly relate to security.