dpkg is the core of package management in Debian-based Linux distributions. it has multiple front ends like apt or aptitude that extend dpkgs usability and features
Ranked in these QuestionsQuestion Ranking
Pro De facto package manager / widely used
Due the popularity of Ubuntu, Debian and Linux Mint it is almost certain that you find the package you want as a pre-built deb package.
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 Great multiarch support
DKPG has one of the best multiarch support you can easily add new architectures with dpkg --add-architecture $ARCH to install foreign architectures.
Pro Follows the UNIX philosophy
DPKG and it frontends follow strictly the UNIX philosophy that one package should do one thing well.
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
DPKG isn't as bloated as other package managers since it is only made for local package management.
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.
Pro install -f
The most package issues can be easily resolved with aptitude install -f
Pro User interaction
It is possible to interact/ask questions to all pre and post install scripts. This makes it possibe to add questions for package configuration or to display EULA/License screens that have to be accepted before installation.
Pro Stardard archives
Deb packages are simple ar archives with additional tar, lzma, bzip, gzip support.
Pro Very easy to create packages
There are plenty of helpers to easily create packages.
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.
Con Very complicated and redundant packaging process
Filling out all requirements for .deb creation is such a pain that a lot of developers resort to packaging .deb files manually, because official packaging tools are too strict.
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 Highly unreliable
"You may have held broken packages"...
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.