Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!


Forgot your password?
DEAL: For $25 - Add A Second Phone Number To Your Smartphone for life! Use promo code SLASHDOT25. Also, Slashdot's Facebook page has a chat bot now. Message it for stories and more. Check out the new SourceForge HTML5 internet speed test! ×

Comment Re:Worth a try? (Score 1) 61

I have an idea the .deb package recommends "packagekit". If that conflicts with "python3-aptdaemon.pkcompat", I guess your package manager might offer to remove it. You could try using --no-install-recommends.

If you try to install a program that needs a library that is only available through your distribution, then 0install will offer to install it using PackageKit, if PackageKit is available.

Comment Re:Great Ideas Fail All The Time (Score 1) 61

In order for it to work, the software developer has to not only publish their software on the Zero Install system, they have to publish their software for ALL the distros on it. But, we all know well that most software developers regard this as far too cumbersome an undertaking and will instead publish only a single or couple of binaries.

Of course, that's not an issue for programs written in Python, Ruby, Java, etc.

For C, you can also publish a source version and let the users compile (with 0install handling the build dependencies). Also, if someone wants to set up a build farm for a particular platform, they can use these source packages to create binaries automatically (e.g. for PPC binaries).

Producing separate binaries for different distributions (e.g. Ubuntu and Fedora) isn't necessary; one binary should work everywhere. The exception would be if the distributions compiled the libraries with incompatible options, but that doesn't tend to happen these days. If it does, specify the dependency as distribuion="0install" to force the use of a 0install version rather than the distribution package.

Comment Re:What a name (Score 1) 61

To get the hashes of the latest compatible versions, you could use 0install. e.g. to find the hashes for the dependencies of the SAM program:

$ 0install select http://www.serscis.eu/0install/serscis-access-modeller
- URI: http://www.serscis.eu/0install/serscis-access-modeller
  Version: 0.16-post
  Path: /home/tal/work/serscis-access-modeller/serscis-access-modeller-any-any

  - URI: http://repo.roscidus.com/java/iris
    Version: 0.6.0
    Path: /var/cache/0install.net/implementations/sha1new=daf7bfada93ec758baeef1c714f3239ce0a5a462

  - URI: http://repo.roscidus.com/java/swt
    Version: 3.6.1
    Path: /var/cache/0install.net/implementations/sha1new=bb9479c20f7684b9423be7d76194929e9b6fb690

  - URI: http://repo.roscidus.com/utils/graphviz
    Version: 2.30.1-1
    Path: (package:arch:graphviz:2.30.1-1:x86_64)

  - URI: http://repo.roscidus.com/java/openjdk-jre
    Version: 7.13-2.3.7-2
    Path: (package:arch:jre7-openjdk:7.13-2.3.7-2:x86_64)

(so, on my system, graphviz and the JRE are provided by the system, while IRIS and SWT give the required hashes)

Submission + - 0install reaches 2.0

tal197 writes: Zero Install, the decentralized cross-platform software installation system, announced 0install 2.0 today after 2 years in development. 0install allows authors to publish directly from their own web-sites, while supporting familiar features such as shared libraries, automatic updates, dependency handling and digital signatures. With more than one thousand packages now available, is this finally a viable platform?

Comment Re:Python 3 and its use (Score 1) 131

True, but if you use 0install then you can specify the version you want in the metadata, e.g.

    <command name='run' path='myprog.py'>
      <runner interface='http://repo.roscidus.com/python/python'>
        <version not-before='2.6' before='3'/>

will select Python 2.6 or 2.7 on Debian, Ubuntu, Fedora, OpenSUSE, Arch, Windows, MacOS X, ... etc.

(example taken from the docs at http://0install.net/local-feeds.html)

Comment Re:What is wrong with OpenID? (Score 1) 105

- It's designed for browser support, which is necessary to prevent phishing attacks and improve ease of use. It's hard for your browser to log in to OpenID sites (e.g. the Firefox OpenID plugin(s) fail on several sites which use fancy login UIs).

Auto-login is always problematic in security terms, even if it is exceptionally convenient.

I don't think anyone is suggesting auto-login (the browser logs the user in without action from the user). The issue is whether the browser can provide a login button in the chrome which, when clicked, allows the browser to handle the rest of the process securely (e.g. not displaying any random phishing site that the web-page tries to send you to). If you need to authenticate, the browser needs to ask for the password in a way that clearly shows it's OK to enter it (e.g. in a clearly-marked popup).

Comment Re:What is wrong with OpenID? (Score 1) 105

I think the main differences are that it uses email addresses instead of an URL (which people don't "get" as being your identity token)

Once it's ready (supporting primary IdP's), the ID doesn't need to be an email address (just an ID with an email-like structure).

and it doesn't give the authorities full power to access your accounts (since the private key for authentication is stored on the browser).

I don't think so. That key is only accepted because it's signed by your IdP, which can just as easily sign another one if the authorities request it. The main advantages I see are:

- Verifying a login doesn't tell you're IdP who signed in to the site. The site only requests the IdP certificate, not your personal one.

- It's designed for browser support, which is necessary to prevent phishing attacks and improve ease of use. It's hard for your browser to log in to OpenID sites (e.g. the Firefox OpenID plugin(s) fail on several sites which use fancy login UIs).

- Putting more of the logic in the browser simplifies the protocol (although they seem to be adding extra complexities quite fast).

Comment Convergence vs DNSSEC? (Score 1) 189

I watched the video, but I still don't understand how convergence is better than putting the certificates in DNS with DNSSEC. He says that DNS registrars are not reliable enough, but from the video it looks like convergence ultimately relies on them anyway. e.g.

If I control the DNS entry for paypal.com then I just change its IP address to point at my server. People using convergence will find my server in DNS, get its (self-signed) certificate and send it to the notaries. The notaries will see that it is different from their cached copy, which will trigger them to check for updates. They'll all go to the (compromised) DNS system, get the new IP address, get the fake certificate and return "OK" to the user. What am I missing?

Comment Re:Not sure what the user benefits are (Score 1) 82

You raise an excellent set of points. So how does 0install fix this?

Firstly, you don't need to find packagers for each distribution. You create one XML file, which allows everyone to run the program.

When the new GCC comes out and breaks your program, you just change the version restriction in your XML:

<requires interface='.../gcc'>
  <version before='4.6'/>

Likewise with the new libpng, and bdb. Other programs will start using the newer versions, but your program will stay with the version that works. You can then work on fixing the bugs and getting a new release out in your own time, without having to rush.

For example, I distribute a lot of Python programs using 0install. They all started "#!/usr/bin/env python". When ArchLinux decided that "python" would now be Python 3, they all broke. But by adding a few lines to my 0install feed, I got them working again:

  <runner interface='http://repo.roscidus.com/python/python'>
    <version before='3'/>

Comment Re:Not sure what the user benefits are (Score 1) 82

... And if one wants, it can even rely on LSB I believe, eliminating a lot of the need to include copies of base libraries, and a decent starting point (though I can't tell if 0Install allows that, I think ROX application directories do, and this looks like a way to replace them though.

I'm not quite sure what you're asking here, but to be clear:

0install always shares libraries and other dependencies. For example, if your program depends on Java then 0install will use the distribution's version of Java (if installed), or 0install may download a 0install package of Java, or it may get Java from your distribution (using PackageKit). A 0install package should never need to bundle libraries.

On a multi-user system you can enable system-wide sharing. This is off by default because it requires adding a new sudo rule, and adding one automatically would be rude (the admin should be in charge of the sudoers file).

Comment Re:Give me Debian package management any day (Score 1) 82

In the case of 0install, the command name (if any) is chosen by the user, not the package. So you might do something like this for shell use:

$ 0alias convert-img http://image-editor.org/convert
$ 0alias convert-text http://text-converter.com/convert

If a package depended on one of these, it would express that in its dependencies. e.g.

Make example.com/convert >= 1.3 available to me as 'convert'

0install would ensure that example.com's convert command was in $PATH, but just for the program that needed it.

It's similar with libraries. A library's files are only in scope for programs that depend on that library.

Comment Re:Do not trust. (Score 1) 82

0install does not touch any files outside of ~/.config/0install.net/ and ~/.cache/0install.net/ by default, and it won't let packages change things at install time either. This is necessary so that it can be used with sandboxes.

The only exceptions are that it will make a configuration change that you request explicitly. For example, if you ask it to add Firefox 4 to your Network menu then it will do that, or if you ask it to add a "firefox4" shell command to run it then it will create a "firefox4" script in your $PATH.

You might be interested in the EBox sandboxing demo (the challenge is to create a package that accesses a user's files without the user's permission).

Comment Re:Give me Debian package management any day (Score 1) 82

RISC OS application directories and Apple bundles have the nice property that you can install from anywhere, can have multiple versions and there are no conflicts between packages (e.g. both installing a "/usr/bin/convert"). But shared libraries are a pain because you have to install them manually, and upgrading a library needed to install program B can make program A stop working.

Debian packages have the nice property that you get dependency handling and automatic updates, and shared libraries work better. The system automatically installs a library version that works with A and B, if possible, or refuses to install B if there is no such version.

0install combines the best of both systems: you can get software from anywhere, have multiple versions at once and there are no conflicts. But you also get dependency handling, updates and shared libraries. It automatically installs a library version that works with A and B, if possible, or installs two different versions of the library in parallel if not.

Slashdot Top Deals

"Luke, I'm yer father, eh. Come over to the dark side, you hoser." -- Dave Thomas, "Strange Brew"