Lately JDownloader 0.7 has been released. Its integrated update system notified me about it and told me that it would make more sense to go to jdownloader.org and download it from there. I thought about it and came up with: hey, that’s not how unix software should behave!
And where does an archlinux user look for software, which is not in the main repos? Right, in the User Repository. I didn’t really expect it, because I checked a month or so ago, but there actually was a jdownloader package this time. Its only problem was that it was not too well written, just downloaded the jd.sh and executed it. This caused a download-gui to show up while doing makepkg (!) and to download everything to /home/currentuser/.jd (!). This is bad practice, because it does not work at all on multi-user systems and can not be packaged without X. But it got me thinking about what the best way to package JD would be.
So I talked to Ravage and jiaz in #jdownloader on freenode, who told me that this software just can not be packaged. We heavily discussed it and I came up with some methods how it might work, which mainly were:
- JDownloader as one compiled package
- JDownloader as package, plugins as packages
- JDownloader as package, each plugin in its own package
But it turned out that nothing would be acceptable. Because JD gets constantly updated – approximately one plugin per day – , the first and second method would have much overhead. Also with about 300 plugins, it does not make sense to put each one in its own package.
In the end, Jedipottsy, VuDu and I worked out a single package for the aur, though. It was based on Jedipottsy’s first approach, to download jd.sh, but the main difference was that this time it would be saved as /usr/bin/jdownloader in the package. Why? Because then every user who starts it, gets his very own JD installation. That way JD’s own updater still controls everything, but it works for multiple users and these can not do damage to other JD installation (which they could do in case JD would be somewhat shared and updated by each user).
One might think now: Whats the big deal about it? How is that useful? Doesn’t that even make it more complicated?
With such a package, you are not required to
- launch Firefox,
- find out the JDownloader homepage,
- find jd.sh,
- download it,
- read it,
- find the proper package names for the dependencies,
- install them,
- finally execute jd.sh,
- make a shortcut yourself afterwards and/or create a script in your $PATH that executes either jd.sh or java -jar JDownloader.jar and
- start JDownloader
Instead the system root installs the package once with
yaourt -S jdownloader
and then all users can set-up and start JD simply by typing
jdownloader
in a terminal or by clicking the menu shortcut (which is even easier). This makes it two steps instead of ten! Just imagine if you would have to download every Linux program with Firefox… it would take ages compared to using a package manager.

Menu shortcut, generated by the PKGBUILD