34

I'm sure it's not about laziness or anything like that but I fail to understand why developers of even mainly consumer facing apps don't make any sort of installation wizard where you go next-next-finish. The same apps usually have installers for Windows and Mac OS so why not Linux?

Is there any technical reason for this trend or is it just convention?

EDIT (23-09-2014): This question was not asked to start a Windows vs Linux flame war. I have used all 3 major operating systems and apart from Linux, the other two (Windows and Mac OS) both have installers. I have not installed Oracle yet but whatever I have needed to install, I never saw any GUI installer for Linux.

Yes, I know that Linux has package managers so the developers don't "need" to make the installers. But there is still a huge amount of software that is either outdated in the default package managers, or simply not available. Plus, since Linux is sold as an alternative to Windows for casual users (Ubuntu is trying hard in this domain), it would make much more sense to just give the users what they are familiar with.

Take for example, setting up a LAMP stack. Those are all open-source software in the default repositories, but can you set-up everything in one go without a script? Now look at the WAMP server in Windows. You just run an installer and it installs multiple software in such a way that they work well with each other. Then it sets up good defaults and stuff. Installers can do that, package managers don't. Yes, you can find a script for that online, but where? And which one?

Installers aren't some obsolete technology from the past. They are still useful, and 95% users are already comfortable with them.

closed as unclear what you're asking by gnat, user40980, AProgrammer, user281377, BЈовић Sep 22 '14 at 14:45

Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 12
    There is no lack. Windows is not Linux. Linux is not Windows. – edmz Sep 21 '14 at 10:22
  • 27
    @Arsalan00 You're missing an important point. There is usually a GUI for package managers (Ubuntu Software Center, Synaptic, YaST, etc.). – nyuszika7h Sep 21 '14 at 15:41
  • 29
    I could never understand a point of such wizards, 99.99% of users will blindly click "Continue" anyway, so a silent, non-interactive installation makes much more sense. – SK-logic Sep 21 '14 at 16:48
  • 7
    @DebugErr You're offended by a simple joke. No offense was intended. – Michael Hampton Sep 21 '14 at 22:38
  • 6
    It's one of the many signs that Linux in any of it's current flavors is only meant for servers and other specialized environments, not for consumer usage. Normal people are completely overburdened even by apt-get or unfamiliar "software centers". You should give those people an .exe to click on, not a .tar.gz or page long guides on how to get basic software to work. I am sorry for upsetting anyone with my opinion. – Traubenfuchs Sep 22 '14 at 13:32
62

Developers just need to provide a package for a distribution. Each distribution then has a way to install this package. This way can be in a terminal (apt-get) or via a graphical interface, e.g. Ubuntu Software Center.

The beauty is that developers just have to care about building a proper package; the distribution makers take care of the rest, and each package installation has the same process.

  • 15
    +1 ..."each package installation has the same process." – Uwe Plonus Sep 21 '14 at 10:03
  • 7
    Well, the developers just have to care about building a proper package for every single distribution they want to support, so they will need one or more different RPMs, debs, build scripts for ports, etc. Package managers are great, but trying to support all the systems as a developer is hard. That's why most of the people maintaining packages for distros are not actually the upstream developers. – Alan Shutko Sep 21 '14 at 14:59
  • 12
    A serious downside of this approach is the packages being (in some cases seriously) out of date. On Windows I can install the latest version wherever I can; on Linux I have to use (install, and understand!) a version control client to obtain the source, and different compilers or Make/CMake/etc. to build it. – marczellm Sep 21 '14 at 20:11
  • 4
    Many projects do provide the latest stable version without the need of source control (unless you want the latest development version...). You will still need to compile them however, because it's impossible to create a binary that just works out-of-the-box for every *nix-like OS (unlike Windows, which is a very stable and homogenous platform). Fortunately, compilers are very easy to set up and install on Linux compared to on Windows. – Rufflewind Sep 21 '14 at 20:19
  • 3
    @API-Beast it completely answers the question. Developers don't have to make wizards, this cumbersome task is handled by the distributions. – Florian Margaine Sep 22 '14 at 7:31
41

Because they don't need to. Linux distributions usually have working package management systems, unlike Windows, where every single application has to re-implement installation and updating over and over and over and over again.

  • 6
    Yet, most non-techy people I know would prefer to download an installer and run the wizard rather than open up a terminal and type a command. This package manager thing is great for us geeks but it really bothers a common PC user who started using PCs after Windows 98 era. – Arsalan Ahmad Sep 21 '14 at 15:32
  • 42
    @Arsalan00 Think about Linux model as AppStore - it's the same model really. You could ask why there are no wizards for Android or iOS. – Maciej Piechotka Sep 21 '14 at 15:35
  • 5
    Android and iOS are far far more restrictive in the way they operate and in the way that they let the apps operate. Linux is the polar opposite of that. Mobile OSs enforce conventions, Windows seems to recommend conventions (program files folder, registry, etc. ) while Linux is more configuration than convention. – Arsalan Ahmad Sep 21 '14 at 15:41
  • 9
    Uh... if Windows doesn't have a "working package management system", then what is Windows Installer? I've never heard of developers having to re-implement this, at least not in the last 10-15 years. – Aaronaught Sep 21 '14 at 23:42
  • 5
    @Aaronaught And I've lost count of the number of Windows programs which don't use Windows Installer or something based on it, and are therefore needlessly difficult for IT to manage. – Michael Hampton Sep 21 '14 at 23:56
22

Most closed-source, non free-as-in-beer software for Linux does come with installation wizards. So does some closed-source, free-as-in-beer software, at least until most major distributions pick it up. For open source software, package managers are a clearly superior solution.

So what about the early stages before open source software gets picked up by the major distributions? Why don't developers create installation wizards during that phase?

First of all, a lot of open source developers plain don't care about distribution. They write software for themselves to use, and put it out there in case it is useful to others, but they see packaging for distribution as someone else's problem. If it's liked enough, someone will take upon themselves the task of getting it into their favorite distribution.

The open source developers who do care about distribution are still better off working within the package manager system, because that's where their customers are. Linux users don't typically search the web looking for software. They search their package manager first. Failing that, they search the "community maintained" repositories, like Ubuntu's PPAs or Arch's AUR. If you aren't in those places, your software most likely won't get noticed, and if it gets noticed, it's less likely to be trusted.

Foregoing those existing distribution channels is sort of like deciding superbowl ads are too expensive, so you're going to host your own football championship and advertise on there instead. It may be less costly, but it's also less effective.

As far as customizing the configuration goes, for software like a web server that's traditionally easier to handle with a config file, which makes the configuration easier to share, back up, and restore.

For client software like a web browser, it's much better to create a configuration wizard that appears the first time a new user runs the software, rather than do it at installation time. The main reason is Linux is a multi-user operating system, so you want to customize it per user anyway. This also makes it easier to rerun the configuration wizard later, for whatever reason, without having to keep the installation program around to reinstall the entire software. This type of wizard is fairly common in Linux software.

14

Linux distributions (as well, I think, as BSD-flavoured Unices) have a user-friendly interface to program installation, via so-called package managers (or ports management in the BSD case): pacman for Arch, dpkg for Debian/Ubuntu, and so on.

These package manager provide a way to install programs by means of uniform configuration files. Once the program you need is packaged according to your distro's package manager you can simply run its install command over the selected package (with occasional user-specific customizations, though often none at all) and the manager does the rest.

Package managers are usually more user-friendly than Windows' program-specific installer processes, just for the uniform way programs are packaged for installation. They usually also allow you to query the package manager database for the program you're looking for, see its dependencies.
They also support centralized update of the packages.

  • 3
    user-friendly is a subjective term. IMO, most computer users are very reluctant to use command-line tools and would find it easier and more comfortable if they could just use a wizard. Even if it takes more time. – Arsalan Ahmad Sep 21 '14 at 15:30
  • 1
    dpkg and APT are used in both Debian and Ubuntu. apt-get, apt-cache and aptitude are wrappers on top of dpkg. dpkg is rarely used directly, one use case I can think of is installing a package from a .deb file. – nyuszika7h Sep 21 '14 at 15:42
  • 16
    @Arsalan00 there usually is a graphical user interface for package managers, like Ubuntu Software Center or yumex. Package manager != terminal. – Florian Margaine Sep 21 '14 at 15:44
  • @Arsalan00 if you use Ubuntu, just go to opera.com/download/guide/?os=linux, download Opera for Ubuntu, and double-click the downloaded file. There is no terminal involved at all. – oliver Sep 22 '14 at 9:06
13

I've often asked myself, and others this question, and I'd like to address a point I often see brought up before I get to why Linux sees fewer installers:

Linux distributions provide package managers.

However, I wouldn't say that a Linux distribution's package manager is a replacement for an installer for, in part, the following reasons:

  • These package managers aren't standardized in operation

    A package manager is a bit like providing your binary and letting the end-user choose the installer. They can choose the terminal, or they can choose a tool with a more advanced GUI, but it doesn't afford you the same level control of the process as with a "traditional" installation wizard.

    An example of what I mean by control is documentation. You can't give your end-user instructions like "Click Next, and you should see ". You can give command-line instructions for a specific tool, but then you're not only relying on the fact the user has that tool, but also losing most of the benefits of an install wizard (after all, most wizards are providing a front-end for simple command line instructions and kicking off scripts).

    This also ties into aesthetics. Now you're depending on your end-users distribution to provide an intuitive/appropriate interface. While you are fully aware of that fact, it's not unreasonable for a more casual user to complain if double clicking your file (installer in their view) opens up an ugly package manager, does nothing at all, or worst of all opens up a terminal window. (The experiences I've had with users and their aversion of the "dos prompt" / "black and white box" / "Thing that's going to delete all their files if they look at it funny" could probably fill a book)

  • Package formats aren't standardized across platforms.

    There are tools to convert between systems like rpm and deb, but it's not reasonable to expect your end-user to convert your packages if you're using them in a situation where an installation wizard would be provided on another platform (i.e. clicks-and-done). Providing up-to-date packages for an additional package format can be rather straight forward if you have a rudimentary build system, but you're still adding a new binary that needs to be supported.

    That's also adding a new binary people have to choose from depending on their platform (it sounds minor, but I'm sure someone here can attest to having to explain x86 vs x64 before [yes, there are ways to deduce the right platform from the browser, but then you're getting into even more complicated, and harder to support, procedures])

  • Package managers are "nicer" to open-source software.

    This isn't saying that you can't share closed-source software with a package management system, it can definitely be done. But once you try to share close-source software on Linux distributions you run into a wall as far as your options for getting your software into common repositories is concerned. Things like PPAs or the openSUSE Build Service are out, and even the Canonical Partners repositories aren't enabled by default.

    That means, unless you provide your own repository, you can't many of the major features of package management systems, including automatic updates. In my opinion, this is the most important benefit across most platforms that use these systems (e.g. iOS, Android, and Windows Store).

    And even if you provide a repository (another job of variable triviality), you still need to get users to set it up (which is another layer of support, another set of non-standard approaches, and another diversion from the original point of the installer)

Now, having said all that, I still haven't addressed the original problem, why installers are less common on Linux in spite of these factors (amongst others). The original question asks if it's technical, or based on convention, and it's based on both in part.

If you look at the above factors I've mentioned, they also make things more complex for a "wizard-like" installer. For example, would your wizard include multiple package formats to install? How do you handle look-and-feel across distributions? The list goes on, and one thing that that packages do afford you is that none of this will be your concern (for better or for worse) as long you provide the right packages. And depending on the nature of your project, you can start to take advantage of those more "specialized" resources, like submissions of apps to the Ubuntu Software Center. This would all relate to the technical.

But the aspect that I personally find to be the driving force is convention. (I hope I've buried this deep enough that the people who downvoted that other answer to oblivion have stopped reading..)

I feel that poster had a point, but might have stated it too bluntly, and not actually provided objective reasons for that point. If you examine the differences I stated for a package manager and an installer, I wouldn't be surprised if you found most of them to be nearly non-issues (maybe even bordering on pedantic). But (excuse what I hope is viewed as legitimate use of an ad hominem argument) we're also users on site for programmers. I see Linux distributions pushed as an excellent Windows alternative for casual users (amongst many other things obviously). Not providing a commonly defined clicks-and-done procedure that all of these users can use really isn't ideal imo.

But at the same time, I don't find that many things in Linux to be especially ideal for that group either. Sure some distros have GUI-based package managers, but that means these people have to start looking into how to use a separate tool, on that isn't strictly focused on your program's installation (compare this and this to this).

Naturally you can use the GUI to do a majority your average casual user needs to do, especially with certain distros (ironically the things those distros are doing aren't always embraced in the open source community [look at complaints about Ubuntu and it's "walled garden"]) But I don't think it's deniable that Linux conventions favor someone who's comfortable with a CLI, or at the very least not deathly afraid it's appearance means they did something horribly wrong.

I'm not saying that this is what they aim for, but it's really what I see those conventions do. And package management systems in Linux seem to be following that. After all, most of their "downsides" nearly non-existent if your end-user is more comfortable with the underlying concepts.

Installers on most other platforms aren't really affected by that, and are designed so, to quote a comment on the question, "99.99% of users [can] blindly click "Continue". The problem with package management is getting those users to a "Continue" button, letting them know what that "Continue" button is (I've seen users get tripped up by tools that said press enter with other text), and letting them know when they've hit that "coast on clicking the "Continue" button" stage.

  • This is a great answer, and it explains the problem from the casual user's point of view. – Arsalan Ahmad Sep 22 '14 at 4:59
  • 1
    "Package formats aren't standardized across platforms." – All LSB-compliant distros (which is most of the major ones) support the LSB package format, which is a subset of RPM with all features removed that cannot easily be mapped to DEB. The command line tools, APIs and ABIs for LSB RPM are standardized as well. – Jörg W Mittag Sep 22 '14 at 18:17
  • @Jörg W Mittag I would hardly call LSB compliance standardized. On Debian, "LSB compliance" is using the Alien tool I mentioned in my post (and it's limited). And again, we're not comparing install scripts to packages. It's comparing installation wizards (that let even the most casual user install software without ever seeing the dreaded black box) to package managers. Requiring the use of a tool like Alien isn't providing the same process as providing an install wizard. – Selali Adobor Sep 22 '14 at 18:28
  • @AssortedTrailmix: the LSB package format is deliberately designed to be processable by Alien. And the end-user never needs to interact with Alien, the LSB package manager on Debian takes care of that. Also, building install wizards is explicitly cared for in the LSB. If the installer wizard links only against LSB libraries, then it can run on all LSB systems, and it can call the LSB package manager, because that is standardized, and it can install a package, because that is standardized, and in the end you will end up with a DEB in the DPKG database on Debian and an RPM on SuSE. – Jörg W Mittag Sep 22 '14 at 18:41
  • I understand that, but I guess I didn't understand your point. Aren't you just confirming what I said? My point was that an installation wizard and a package manager aren't the same. I wasn't suggesting that an installer can't use a package manager. It seems you're agreeing with the my view, but getting caught up on the rhetorical question "For example, would your wizard include multiple package formats to install?" – Selali Adobor Sep 22 '14 at 18:47
9

To large extends it's both. The Linux distribution model is closer to AppStore/Play Store then traditional Windows/Mac OS X one - and even those platform are moving there from what I've heard.

The convention is that it's simpler. Most arguments for the AppStore/Play Store applies to Linux as well:

  • Automatic updates. Having 20 programs update separately on Windows is disruptive and inefficient. User needs click though Java/Flash/Adobe/... updates on boot.
  • Single, trusted, repository. Do you check if you download via secure connection? Or you haven't download from an Reader update from get.adobe.com.hackers.example.com/setup.exe? Even if you do most users, especially not power users, don't. Instead you go to software centre or similar program in Linux and get a trusted copy.

Furthermore there are following benefits, which may not apply to AppStore/Play Store:

  • Not every Linux has GUI - think http server - yet most distros supports such configuration. Ok. Not everyone needs one but sooner or later someone will want to use it for whatever reason.
  • The ABIs of libraries on various distros may differ. Not going into details having an installer would put responsibility of the program working on you instead of people maintaining a package in repository.
  • Connected with previous one - you need to manage dependencies somehow. Bundling is considered improper for a reason - in such case you need to ensure that you have updated the library to version without a bug - for example you didn't include openssl 1.0.1f into your bundle. Practise shows that people do include outdated libraries with known security vulnerabilities.
  • 5
    +1 "Having 20 programs update separately on Windows is disruptive and inefficient." – IQAndreas Sep 22 '14 at 6:20
  • I'd say calling dialogues disruptive or inefficient is a little much. If a program has a poorly designed update system that's badgering users as soon as they log-in and not providing an option of silent updates it's mostly that program's fault. That being said, I don't find many programs doing it (most of them are programs that don't have a traditional start-up procedure), and the end result is arguably more manageable than one prompt listing every single thing that needs to be updated. – Selali Adobor Sep 22 '14 at 10:41
  • And "single, trusted, repository" is somewhat misleading. It's really only partially applicable if you're writing software that can end up there. Proprietary software doesn't easily end up in the well supported default repositories for common Linux distributions. Even the repo for canonical partners on Ubuntu (which entering is a non-trivial), is disabled by default and considered to be insecure by many as security risks in software hosted there have been known to go unpatched much longer than the same software based on other update methods. – Selali Adobor Sep 22 '14 at 10:58
6

Usually, the installation doesn't need interaction with a user (most apt-get packages for example), or can be scripted. This makes it very easy to automate in order to deploy a piece of software on many machines. Instead of doing things through the wizard, you do those same things through scripting or through configuration files.

Given that in Linux world, terminal comes first, and the GUI is optional, it becomes obvious why do they lack actual installation wizards.

Windows, on the other hand, is very user-oriented. Most MSI files can easily be deployed in unattended way, in the same way Windows installation can be unattended (how easy/difficult is to get WAIK to work is a different subject). This also means that a bunch of applications for Windows are not based on MSI, and are not scriptable. Among enterprise-scale application, Adobe products, for example, are known for being rather difficult to install in a scripted way.

  • 1
    That's an easy problem to solve. Many windows installers have a silent option and are pre-filled with good defaults so that the user doesn't have to do anything other than just press next buttons. – Arsalan Ahmad Sep 21 '14 at 8:52
  • 5
    I hate pressing next just because the developers failed to do it in a simpler way. – Silviu Burcea Sep 21 '14 at 9:23
  • @Arsalan00: the "user doesn't have to do anything other than..." breaks automation. If the user has to do anything, it cannot be automated. Ideally, you should be able to turn a machine on and let it boot through PXE, install an OS and then install and configure everything you need, with no user interaction whatsoever. With Linux, you can do that (except maybe a few applications, but I haven't encountered any so far). – Arseni Mourzenko Sep 21 '14 at 12:01
  • 1
    @MainMa your edit really hits the nail. If the developers want, they can make their installers scriptable or silent. But the wizard system really helps the novice user get introduced to what the setup is about, and wizards inform the user like package managers can't. Plus offline installs are something that is a major necessity for many people. – Arsalan Ahmad Sep 21 '14 at 15:35
  • 2
    @Arsalan00 usually package managers can ask questions if they really need to. Offline installs are possible with package managers, just download the package first, just as you do when you download and install file. And last, it's more userfriendly, most novice users should not care about "where do you want to install this" etc. it should "just work". – iveqy Sep 21 '14 at 15:44
-1

The target audience is different. Unix, and Unix-like systems, were usually used by professional programmers, sysadmins, engineers and serious hobbyists who customized each system to their needs. Any "installation wizards" would only limit their choices instead of giving access to all the variables they need. And the ones now out there still do.

Windows is not targeted at professionals in the same way and, thus, has more general purpose installers geared toward "users" who only want the thing installed. Linux is garnering more of these user-types who would probably appreciate such a thing but, possibly, most distros still have the professional in mind.

  • 4
    An installation wizard let you customize more than a package manager that is usually used on linux. – iveqy Sep 21 '14 at 13:35
  • @iveqy Any text config file will give you far more abilities than any installation "wizard" ever will. If such wizards could do better, they would exist, but they don't. – Rob Sep 21 '14 at 15:03
  • 4
    that's true, but editing text config files is not a part of the installation process of most package managers. Typical the questions on a windows installation process is "where do you want to put this", a package manager already decides this in the linux enviroment and "which components of this program do you want to install", and that has already been decided by the package maintainer in the case of package managers. You can see that a package manager is more userfriendly since it's used for android and iphone, (app store and google play). – iveqy Sep 21 '14 at 15:41
  • @iveqy I just realized we've gotten off topic. This has nothing to do with what I originally said and that you still don't see such wizards is further evidence of what I said. – Rob Sep 22 '14 at 2:38

Not the answer you're looking for? Browse other questions tagged or ask your own question.