Ubuntu Developing Its Own Package Format, Installer
An anonymous reader writes "While complementing Debian APT/DPKG, Canonical is now developing their own package format. The new package format has promised highlights of having no dependencies between applications, each package would install to its own directory, root support wouldn't always be required, and overall a more self-contained and easier approach for developers than it stands now for Debian/Ubuntu packages. The primary users of the new packaging system would be those distributing applications built on the Ubuntu Touch/Phone SDK. The initial proof-of-concept package management system is written in Python and uses JSON representation."
This quote from the post by Canonical's Colin Watson bears repeating: "We'll continue to use dpkg and apt for building the Ubuntu operating system, syncing with Debian, and so on."
Good, another reason to avoid Ubuntu like the plague.
The world's burning. Moped Jesus spotted on I50. Details at 11.
Sounds like a complement to dpkg, not a replacement
If everything has no dependencies, then all of the dependencies must be included in the install. I wounder how many copies of each low level program would be on a given machine.
They should do it all on their own. No more leaching off Debian.
A better headline:
Ubuntu Phone apps will use a different package format than debian/dpkg/apt
I guess that's not really as exciting though
Wasn't this exactly what GoboLinux embraced?
Support Eachother, Copy Dutch Property!
Remember the good old days when everything was just a single -r-xr-xr-x executable in /bin or /usr/bin
sigh, the good old days
Karma: Excellent. 15 moderator points expire sometime.
Would it allow users to install multiple versions of the same application from packages? One of my gripes with Linux is that it's not easy to test new or beta versions of software since there is no easy way to install from packages alongside the existing (stable) version. Yes, I know that I could build the app from source, but that can be quite a hassle sometimes.
Ubuntu is dead.
Augment audio support which worked with Pulse which doesn't work.
Replace X which worked with Wayland/Whatever, which has fewer features and doesn't work as well.
Replace gnome with Unity which runs slower and lets you do less and is unusable on many setups.
Now, replacing a package manager which is common, well-supported, and works with one which will be none of those things.
Explain to me why anyone uses Ubuntu any more..... Oh yeah - it's because of marketing and ignorance and nerd-wannabees. In-the-know nerds have abandoned it years ago for OS's which actually make life easier - something which Ubuntu was intended to do, but not fails miserably at.
Stop re-building the wheel, please!
They are planning statically linked applications. Of course they might want to build their own DLL hell in which case they are on the right track using shared libraries...
many packages use the programs, configs, libraries of other packages, to say nothing of application frameworks spread across multiple packages (like say openvas client, server, manager, libraries) to address cases where a server might have some local and some remote parts, or all be on one machine. this idea would make a mess of things
Why do we need yet another packaging standard? Isn't the whole point of open source to take good ideas and merge them together? So why then, do we see divergence like this so much more than convergence? Sigh. I suspect the reasons for this are political rather than technical; The main failing of open source as a community is that while the source is open, the politics are messy and it results in dozens of incompatible "open" standards, protocols, etc. We bitch and moan about closed source protocols and having to reverse-engineer everything, which is a massive waste of effort because we're duplicating previous work... and then we're busy doing it to ourselves. :(
#fuckbeta #iamslashdot #dicemustdie
I'm guessing that they are going to statically compile everything. Otherwise they couldn't get rid of dependencies. Which is bad generally for various reasons, except in specific cases.
Also, isn't there a variant of Linux that already does this? They also used symlinks to make a more sensible (and modern) file system, and other things. GoboLinux, I just found it. Actually, I'm not sure how similar they are...
(Also, the first link is not needed, please don't include such rubbish.)
HELP MY ACCOUNT HAS BEEN HACKED BY AN ILLIBERAL ART STUDENT SET TO DESTROY THE INTERWEBZ!
I dont think this is so bad. One cause of Windows' (tm) success is for sure that developers and users dont have to think about broken library dependencies after an update. For commercial (proprietary) software such packaging system could finally start the year of the linux desktop (y).
http://en.wikipedia.org/wiki/Application_bundle
Once again, racing as fast as we can towards where the puck was 20 years ago.
I think it's just a case of "because different" and "not developed here". I don't see how they could make any significant improvements over apt, but it doesn't surprise me from this group of hipsters.
Stop pissing in the pool Ubuntu.
Hello Debian
I don't think we're going to see a completely separate install of Gnome for every single Gnome app on your system. I think this is intended for standalone apps like you see on phones and tablets.
I read the internet for the articles.
it seems like they suffer from Not Invented Here but at the same time, I seem to recall that Puppy Linux already installs self-contained package bundles into individual directories. Not unlike OSX/NeXT app bundles.
“Common sense is not so common.” — Voltaire
Obligatory: http://xkcd.com/927/
everyday is another shooter.
This reminds me of PBI from PC-BSD. Others have pointed out the similarities with Apple / NeXT as well.
For simple applications, it makes sense to do this. However, imagine creating a package for something large like firefox, libreoffice or kde? WIth the mass number of dependencies... it's a nightmare. Do I really need hundreds of copies of a PNG library on my system? What about zlib? gtk+ ?
MidnightBSD: The BSD for Everyone
Arch's pacman is has some significant improvements over apt/dpkg, especially when it comes to creating new packages. And gentoo portage/emerge has lots of useful features that don't exist in dpkg/apt either.
Debian is solid and has an excellent package system. But it isn't the pinnacle of achievement. We can take package management further still, I am certain.
“Common sense is not so common.” — Voltaire
The bugger ain't dead yet!
on having good stable API's of core libraries that are backwards compatible up to an extent, rather than continuously fighting dependency hell when it comes to updating packages ?
This proposal seems basically like "we statically link every binary", and we all know that is not wanted because of disk usage and more importantly: memory usage. Especially in constrained embedded systems statically that could be a concern if you start having a lot of running applications.
Slashdot: stuff for news, nerds that matter, matter for news, stuff that nerd
From the email:
The proof of concept I wrote also isn't entirely new code. It's tiny due to using .deb as a container format (minus maintainer scripts, full dependencies, etc.), so I get to save effort by using dpkg to unpack things, which leaves us room to selectively use more of its features in future if we want to.
So they start off with what they think they need, then become more like APT as they need to add more features.
So the scope of what I've been considering is purely leaf apps built on a fixed "base system", which in the case of the initial target of the Ubuntu phone/tablet work would be the run-time part of the Ubuntu SDK.
In other words, this is something to be used in addition to APT (i.e. post-install), rather than instead of APT.
* no dependencies between apps; single implicit dependency on the base
system by way of a Click-Base-System field
Just like Debian has an implicit dependency on the base system (except for base packages, which have more complicated rules). In other words, this system will only accept a single dependency, the Click-Base-System. I'm not quite sure why this is different from only accepting applications that only depend on Click-Base-System.
And note that the "each package will install to its own directory" bit is on the to-do list:
Obvious items I still need to work on:
Ask me about repetitive DNA
puttting each program in its own directory is an absurdly bad idea. Then you would end up with a massive PATH variable and also does not follow the time honored Unix tradition which needs to be respected. For allowing multiple versions of the same program I would prefer to see some other solution, one possibility might involve putting symlinks in /usr/bin to program files into another directory where different versions of the program can be stored. the different versions of the program could be accessed in the seperate directory holding multiple versions and the symlink from /usr/bin would point to the default version.
The NHL is better then the 2 shit baseball teams in my home town.
This sounds like Microsoft's AppV. At least by my feeble understanding of AppV and what little I read in the summary. All dynamic libraries are packaged with the application and delivered as a unit. OS's and underlying hypervisors can use memory de-duplication to reduce the bloat that this might otherwise cause.
I am not well versed in the dpkg format, but RPM has Relocatable Packages, not many people use it, but if you want to do something like Ubuntu wants on an RPM based distribution without creating another format, You hack rpm commands so it can check a per user packages database using relocatable packages, no need of a new format
so every time I install something which is bundled with (say) java, I'll get java every time? How many copies of java with inconsistent and possibly incompatible behaviour does a person need?
example, say I have an app which comes bundled with "helper-program" version 1.0, which keeps its config files in ~/.helperprogram/config
and then I have another app which comes bundled with "helper-program" version 1.1 which keeps its config files in ~/.helperprogram/config
wtf??? am I missing something here?
So now they are going to reinvent, rename, and claim full credit for Android Package files (.apk), the same way they reinvented, repackaged, and claimed credit for Debian?
No, it's not just an executable. Go look in c:\windows\system32 and c:\windows\winsxs (and in c:\Program Files\Common Files) and you'll find more DLLs than you can shake a stick at.
For large sets, this will be our guide even unto death, for the LORD will work for each type of data it is applied to...
Hello Debian
Except Ubuntu users want cutting edge Debian, not tried and tested Debian...and unfortunately using Debian is not going to make it more cutting edge.
The majority of Ubuntu software comes from Debian. What are they thinking?
Yeah sure, but the *installer* is just an executable. That's what I'm talking about. All you need are APIs that tell you what dynamic libraries are installed, what versions they are, and what (if any) applications are currently using them. The installer doesn't need to be in a "packaging format", it's just executable code, that's what I'm talking about. APIs that tell you what the installer needs to know ought to have been settled a long, long time ago. Then you could make the installer anything you want. On Windows that's EXE, but there's nothing to stop it from being a batch file, Perl script, Pythoh, whatever, and it gets along fine with all the other installations as long as it makes the correct API calls.
IMHO, this is something Windows gets right. It's a fucking executable dammit. Yeah, it calls some APIs that are needed for installing. Installation library, sure; but "packaging system"??? Package format? Sooner or later you'd think that Linux people would just wake up and realize it's an executable.
You'd better go tell Microsoft about that, they've apparently been running headlong away from 'getting it right' since 1999... While it doesn't have the concept of 'repositories' in the same sense that Linux package managers generally do, the Windows Installer Service and the .msi, .msp, and .mst files that it works with are easily as or more complex as anything on the Linux side(and that's in addition to the distinct Windows Update mechanism, which interacts either with Microsoft, with a WSUS server, or with .msu files, exactly what circumstances require this rather than WIS are not 100% clear to me).
Yes, Windows doesn't forbid much simpler mechanisms like the nullsoft installer or 'just click foo.exe'; but neither does linux. Plenty of non-packaged software comes as an 'install.sh' or just an executable binary you copy somewhere.
So are you saying that Ubuntu should or should not follow in Puppy's footsteps?
“Common sense is not so common.” — Voltaire
Why break something that is fixed?
Absurd..
actually, it's something that Windows gets dead-wrong, because executable installer apps (setup.exe and the like) are just plain fucking stupid.
they're an unfortunate necessity because windows doesn't have, and never has had a decent package management system. and is unlikely to ever get one because the windows software market is primarily commercial and proprietary.
when you have 10 (or 100 or 500) packages to upgrade on a single system (and then multiply that by 100 or 1000 systems), executing hundreds of installer packages one after another is the worst possible way to do it.
i've never understood why Windows (or Apple) users tolerate that shit. it's a tedious chore that's ripe for automation - exactly the kind of thing that computers are good at doing and users are bad at doing (due to boredom, fatigue, loss of attention, ignorance, or stupidity)
which is precisely why linux distros (and other *nixes) don't do it that way. they have packaging systems because systems are consistent, predictable, and easily automated.
windows users and windows developers often have just the wrong way of looking at things, the wrong mental model of how things work and how they should work.
I ran across a program for Windows recently called Ninite. It's a multi-app installer and updater. it sounds like a good idea and is. it's a big improvement over the usual click-and-execute for each individual program.
except the way it works is weird and clumsy:
you go to their website and select which apps you want to install (from a bunch of internet-available apps, including free software and proprietary freeware like adobe flash), and then it builds you an installer app that you download and run, and it installs and/or upgrades the apps you selected off their website.
WTF?
nice starting idea, but the implementation is idiotic. Why not just have one Ninite app that fetches a list of available apps and installer URLs and whatever custom installer scripts ninite needs for them) and allow the user to select which apps whenever they run it?
i.e. instead of a moronic implementation, actually make a smart and useful implementation that copies good ideas from linux distro installers like apt-get and yum, and re-purposes them for the Windows environment.
(oh, and adobe are sending cease-and-desist letters and threatening to sue if the ninite developer doesn't remove the ability to install & update downloadable adobe products like flash, so his good ideas and good intentions are fucked by the corporate vermin mindset that dominates the windows software market)
another thing windows devs don't get is shared libraries (DLLs in windows terminology). Why does every single app have to install their own copy of the MS C++ libraries? or .net? or nvidia physx? and numerous other common library packages? these things are supposed to be shared resources provided and kept up-to-date by the operating system, not bundled with every app that uses them.
Except Ubuntu users want cutting edge Debian, not tried and tested Debian...and unfortunately using Debian is not going to make it more cutting edge.
You asked for it, Debian delivers. The Debian CUT Project aims to publish usable snapshots of Debian Testing on a monthly basis. They're pretty new but picking up steam.
http://i.imgur.com/BcS4XJm.png
...too few package formats.
Because we all know that the one thing Linux is missing is yet ANOTHER packaging system.
666 Ubuntu Sucks Dix.
curtain.
Windows just assumes that you have free run of the system. The installer runs amok and does whatever it likes with your system. This is hardly anything to emulate or brag about.
There is no API. There's just the single user DOS mentality.
A Pirate and a Puritan look the same on a balance sheet.
I've definitely not been a fan of their track record these past few years, but they do occasionally hit on some really good ideas (if somehow managing to screw up their implementations: Upstart was a good in principle, and so was making a verical launcher/taskbar instead of making our widescreens even shorter.) This is another one. Well, sort of. Maybe not 'no dependencies' but at least 'no dependency conflicts, ever.' It's two thousand thirteen, why are we still tolerating this shit? There's absolutely no reason why the package manager can't chroot/symlink the little fuckers and make them see what they need to see so they can coexist with any other package. If the package manager is informed enough to recognize a conflict, it's also smart enough to resolve it without the user doing anything beyond confirming the installation of the extra required dependencies, and yet for some reason none of the current crop of package mangers do this.
I'd rather have a bad solution from Ubuntu inspiring people to do it the right way (see: Mir lighting a fire under GNOME's ass to help out with Wayland) than have no solution at all.
another thing windows devs don't get is shared libraries (DLLs in windows terminology). Why does every single app have to install their own copy of the MS C++ libraries? or .net? or nvidia physx? and numerous other common library packages? these things are supposed to be shared resources provided and kept up-to-date by the operating system, not bundled with every app that uses them.
They are... sort of. Take the MSVC runtime. That's not maintained or installed necessarily by the OS for (some good, some mediocre) reasons which I'll explain in a second, but I'm 95% sure that it's shared between programs in the sense that when you see an program installer that spawns off the MSVC runtime installer, the latter will either be (1) installing a new version of the MSVC runtime or (2) discovering that it's already present and doing nothing. The runtime installs to a shared location. (Look at msvc*.dll in windows\system32.) So the runtime installer has to be bundled with individual programs for the upcoming reasons, but it's not wasting disk space by installing duplicate copies (subject to the caveat below) or wasting memory by loading the same thing from different hard drive locations at different time.
So why does it do this? Well, a couple reasons, I think. (I'm speculating here, but I consider them educated guesses.) First is the mediocre reason: there's no package manager. This leads to the "well, you have to ship the runtime installer with each program."
Second is the pretty-good reason: compatibility and correctness. You can definitely have multiple major versions (e.g. the runtime associated with VS2008 and 2010) installed simultaneously, and I think you might be able to have multiple patch versions of the same library installed simultaneously. I think the former is true in Linux too (libfoo.so.1.0.0 vs libfoo.so.2.0.0, though I thought those only show up for -devel packages... hmmm, not sure), but the latter isn't so much. It may well be that Program A installs version 1.0.0 and Program B installs version 1.0.1239, where on Linux the latter would likely be packaged to upgrade the former. (This is the caveat to my "no wasted space" claim above.)
Why is that good? Well, why did the library change? Bug fix? Well, MS usually will bend over backwards to maintain compatibility, which has often meant bug-for-bug compatibility with old programs, at least as a shim. If you take the Linux approach, then programs which rely on the old behavior of the buggy code will break. This is sometimes good (e.g. bad security-related fixes), but is often not. Or it doesn't have to be a bug fix, it could just be some behavior change within the specification. By keeping multiple versions around, the Windows approach keeps the individual programs happier.
How you weight these various advantages and disadvantages is up to you. I'm not really trying to argue that the Windows approach is better, just explain why it is as it is and give a fair description of what goes on.
Yeah sure, but the *installer* is just an executable. That's what I'm talking about. All you need are APIs that tell you what dynamic libraries are installed, what versions they are, and what (if any) applications are currently using them. The installer doesn't need to be in a "packaging format", it's just executable code, that's what I'm talking about. APIs that tell you what the installer needs to know ought to have been settled a long, long time ago. Then you could make the installer anything you want. On Windows that's EXE, but there's nothing to stop it from being a batch file, Perl script, Pythoh, whatever, and it gets along fine with all the other installations as long as it makes the correct API calls.
but they don't want root access to be necessary, to be able to install dll's system or even user wide. some mobile apps do away with this by installing everything as a different user, so that at least in theory installing one application can't fuck up another application - or even mess with it on purpose.
the reasoning is really that they wouldn't be able to audit or trust the packages which would be installed, at all. the easy way out is that everything provides everything it needs - minus the base system of course - this mindset is something that's also geared HEAVILY for commercial software which is what they're hoping for(commercial sw doesn't tend to work in the way that two different commercial ui programs would use the same shared library on a system unless the shared library happens to be system included.. companies just don't get along like that on purpose).
what the dpkg etc do is provide information about which dynamic libraries(dependencies) are there and what versions..
world was created 5 seconds before this post as it is.
*If* everyone picked exactly the same lib version, yes.
In practice, people aren't going to standardize on the same library version.
Bonus problem: Now each app provider is responsible for addressing a hypothetical libcrytpo vulnerability rather than the distro patching it in one place.
XML is like violence. If it doesn't solve the problem, use more.
i can't see why i'd want to install an app by a developer who wasn't competent to do something that's actually quite easy.
the only purpose for this is to cater to ignorance and incompetence.
Will this finally allow non-admin users to install packaged programs into their own user home folders? I hate how there's been no easy way for users to install packaged programs into their own home folders without privileges.
That every time you update appFoo that needs you to go to Java 1.6.0.49.1, appBar will break because it only works with 1.6.0.49.0.
"I may disagree with what you say, but I will defend unto the death your right to say it." -- Voltaire
Stop forking. No, seriously... stop.
So I won't have to write special scripts every time I install a new daemon app?
Seriously, I do not live in the Linux ecosystem, so it's a pain in the ass when I have to install anything on the few Linux boxes I have here in my house, looking up the obscure commands to figure out how to get everything running - and failing to get some daemons running, without so much as a single log line to tell me why it failed.
Sorry... just venting. Compared to Linux, Windows installations are light years ahead. That's just a simple fact.
I'm really happy to see Canonical taking the lead on this one. The main stream Linux distros have been putting off having a self-contained package bundle for far too long. PC-BSD has this technology, OS X has it, Android has it, Windows has it. Ever so often someone in the Linux world implements this sort of thing, but it never gains wide support because it's not backed by one of the big distros. Having Ubuntu move forward with a proper dependency-less package format and the tools to work with it will be wonderful. It looks like they are currently using dpkg as a backend for the new format which means it should be easy to port this new package manager to any other Debian-based distribution.
reinventing the wheel? Doesn't epkg do this already?
I've worked placed that used epkg across all UNIX platforms to re-package packages. It is a little old-school - these days something like ansible or rex or salt would be a better choice. Anything but the 1000x too complex puppet.
Remember Rox Desktop? http://en.wikipedia.org/wiki/ROX_Desktop Very similar to how mac os works. Lay down a base system with the common libraries in a central location. Apps are just custom folders with a very specific directory structure. It's not horrible, as an end user it's kind of nice. It will lead to security whack-a-mole issues when common but non-core libs have issues, but nothing's perfect.
each program came with its own video card drivers, it's own printer drivers, it's own windowing system, it's own mouse reading code, and sometimes it's own memory management code.
as Junta stated above, "In practice, people aren't going to standardize on the same library version."
how can you reference count libwhargharbl-0.2.4.1.2 when your app comes bundled with 0.2.4.1.3
Will they also forgo the shared libraries, and have everything statically linked? Sounds familiar? If they go this route, one downside to this is it takes up too much memory. Which is why apple switched from static libraries and started using shared libraries.
http://xkcd.com/927/
... constantly reinventing the same wheel over and over for no reason.
Instead of spending resources making the current wheels better, faster and stronger, there is a tendency of just wasting resources on reinventing it just because the old one is not cool to work on anymore.
So... catching up with Mac OSX? Sounds just like the .app "bundles" (really just zips as far as I can tell)
. Define sqrt(x) as something really evil like (x / rand()), and bury it deep. Watch your coworkers go nuts.
Manage source not versions of binaries and crutches to help you walk uphill. If compiling from source is not working for core features of the OS there is a bigger problem at hand. Canonical cannot squeeze blood from a stone in this regard- if they want their own package manager they need to put it in a paid-for enterprise version. Its amazing to me that after all these years open source has turned into a way for companies to claim that they are improving things by rebranding them. If you want developers to cater to you then pay them don't jury-rig their work and call it an OS.
Second is the pretty-good reason: compatibility and correctness. You can definitely have multiple major versions (e.g. the runtime associated with VS2008 and 2010) installed simultaneously, and I think you might be able to have multiple patch versions of the same library installed simultaneously. I think the former is true in Linux too (libfoo.so.1.0.0 vs libfoo.so.2.0.0,
Well, you're not likely to have multiple versions of the C runtime installed, because, in most if not all UN*Xes, the C runtime is part of the equivalent of kernel32.dll (libc.so, libSystem.dylib, or whatever it's called).
But, yes, you can have multiple "major" versions of libraries present. The SVR4 shared library mechanism, upon which the Linux and *BSD shared library mechanism are based, and the SunOS 4.x shared library mechanism upon which the SVR4 mechanism is based, gives libraries "major" version numbers, which change when the library ABI changes in a binary-incompatible fashion, and "minor" version numbers, which change when the library ABI changes in a way that preserves binary compatibility with older library versions but might add features (routines, flags to routines, etc.) that, if used, won't work with those older versions.
However, if your application uses libfoo version 2, but it's linked with a library that uses libfoo version 1, that's a problem. (Replace "a library" with "libpcap", and replace "libfoo" with "libnl", and you have one of the problems that makes me want to have libpcap on Linux talk directly to netlink sockets without the "help" of libnl, but I digress....)
but the latter isn't so much. It may well be that Program A installs version 1.0.0 and Program B installs version 1.0.1239, where on Linux the latter would likely be packaged to upgrade the former.
If libfoo is done correctly, any program linked with version 1.0.0 should Just Work with version 1.0.1239, and Program B should only upgrade to 1.0.1239 if there's a bug in 1.0.0 through 1.0.1238 that breaks Program B so it requires 1.0.1239 or later, and Program A should just require 1.x.x and not install 1.0.0 if 1.0.1239 is installed.
If you take the Linux approach, then programs which rely on the old behavior of the buggy code will break. This is sometimes good (e.g. bad security-related fixes), but is often not. Or it doesn't have to be a bug fix, it could just be some behavior change within the specification. By keeping multiple versions around, the Windows approach keeps the individual programs happier.
How you weight these various advantages and disadvantages is up to you. I'm not really trying to argue that the Windows approach is better, just explain why it is as it is and give a fair description of what goes on.
Yes, that's the question of the extent to which the real "specification" upon which clients depend on is the official specification or the full behavior of the implementation, and the extent to which you're willing to tell developers of code that doesn't fit the former specification but fits the latter specification to go pound sand if you "break" their code. Sometimes you end up not telling them to go pound sand, e.g. the "7090 compatibility mode" in the IBM 7094 (in which mode the index number field in instructions is interpreted not as an index register number but as a bitmask with bits corresponding to 3 of the index registers, with all the index registers specified by the bitmask being ORed together to generate the index) or the hacks in various OS X libraries in which the library detects that program XXX is using the library and falls back on the old buggy behavior (I think Raymond Chen's "The Old New Thing" has examples of similar hacks on Windows).
It can be a good idea if it is used as a complementary system, used ONLY for a few selected packages, like for example non free ones. Non free packages have the problem that sometimes they become a real pain to get working, when the libraries they depend on get outdated, and are not available in the repositories of the distro you are using. As Ubuntu continues moving away from the free software ecosystem, I think this is hardly a surprising move.
While all they actually need is just .zip files with .info file and .dpkg files, .dpkg being the application itself and all non-standard libraries. Dead simple stuff.
it's not that we don't understand how and why windows DLLs are fucked up, it's just that since we're used to a versioned shared library system that actually works, we see the windows DLL mess as being fundamentally broken.
you don't even seem to understand what's being discussed here - after the second sentence, you digress into an irrelevant rant about kernel versions.
and, BTW, since linux can run even ancient a.out format binaries from the 1990s on modern kernels, the problem you are describing is actually a problem of shoddy practices by proprietary software companies.
As an Average Joe who has been tortured by X.org issues and dependecy hell problems more than a few times, I can only welcome Canonical's decision to pursue Mir and this new package system. Sooner or later, there will be a schism between "linux for the Average Joes" (Android, and maybe Ubuntu) and "linux for hackers" (Debian, Arch etc). "and, BTW, since linux can run even ancient a.out format binaries from the 1990s on modern kernels" Unless they have a GUI, because you know, X.org...
So once again we see Liunx developers reinventing a perfectly good wheel instead of writing some quality software that might make people actually want to use Linux on the desktop.
Next week they'll rewrite the desktop (again), the GUI engine (again), the filesystems (again), the mail client (again) but still there will be NO DECENT APPLICATIONS.
No wonder desktop Linux will never take off.
"Windows just assumes that you have free run of the system. The installer runs amok and does whatever it likes with your system. This is hardly anything to emulate or brag about." It's mostly a disease of Windows developers, stuck to them since the DOS and pre-MSI ages. "I 'll just make a script or executable that copies this and this there and changes those settings". Blame DOS and early Windows for not having install APIs. Just wait 'till those developers transfer their mentality to Linux. I remember Flash requiring you to run some script to install it on Ubuntu.
apt-mark hold Ubuntu
I've got a better idea. Or rather, Pat Volkerding does. Never mind dependency checking, just let the user sort them out for himself. Slackware's package system is beautiful: a simple *.tgz or .txz file, with a note saying "and BTW, you'll need foo and bar as well". No need for separate directories full of statically linked packages, and it just works.
Of course, I have to admit that Debian packages work too, but if that nice Mr Shuttleworth thinks otherwise, then (sadly) there's another reason not to use Ubuntu.
While I can admire Shuttleworth's passion, he isn't doing anyone any favours by pursuing this "Not Invented Here" ideology. Everyone would benefit if he would just act like a part of the community, instead of trying to railroad it.
nice starting idea, but the implementation is idiotic. Why not just have one Ninite app that fetches a list of available apps and installer URLs and whatever custom installer scripts ninite needs for them) and allow the user to select which apps whenever they run it?
Well the idea is that if you need to deploy the same package on a bunch of different computers, you grab that one install package, and then run it anywhere, and it will apply a consistent set of installs/updates. The website is really just a way to generate the configuration. They could have had the same setup/configuration in a local application instead of the Ninite website, but I'm not sure that really helps you much.
Second, you can hold onto that installer and re-run it at any time, and it should update all of your existing installs. Third, they have "Ninite Pro" which lets you script out what to install better, and offers more management options.
Not that it isn't a little backwards. I think both Apple and Microsoft should create package managers that would let you simply add repositories, so that their "software update" and "windows update" would be able to fetch updates from other vendors without needing to be in some kind of walled garden.
Bodhi Linux has one click software installation binaries. Irony is that it is based on Ubuntu.
Here's the problem: the Linux ecosystem has a much more liberal interpretation of "Just Work" than MS does. MS's approach I think is quite a bit closer to "any change is a potentially-breaking change" which is why they keep around a lot of minor updates which on Linux would just replace the old file. It gets to this point:
I don't actually know why the situation seems to be a lot different on the two systems. Maybe Linux changes really do break software fairly frequently, and it's just rarely-used software that few care about and the Linux people are fully prepared to say "oh well, deal with it" in situations where MS would maintain compatibility. Maybe the fact that most Linux software has source available means that the problem is reduced a bit, because a recompile will sometimes fix the problem. Maybe the design of Unix better encourages people to write software which depends only on the documented specification instead of implementation details. I really have no clue.
Excuse me, but "Bill Gates = cured Polio [sic]"
No mention of Salk or Sabin? (I remember getting the Salk vaccine in grade school back late Fifties, can't right now recall the exact year, what grade I was in, or where, but it was a 'Big Deal'. Friend of mine from first and second grade got polio halfway through second, developed worst form, later died from something else while living in an iron lung.)
Anyway, tell me, just how did Bill cure polio? (I'll give you a clue: there is no cure, only vaccines used for immunization.)
Now, I don't get out much, but this is the first time I've seen an OS castigated by an ad hominem attack. Congrats.
this is essentially what (http://nixos.org/) or (http://www.gobolinux.org/) do, though the former has much grander goals.
So, will each and every package load *all* their shared libraries, or will the packaging system look to see what libraries are on the system, rather than read the d/b for package names?
mark
Why is it SO hard for people who use linux to understand that there are multiple runtime libraries because windows has been around so long there are multiple versions of the shell environment. To ensure that the program runs correctly on the target machine the runtime is included. This in turn relates to the kernel which linux does not handle gracefully at all. I don't know how many times I've wanted to install an app on linux but it is dependent on features from a specific kernel. Windows does this to some degree but by shippping a runtime its possible to translate the instructions of the application in question to an older or newer kernel.
"Dependent on features from a specific kernel" as in "doesn't work with 2.6.22, works with 2.6.23, doesn't work with 2.6.24", or "dependent on features from a specific kernel" as in "doesn't work with 2.6.22, works with 2.6.23 and later"?
The former either means they introduced a feature in 2.6.23 and yanked it in 2.6.24 or that it's dependent on implementation details from a specific kernel. The first of those might be done less in Windows, but that's a question of whether the OS's developers treat "preserving compatibility" as being more important than "not leaving cruft around". The second of those can show up in applications for any OS if the developer isn't careful.
The latter means "gee, they introduced a new feature in 2.6.23, which my program uses"; that happens in Windows, too - try unconditionally using an API or an API feature introduced in Windows Vista and then see whether your program runs on XP. One trick to handle that, at least in the case of a routine being introduced in a newer version of Windows, is to do a LoadLibrary() on the library containing the API and GetProcAddress() to try to get the address of that routine; if it fails, disable the feature requiring that routine or work around its absence in the code. That same trick can be done on UN*Xes, including Linux; replace LoadLibrary() with dlopen() and GetProcAddress() with dlsym().
"Windows does this to some degree but by shippping a runtime its possible to translate the instructions of the application in question to an older or newer kernel." sounds more like changing the system call interface to the kernel and changing the routines that use it to match. That's not restricted to Windows; one goal of the SVR4 shared library mechanism (which is what Linux's shared library mechanism is based on) was to allow that to be done transparently to compiled applications, by having applications dynamically linked with system libraries, so that an application binary gets the appropriate version of the library for the kernel version. OS X's shared library mechanism works the same, and Apple doesn't even support statically linking with its libraries.
Your knowledge of Windows installation technology is way out of date. WFP was introduced in Windows 2000, FFS, and current versions have stronger protections for system libraries, files, and even registry settings. MSI and MSP installation databases are the most common approach now, though sometimes there is an EXE wrapper around the actual MSI or MSP. Installers cannot simply stomp all over everything anymore.
- T
that's easily done with a configuration file that lists the "packages" to install. Copy the main Ninite app and the config file to all machines.
to me, this is the natural and obvious way of doing it. i've been doing it this way for years - e.g. get dpkg to give me a list of installed packages on one machine, copy the list to another machine and import it.
and, being a simple text file, the list is easily generated and/or modified with standard text-processing tools like a text editor, or sed or
this is, IMO, the biggest blindness of Windows users and devs - they don't see data as something malleable and re-usable. The windows model is based around particular apps that "own" data. the *nix model is around data that can be manipulated by multiple apps or tools. The former works well for vendors, who want lock-in. The latter works better for users, who need to own their own data.
This is why Windows software vendors like Adobe are moving towards software rental, rather than software purchase. Once you have significant amounts of data locked into their proprietary software, you have no choice but to keep on paying your rent/subscription-fee if you want to keep accessing your data. It's why MS changes their data formats with every new release - to break compatibility with alternative software (forcing upgrades is only a secondary benefit), and it's why Microsoft has done everything they can to sabotage open formats like ODF with pseudo-open formats like OOXML & DOCX
again, config file.
I guess I underestimated the effect of the windows mindset - i should have mentioned it explicitly. I didn't because i assumed it was obvious that an installer app should keep a record of what programs (and versions) are installed.
when you run it again, you have the option of just updating what's already installed, or you can examine and change the list of software-to-be-installed.
the linux (and unix) attitude is that depending on undocumented behaviour is brain-damaged. if you do it and it bites you on the arse sometime in the future, then you've learnt a valuable lesson on why you shouldn't do that. fix it, recompile, and don't do it again.
this can cause a small amount of short-term pain (not as much as a windows user might expect because very few linux/unix developers don't understand this lesson) but it results in better quality software and less legacy bugs being kept alive for a decade or more.
"I ran across a program for Windows recently called Ninite. It's a multi-app installer and updater. it sounds like a good idea and is. it's a big improvement over the usual click-and-execute for each individual program."
It's [Ninite] also closed source!
Chocolatey NuGet claims to be "a Machine Package Manager, somewhat like apt-get, but built with Windows in mind"
It's here: http://chocolatey.org/
Tried it I have not.
that's easily done with a configuration file that lists the "packages" to install... I guess I underestimated the effect of the windows mindset
No, you misunderstand the nature of the problem that is being solved. You're a managing windows and want to push out a standard set of packages to environments where you don't necessarily have complete control. Given the option of telling a user to download and install a package manager and write an appropriate config file vs. download an .EXE and run it, I'd choose the latter.
Now obviously I would prefer a package manager with a standard packaging format, but you can't blame Ninite for servicing a need. For the environment that they're operating in, they provide something meaningfully close to the functionality of a package manager for a series of disparate apps that aren't packaged in standard ways. I don't think the "pro" version will accept a config file per se, but there are various options in the command line, so you can still script it and have it select which applications you want to install/update.
It's not perfect, but trying to get Adobe to adhere to the same package standard as Oracle is a fool's errand.
Oh... I am going to miss the good old days of portable software which I just had to extract and run
I just tried out the "Linux Desktop's" premiere SIPphone app, Ekiga. It wants you to sign up for their ekiga.net service, but per their instructions I skipped that step to use my existing SIP service. Now there is no way to add a non-Ekiga service... none! zip! The Accounts dialog shows an empty list and every single button is greyed-out.
Oh yeah, on initial startup, it asked me to choose from a list of 6 audio devices 3 times (for audo ringing, input and output). When I type a number into it, the thing opens up a call status window that says "Call completed" instead of "please setup a SIP service first". Lovely.
The alternative that the Ubuntu repo lists is LinPhone, which got 2.5 stars to Ekiga's 3. It looks like an app from 1992 and not sure I want to try it.
As for Firefox, the Linux version is in rough shape. The way it handles UI element focus is wacked-out (sorry, it is not just "different" than OS X and Windows). I don't appreciate having links clicked-on when I click on a window in the tiled window manager listing. I don't like having it 'remember' HALF of the windows in my session. I don't like file dialogs that are blank window frames if an IFRAME containing a video happens to be showing at the moment.
The "Linux Desktop" ecosystem is broken and never worked. It insists on stamping the server-room mindset onto the desktop. So what you get is a situation where even server admins prefer Windows and OS X for their desktop tasks. In a nutshell this is why "Linux Desktop" failed and Android succeeded.
Users don't need to worry about which DE a program uses, programs which use another DE's toolkit work seamlessly
I'm aware of Project Portland and its successors and whatnot. Yes the apps seem to work, except when they don't, and in doing so they negate the resource advantage you clamined.
Ubuntu has just passed a very important milestone: The Jumping of the Shark.
*cough* John Mcafee
as on today with existing mechanisms, this can be somewhat achieved by putting all dependencies in a folder and putting a appropriate LD_LIBRARY_PATH . Isn't it?
You are right ,bro .
I am sure they will just put a fancy wrapper GUI/commandline to dump and remove the package directory ; but in back they will use the same LD_LIBRARY_PATH, as you mentioned.