What are the up/downsides of the way Linux does software installation?

From my understanding, all software installation on Linux is done with the same package manager which installs software; but in Windows (and Mac OS X?) the installer program is particular to each software package and is included with those files. Is that correct?

So I was wondering, what are the reasons you would want to do this one way or the other? (Edit: From a CS/technical point of view.)

Posted Dec 20, 2010, 5:56 PM UTC · edited

721
fleg•

Upsides:

  • Automatic updates
  • easiest way to download and install apps imaginable
  • no need to have 1000's of copies of libraries that's not shipped with system by default yet used by most of the apps that you use because one copy is installed whenever you need it
  • ability to batch install as much of packages as you want easily
  • every package installs in the same way
  • no redundand overhead because the installer code is built in the package manager.

Downsides:

  • There are two main package formats, incompatible with each other (but there's alien to convert between them), and many smaller ones, that makes publishing Linux apps kinda difficult

Also Windows way has one cool side, as software publisher is able to add some effects to installer to show during the installation - it's nice to see screenshots while installing games or whatever. But when installing 100th application it's not cool any more, it's annoying.

8
jan•

There two package formats but thousands of distributions. While a deb package may work on Debian and Ubuntu, due to the large number of shared libraries required by many apps, it's not very likely.

Here are my cons:

  • Distributions / package managers offer no (common) interface for third party application or driver developers. This is especially bad for those who (have to) distribute binary-only. Independent software publisher have four options, none of them is good

** Providing a .deb/.rpm package, can't handle dependencies/conflicts elegantly

** Setting up a repository for any (popular) distribution out there

** Providing a source tarball

** Providing an installer script

  • Only root can install software. Generally speaking this is good. However most packages (from a trusted source) do not break anything, so it would be reasonable to allow power users on a multi-user system to install packages they want to use (without giving them full root access). There's no clean way to do this.

I want to add to your pros:

  • All software comes from one or more trusted sources and is signed to make sure it has not been modified by your friendly government/ISP.

  • Any program or system file belongs to a package. So you can look up what it is good for and why it has been installed.

8
fleg•

Local Deb/Rpm packages can handle dependencies - just install them via dpkg or yum, dependencies will be downloaded and installed automatically. Graphical front-ends do that as well. They are treated like packages from repositories, but obviously won't be updated, and user will be informed if there's any version in his repositories.

Well, there was a project called Autopackage, that took care of installing apps locally and did it in a really friendly manner. I guess that was an answer for independent publishers, as it worked on every distro, installed everything in home folder (in hidden subfolder, to be specific), allowed easy uninstallation and was easy to use by everyone. I have no idea what's happening to it right now, and I'm on my phone so I can't look for it.

5
jan•

Local Deb/Rpm packages can handle dependencies - just install them via dpkg or yum, dependencies will be downloaded and installed automatically. Graphical front-ends do that as well.

Yes, but this will only work if all dependencies are in the user's repos. If the package in questions depends on some library not in the distro's main repository, things are getting more complicated.

Autopackage

interesting

2
lisatomicOP•

Thanks, this is the sort of answer I was looking for.

2
hug-a-thug•

Another downside is that not everything is packaged for every Linux distribution. It’s possible to install something without the package management system, but it’s easy to make a mess when you do that and don’t know exactly what you’re doing.

1
fleg•

Well, that's not a downside IMO. While it's nothing good, I guess that's not this systems fault that not everything is packaged. Creating Arch packages is child play, and while I've never tried that, deb/rpm creation isn't difficult either AFAIK.

1
jan•

It is a downside.

Take this example: Ubuntu users googles for an application to do some task, finds rpm and arch package, but no deb. User is left puzzled and has to dig through forums to learn that he can compile from source (and build a deb package). This is not as easy as it could be.

1
UndeadBelaLugosi•

True, but you do have the option to build from source. Linux gives you the most opportunity to be able to install a program. Some are easy (repos), some less so, but if you really want it you can probably do it.

2
hug-a-thug•

This is clearly a downside if you want to install software that isn’t packaged. (And not running Arch.)

For example, I’m waiting for Debian packages for Tahoe-LAFS for months. They say they have packages available, but the repo is somehow broken. If I remember correctly, they don’t have packages for all dependencies.

Sure, it’s not the system’s fault. I’m not saying package managers are bad. On the contrary, just thinking about how awkward handling software felt back in my Windows days makes me cringe. But it is clearly a downside as it limits the amount of available software. For Windows, the publisher hands out the installer together with the software. For Linux, the distributor gets the software from the publisher and packages it for hundreds of thousands of programs. Obviously, this cannot happen instantly when new software is released.

1
caks•

Another downside is that software takes longer to land on the repositories. However, if one is looking for stability, this is an upside.

5
fleg•

There are repositories with nightly builds, if you feel lucky. Also authors sometimes provide their own repositories with up-to-date versions of their apps. Good thing about this system is that you can create your own repositories ;)

3
vikat•

I haven't been a linux user for long, but what annoys me are the package names and how I keep ending up with 2x the packages I was expecting (because of dependencies). Also, I just installed KDE on my Ubuntu 10.10 install and wanted to get rid of it. Close to 300 packages and no easy way to uninstall them all. Then again, it's nice to install most things from one place, with info and automatic updating. My 2 cents.

EDIT: My reply is redundant now :(

2
jan•

Ubuntu tracks which packages have been installed due to dependencies. So, say, you installed kubuntu-desktop (which has many dependencies), removing kubuntu-desktop should remove them all. Alternatively if you remove one of the core packages of KDE, the package manager will remove all of KDE, because every KDE package dependents on the core.

1
trucekill•

One more upside. You can specify a list of packages to remove. My gf just got an acer win7 laptop with a billion terrible pieces of software that I had to install one by one.

2
[deleted]•

[deleted]

1
[deleted]•

Most package managers allow you to list the files and their locations installed by each package. Plus, they mostly conform to the File Hierarchy Standard.

6
ideas-man•

Any of /usr/local/bin:/usr/bin:/bin:/usr/games and it doesn't matter because bash will find it.

2
[deleted]•

[deleted]

0
jan•

/etc

~/.appname

1
[deleted]•

[deleted]

2
Band_B•

~/.config/appname

2