Open fusion809 opened 8 years ago
I just wrote my own AppImage Recipe for Eclipse ftw, my first AppImage. Feel free to incorporate it into this repo.
Yay, you got a response on the Eclipse bugtracker. Since I am not registered there, please leave a note there pointing them here; I am happy to help with any questions they might have.
I have already created AppImages for a number of substantial Java-based apps, including
and others.
Done. What about NetBeans? It's fairly popular and supports several programming languages.
Haven't looked at it so far. Want to give it a try yourself?
Seems like a real challenge. See NetBeans on Linux is distributed as a shell script (that is over 100 MB in size, so there must be some binary components to it) and I don't know how to turn that into an AppImage. There are some zip archives provided but from what I can tell they're just for nightly developmental releases.
Nvm I've found some zip releases for the latest stable release (8.1) https://netbeans.org/downloads/zip.html. I'll see what I can do with 'em.
Success! I have made a NetBeans AppImage Recipe and built an AppImage from it. It's over 330 MB in size, so I can't upload it to Bintray (I get the error message Request Entity Too Large%
when I try to).
Can you slim it down, e.g., by removing documentation and/or examples?
Yep, good idea, I'll see what I can do.
I've cut it down to 288.875 MB, I could cut it down further by deleting locales, but that'll minimize its potential to be used by non-English speakers. Do you know if 288.875 MB is small enough for Bintray?
Nvm, I found out for myself, 250 MB is the size limit https://bintray.com/docs/usermanual/uploads/uploads_manuallyuploadingfilestoaversion.html.
OK, removing locales gets it down to 264 MB... Still too big. I've committed my latest edits to my Recipe in this effort to cut down its size, this is what I'm using atm to cut down its size (L38-L44):
find usr \
-name "docs" -exec rm -rf '{}' \; \
-or -name "*.exe" -exec rm '{}' \; \
-or -name "*.pdf" -exec rm '{}' \; \
-or -name "*.png" -exec rm '{}' \; \
-or -name "locale" -exec rm -rf '{}' \; \
-or -name "*.zip" -exec rm '{}' +
If you have any further suggestions I will be happy to hear them.
Loop-mount the AppImage and run baobab on the mountpoint to see what consumes space...
Now whenever I try to launch NetBeans with this AppImage I get the error message:
Warning - could not install some modules: org.apache.commons.lang - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/org-apache-commons-lang.jar: Not found bundle:org.apache.commons.lang org.apache.ws.commons.util - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/org-apache-ws-commons-util.jar: Not found bundle:org.apache.ws.commons.util org.apache.commons.io - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/org-apache-commons-io.jar: Not found bundle:org.apache.commons.io org.apache.commons.codec - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/org-apache-commons-codec.jar: Not found bundle:org.apache.commons.codec org.apache.commons.logging - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/org-apache-commons-logging.jar: Not found bundle:org.apache.commons.logging org.apache.commons.httpclient - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/org-apache-commons-httpclient.jar: Not found bundle:org.apache.commons.httpclient org.apache.xmlrpc - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/org-apache-xmlrpc.jar: Not found bundle:org.apache.xmlrpc com.jcraft.jzlib - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/com-jcraft-jzlib.jar: Not found bundle:com.jcraft.jzlib com.googlecode.javaewah.JavaEWAH - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/com-googlecode-javaewah-JavaEWAH.jar: Not found bundle:com.googlecode.javaewah.JavaEWAH org.eclipse.equinox.common - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/org-eclipse-equinox-common.jar: Not found bundle:org.eclipse.equinox.common org.eclipse.core.runtime.compatibility.auth - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/org-eclipse-core-runtime-compatibility-auth.jar: Not found bundle:org.eclipse.core.runtime.compatibility.auth org.eclipse.core.jobs - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/org-eclipse-core-jobs.jar: Not found bundle:org.eclipse.core.jobs org.eclipse.equinox.registry - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/org-eclipse-equinox-registry.jar: Not found bundle:org.eclipse.equinox.registry org.eclipse.equinox.preferences - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/org-eclipse-equinox-preferences.jar: Not found bundle:org.eclipse.equinox.preferences org.eclipse.core.contenttype - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/org-eclipse-core-contenttype.jar: Not found bundle:org.eclipse.core.contenttype org.eclipse.equinox.app - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/org-eclipse-equinox-app.jar: Not found bundle:org.eclipse.equinox.app com.jcraft.jsch - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/com-jcraft-jsch.jar: Not found bundle:com.jcraft.jsch org.eclipse.jgit - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/org-eclipse-jgit.jar: Not found bundle:org.eclipse.jgit org.eclipse.core.runtime - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/org-eclipse-core-runtime.jar: Not found bundle:org.eclipse.core.runtime org.eclipse.mylyn.wikitext.core - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/org-eclipse-mylyn-wikitext-core.jar: Not found bundle:org.eclipse.mylyn.wikitext.core org.eclipse.equinox.security - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/org-eclipse-equinox-security.jar: Not found bundle:org.eclipse.equinox.security org.eclipse.core.net - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/org-eclipse-core-net.jar: Not found bundle:org.eclipse.core.net org.eclipse.mylyn.commons.core - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/org-eclipse-mylyn-commons-core.jar: Not found bundle:org.eclipse.mylyn.commons.core org.eclipse.mylyn.commons.net - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/org-eclipse-mylyn-commons-net.jar: Not found bundle:org.eclipse.mylyn.commons.net org.eclipse.mylyn.commons.xmlrpc - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/org-eclipse-mylyn-commons-xmlrpc.jar: Not found bundle:org.eclipse.mylyn.commons.xmlrpc org.eclipse.mylyn.commons.repositories.core - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/org-eclipse-mylyn-commons-repositories-core.jar: Not found bundle:org.eclipse.mylyn.commons.repositories.core org.eclipse.mylyn.tasks.core - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/org-eclipse-mylyn-tasks-core.jar: Not found bundle:org.eclipse.mylyn.tasks.core org.eclipse.mylyn.bugzilla.core - org.netbeans.InvalidException: Netigso: /tmp/.mount_tCL0ki/usr/ide/modules/org-eclipse-mylyn-bugzilla-core.jar: Not found bundle:org.eclipse.mylyn.bugzilla.core
I have tried changing my Recipe back to the way it was before I started to delete unessential items, in case I deleted something I needed, but I still get the same error message upon launching the updated AppImage... Any ideas? Originally when I started creating NetBeans AppImages I didn't get this error message.
I have even tried switching to a different OS (namely I was using Arch Linux and I switched to Ubuntu), yet the error is still there.
Eclipse AppImage is not working for me, kinda defeats the point; when run, it just says:
A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be available in order to run Eclipse-cpp. No Java virtual machine was found after searching the following locations: /tmp/.mount_1eFSCT/usr/bin/jre/bin/java. java in your current PATH
Please bundle a JRE like my examples do. An AppImage is supposed to be a standalone bundle.
How do ya bundle a JRE? I looked at your IDEA recipe and I can't see where a JRE is bundled in? https://github.com/probonopd/AppImages/blob/master/recipes/idea/Recipe. Is it in the ideaIC tarball?
Nvm I saw ya pycharm Recipe.
The problem now is that my Eclipse AppImage is too large to upload to Bintray. Although as a work-around I've uploaded it to my AppImages GitHub repo https://github.com/fusion809/AppImages/releases/tag/Eclipse-4.6.0-1.
Please see my annotations in https://github.com/probonopd/AppImages/blob/master/recipes/eclipse/Recipe
Thanks, they were helpful. Although, hardcoding links is something that is kinda tricky, if I understand what you mean by 'hardcoding' in the first-place. If by hard-coding you mean how I use a link that doesn't auto-adjust when $VERSION
is adjusted (as the neon
in the URL refers to the 4.6.0 release), then well that's gonna be a challenge as code-names are used in the URL and I can hardly change the upstream URL of the tarball to change the codename for the version number. If you mean the fact I used a specific mirror, instead of a more general link well I'm not sure how to create a less mirror-specific link.
What I mean is that the version should not be in the entire script. The script should get the latest version from the official release download pages. See my other examples on how to do this.
Also, JRE is not on the $PATH...
Yep I saw that comment in the Recipe, although not sure how to fix that. All I can think of is to move the jre binary contents to usr/bin.
I think there's something wrong with your functions.sh file too — I keep getting the error message:
rm: cannot remove '../out/eclipse-cpp-4.6.0-x86_64.AppImage': No such file or directory
['/tmp/.mount_K8NaM1/package', './eclipse-cpp.AppDir/', '../out/eclipse-cpp-4.6.0-.AppImage']
Icon could not be found based on information in desktop file, aborting
whenever I run this new Recipe.
"Icon could not be found based on information in desktop file, aborting" means that your icon does not match the information in the desktop file. It is explained in https://github.com/AppImage/AppImageSpec/blob/master/draft.md#contents-of-the-image
Assuming the name of your app is "eclipse", then you should have Icon=eclipse
in eclipse.desktop
and eclipse.png
in the root directory of the AppDir. Note that Icon=eclipse
has no suffix.
@probonopd You seem like a magician when it comes to determining the latest version of a software from within a shell script, so I gotta ask can you come up with one for Eclipse? I have posted a question to this effect at the Eclipse forums, although I can't share it as it is still awaiting moderator approval.
Not sure, but maybe this web page https://www.eclipse.org/downloads/ is key to producing a shell command to determine this.
Oh hallelujah I managed it myself:
VERSION=$(wget -q https://www.eclipse.org/downloads/ -O - | grep "64" | head -n 1 | cut -d '"' -f 4 | cut -d '/' -f 8)
works, although it just gives me the code name 'neon' but that's enough to provide an auto-updating download link.
I'm getting an error:
**
Gtk:ERROR:/build/gtk+3.0-VoKwSM/gtk+3.0-3.20.9/./gtk/gtkiconhelper.c:493:ensure_surface_for_gicon: assertion failed: (destination)
it launches but then crashes giving this error. With the yaml:
app: eclipse-cpp
ingredients:
script:
- VERSION="$(wget -q https://www.eclipse.org/downloads/ -O - | grep "64" | head -n 1 | cut -d '"' -f 4 | cut -d '/' -f 8)"
- echo $VERSION > VERSION
- URL="http://mirror.internode.on.net/pub/eclipse/technology/epp/downloads/release/$VERSION/R/eclipse-cpp-$VERSION-R-linux-gtk-x86_64.tar.gz"
- wget -c "$URL" --trust-server-names
- tar zxvf eclipse*.gz
- wget -c --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u66-b17/jre-8u66-linux-x64.tar.gz
script:
- cp -r ../eclipse/* usr/bin/
- mkdir -p usr/lib/jvm/
- tar xf ../jre*.gz -C usr/lib/jvm/
- mkdir -p bin
- ( cd ./bin; ln -sf ../usr/lib/jvm/jre*/bin/java . )
- cp ../../eclipse.png .
- cat > eclipse-cpp.desktop <<EOF
- [Desktop Entry]
- Version=1.0
- Type=Application
- Name=Eclipse C++ IDE
- Icon=eclipse
- Exec=eclipse
- Categories=Development;IDE;C;C++
- Terminal=false
- EOF
And this doesn't happen if you use the same downloaded ingredients without AppImage?
On my Ubuntu 16.04 system on which I built the AppImage (which also has Eclipse installed so I'm not sure if you can trust this result) running usr/bin/eclipse.wrapper
from the AppDir causes it to launch without difficulty, if that's what you're asking?
Oh wait a minute, in my 16.10 VM (without Eclipse or Java installed) it actually launches OK as standard user (non-root user). Just was as root it failed.
yml file above errors for me with
+ mkdir -p usr/lib/jvm/
+ tar xf ../jre-8u66-linux-x64.tar.gz -C usr/lib/jvm/
+ mkdir -p bin
+ cd ./bin
+ ln -sf ../usr/lib/jvm/jre1.8.0_66/bin/java .
+ cp ../../eclipse.png .
cp: cannot stat '../../eclipse.png': No such file or directory
Doesn't for me as my repo has an eclipse.png in the same directory as my yaml.
Why not make the recipe download that from an upstream location?
Minimizing possible future dead links. The image files aren't that big so doesn't add that much size to my repo.
Hi,
I thought you's ought to know that I just filed a feature request at Eclipse's Bugzilla requesting that they provide AppImage builds for Eclipse: https://bugs.eclipse.org/bugs/show_bug.cgi?id=500802. To-be-honest I'm surprised that this repo provides IDEA Community Edition (IDEA-CE) as an AppImage but not Eclipse as Eclipse is more general-purpose with support for more programming languages than IDEA-CE (which only supports Java).
Thanks for your time, Brenton