Recs.
Updated
DPKG is the core of package management in Debian-based Linux distributions. It has multiple front ends like apt or aptitude that extend dpkg's usability and features.
SpecsUpdate
Pros
Pro Follows the UNIX philosophy
DPKG and it frontends follow strictly the UNIX philosophy that one package should do one thing well.
eg:
Dpkg: does simple package management
APT and aptitude : adds repository and dependency tracking
debconf: does configuration
synaptic: allows mouse interaction to all apt/aptitude options
Cons
Con Package creation needs more than one file
A debian package needs at least the following files to build it with debhelper
debian/source/format - deb format
debian/changelog - changelog file with version number and dae etc.
debian/compat - debian package version
debian/control - package information, dependencies & co
debian/copyright - license information
debian/rules - the make file to build the package
However the really important files are control, changelog and rules all other are generic.
Recommendations
Comments
Flagged Pros + Cons
Pro Supports searching for packages
If you are not sure about the name of the package you are looking to install, you can easily search for it using the search function provided by the apt tools: apt-cache search $search_term
Pro Synaptic finds all dependencies reliably
Its search is as simple or as detailed as you like, adding "Fixing" "Broken" "Upgradeable" the list goes on. Also manages PPA's on other software sources smartly.
Pro Tab-completion of package names
By pressing <Tab> when writing a package name, for example sudo apt-get install ge<Tab>
it will be autocompleted by apt: sudo apt-get install gedit
.
Though it's worth noting that to activate this feature in Ubuntu you need to edit the /etc/bash.bashrc
file and remove the comments from these lines:
# enable bash completion in interactive shells
#if ! shopt -oq posix; then
# if [ -f /usr/share/bash-completion/bash_completion ]; then
# . /usr/share/bash-completion/bash_completion
# elif [ -f /etc/bash_completion ]; then
# . /etc/bash_completion
# fi
#fi
Pro Apt is intuitive and easy to use
APT uses a simple syntax to search, install and remove packages.
Pro Excellent GUI in Synaptic Package Manager
The graphical embodiment of apt in synaptic package manager is excellent.
Con Slow
Compared to many package managers, Apt is a very slow experience. From fetching packages, to caching them, to actually installing them, (and all the steps between).
Con Suboptimal dependency resolution
Apt has only a rather simple heuristic based resolver that can result in users getting package blockages when putting individual packages on hold.
Pro install -f
The most package issues can be easily resolved with aptitude install -f
Con Counterintuitive CLI
For installing and removing you have "apt-get", for searching "apt-cache", for listing "dpkg". "dpkg" uses only switches whereas "apt-*" also commands, ... At least there is this "aptitude" frontend, but that's not a standard tool.
Con Heavy for single-package repositories first install
Trusted source repositories are great (designed) for distributing large batches of interconnected software and updates. But, Trusted repositories are often used as the preferred way to distribute single 3rd party packages (and future updates), with the mandatory step of updating the entire software cache/dep-tree. These updates may be lengthy and therefore annoying for single package installation use. Notably, this annoyance can be avoided by the developer; One such example is the google-chrome deb package which updates you're trusted repertories as a post install step, though this is less transparent which can be it's own annoyance.
Con Lack of sanity checks.
One thing that apt appears to lack is transaction tests and post-install verification. Coupled with the aforementioned poor dependency resolver, this can lead to deep headaches.