AppImage

From FreeCAD Documentation
Revision as of 14:52, 16 May 2019 by Kunda1 (talk | contribs) (Marked this version for translation)

What is an AppImage

Package once and run everywhere. Reach users on all major Linux desktop distributions.

AppImage is a format similar to a binary that allow to quickly distribute an application to almost any Linux distro. Read more about it on the Appimage homepage and Wikipedia.

FreeCAD AppImages

Stable version

Current stable version is FreeCAD_0.20.2.29603

Development version

Current Development1,2 version is FreeCAD_28810

Note1: Development happens daily and rapidly, the link for the most up-to-date AppImage is a moving target.
Note2: The development link above should be up-to-date because it is updated via script.

Some methods to follow new developments:

Note: At the time of this wiki edit there are 2 appimages being generated, one is a python3/Qt5 build and the other is a python2/Qt4 build. We recommend at this time to use the former and help the team weed out any py3/Qt5 bugs before the upcoming release of 0.18

Auto Updating

AppImage has a very smart and economical way of updating. It calculates the delta between the new appimage and the older one and will only download the changes between their versions. So essentially, the user theoretically ends up downloading ~10%-15% instead of a new appimage each time. This is done via AppImageUpdate application. There are two methodologies to update through, the 1) graphical interface (GUI) dialog box and 2) the command line (CLI) via a text terminal.

GUI

  1. Download https://github.com/AppImage/AppImageUpdate/releases/download/continuous/AppImageUpdate-x86_64.AppImage
  2. Make it executable by right clicking on the file, going in to properties and 'Run as an executable'
  3. Click on the AppImage icon, a dialog box will appear and you'll be prompted to specify what AppImage you want to update
  4. Specify the path to your AppImage
  5. Once AppImage is updated, press the button named: Run updated AppImage

CLI

 $ wget https://github.com/AppImage/AppImageUpdate/releases/download/continuous/appimageupdatetool-x86_64.AppImage
 $ chmod +x ./appimageupdatetool-x86_64.AppImage
 $ ./appimageupdatetool.AppImage path/to/old/FreeCAD.AppImage
 $ chmod +x path/to/updated/FreeCAD.AppImage
 $ ./path/to/updated/FreeCAD.AppImage

Tips:

  • The file names will be unique because of the version info is embedded in them. The above instructions are simplified for convenience.
  • Run ./appimageupdatetool-x86_64.AppImage --help to learn about functionality like -r and --self-update
  • There is also an i386 version (see the AppImageUpdate Release page)

Todo: share a script that can be added as an alias or cron job

Using AppImages in your Development Workflow

Note: This section is specifically for developers

A very convenient aspect of FreeCAD is that a majority of it is built in python and doesn't require to manually compile the code (like c++). Essentially, a python file can be modified and upon restarting FreeCAD those changes will be integrated. A developer can quickly work on the latest FreeCAD release using this technique and an appimage. FYI, mentioned procedure doesn't modify the environment in any way, that is nothing gets installed and no environment paths get modified. All one needs to do is the following:

Modifying AppImages

 $ <FreeCAD>.AppImage --appimage-extract
 $ cd squashfs-root/
 (Open your python file(s) in you favorite code editor and save)
 $ ./AppRun

Repackaging AppImages

If you've done the above and now want to re-package the AppImage with your latest changes proceed as follows:

 $ cd ..
 $ wget "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage"
 $ chmod a+x appimagetool-x86_64.AppImage
 $ ./appimagetool-x86_64.AppImage squashfs-root