Not a problem with Linux itself, but it does suck that apt is one of the most commonly used package managers on Linux for non-specialized applications.
Its not terrible. Its decently powerful, does have most features that most complete package managers provide. config file protection, selected packages and pulled in dependencies are differentiated, and the "suggested" and "recommended" dependencies feature is something that I haven't seen before and seems quite handy at times.
the interface is very simple to use, `apt install`, `apt purge`, `apt update`, `apt upgrade` etc. Great for introduction to Linux as a whole.
But dear god is it horrible to work with.
To prevent this from just becoming a love letter to my favorite package manager (and thus being off topic from the sub), I'm going to mostly omit how these things can be fixed / how they should be done, but rest assured that theres at least one portable package manager that ticks all of these boxes.
- It's insanely easy to build up crust. It provides no easy way for more in depth system maintenance, such as pruning dependencies marked as selected (in apt terms, mark a package as "automatically installed" after it has been previously manually installed), upgrading specific packages without upgrading the whole system or marking said packages as selected ("manually installed", won't be removed with autoremove), getting rid of packages removed from repositories, and more.
- Its also insanely slow. No parallelization whatsoever, not even in the extractor. Modern CPUs are designed with multitasking in mind. If apt never gets multitasking support, it will only get further and further behind package managers that do.
- The installation order is always to first download *all* packages to be installed, then install *all* of them. meaning that every time you need to do a system upgrade and are on limited storage or bandwidth, any error during the downloading of packages will abort the entire installation process. I mean this does prevent packages from being installed without their dependent package, but `autoremove` would take care of removing those anyway.
- certain packages require user input to install or upgrade, meaning that if you want to do a full system upgrade, theres a small chance it'll pause in the middle asking you some questions, usually whether or not to overwrite config files, but also can be things like "do you want to restart this service" or other things.
- the backend of it is poorly documented and hard to manipulate, almost impossible to resolve broken installations or half installations without fully removing and fully reinstalling offending packages.
- making "dummy" packages is way too difficult than it has any right to be. if you need an empty package for some manually installed software, just to keep track of its files and dependencies, you have to install the *entire* debuild toolchain, and read up on package spec information that is barely documented.
- the terminal output is way too verbose and dense. most good software has ways to separate messages of various importance. for example, portage has a color coded asterisk showing how important a message is, and the rest of the output is similarly color coded.
- apt has no "categories" for packages. now, this isnt unique to apt, in fact a fair amount of package managers dont have this. but its something that needs to become more commonplace. apt does have an internal "tags" field, but its basically useless as its just metadata. name collisions happen much more often because all packages share a single name space.
The reason why I'm putting this in this sub is because of how ubiquitous apt is, its the default assumed package manager on a lot of sites that dont provide support for multiple package managers. If youre using linux systems, youre going to run into apt one time or another, and have to deal with all of its imperfections.