Varias versiones de FreeCAD aisladas (appimages)

Advertencia
Este artículo se actualizó por última vez el 2023-03-09, es posible que el contenido no esté actualizado.

Varias versiones de FreeCAD aisladas entre si

Referencias

Con la instalación propuesta podemos tener instaladas varias versiones de FreeCAD, por ejemplo la stable la nightly y la real thunder con configuraciones y módulos independientes entre ellas.

Tenemos que crear un directorio para cada versión diferente que queramos instalar. Yo tengo todas en el directorio ~/apps/freecad

El contenido de ese directorio tiene esta pinta:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
tree freecad
freecad
├── fc019
│   ├── current -> FreeCAD_0.19-24291-Linux-Conda_glibc2.12-x86_64.AppImage
│   ├── FreeCAD_0.19-24276-Linux-Conda_glibc2.12-x86_64.AppImage
│   ├── FreeCAD_0.19-24291-Linux-Conda_glibc2.12-x86_64.AppImage
│   ├── Mod
│   ├── system.cfg
│   ├── temp
│   └── user.cfg
├── fc020
│   ├── current -> FreeCAD_weekly-builds-26155-Linux-Conda_glibc2.12-x86_64.AppImage
│   ├── FreeCAD_weekly-builds-25943-Linux-Conda_glibc2.12-x86_64.AppImage
│   ├── FreeCAD_weekly-builds-26155-Linux-Conda_glibc2.12-x86_64.AppImage
│   ├── Mod
│   ├── system.cfg
│   ├── temp
│   └── user.cfg
└── fcrt
    ├── current -> FreeCAD-asm3-Stable-Conda-Py3-Qt5-20211015-glibc2.12-x86_64.AppImage
    ├── FreeCAD-asm3-Stable-Conda-Py3-Qt5-20210922-glibc2.12-x86_64.AppImage
    ├── FreeCAD-asm3-Stable-Conda-Py3-Qt5-20211015-glibc2.12-x86_64.AppImage
    ├── Mod
    ├── system.cfg
    ├── temp
    └── user.cfg

En cada subdirectorio (fc019, fc020 y fcrt):

  • Creamos un directorio Mod
  • Descargamos el fichero appimage correspondiente
  • Creamos el enlace simbólico current

Los scripts para arrancar las versiones tienen este contenido:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'

# Uncomment next line for using dot as decimal separator
# export LC_NUMERIC=en_US.UTF-8
# Uncomment next line for having a comma instead of a dot in numeric pad (it's a global option)
setxkbmap -option kpdl:comma

export HOME=/home/salvari/apps/freecad/fc019
export FREECAD_USER_HOME=$HOME
~/current --user-cfg ~/user.cfg --system-cfg ~/system.cfg --module-path ~/Mod


# Set default keymap for numeric pad
setxkbmap -option ''

Establecen la variable HOME y FREECAD_USER_HOME al directorio de la versión particular.

Notas
  • En mis scripts originales sólo establecía la variable HOME pero las distintas versiones de FreeCAD seguían compartiendo el directorio de add-ons, al establecer la variable FREECAD_USER_HOME cada versión tiene sus add-ons independientes.

  • Todavía no tengo muy claro que se almacena en el module-path, pero queda establecido “por si acaso”

Actualizar la versión

  • Descargamos el fichero appimage correspondiente a la nueva versión.
  • Borramos el antiguo enlace simbólico current
  • Creamos de nuevo el enlace apuntando a la nueva appimage (ln -s <nuevaAppImage> current)

No es necesario tocar los scripts que lanzan FreeCAD

Un solo script para todo

Referencias
Este script se basa directamente en el script propuesto por Maxi uno de los usuarios del Grupo FreeCAD Español en Telegram.

Con sólo este script podemos lanzar todas las versiones:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'

# Menu

echo "#####                 ####  ###   ####"
echo "#                    #      # #   #   #"
echo "#     ##  #### ####  #     #   #  #   #"
echo "####  # # #  # #  #  #     #####  #   #"
echo "#     #   #### ####  #    #     # #   #"
echo "#     #   #    #     #    #     # #   #"
echo "#     #   #### ####   ### #     # ####"
echo " "
echo "      *************************"
echo "      Elegir versión de FreeCAD"
echo "      *************************"
echo "         (1) FreeCAD 0.19"
echo "         (2) FreeCAD 0.20"
echo "         (3) RT Stable"
echo "         (4) RT Daily"
echo "      *************************"

read opcion
case $opcion in
    1)
        FREECAD_DIR=/home/usuario/apps/freecad/fc019 ;; # Ruta al archivo AppImage
    2)
        FREECAD_DIR=/home/usuario/apps/freecad/fc020 ;;
    3)
        FREECAD_DIR=/home/usuario/apps/freecad/fcrt ;;
    4)
        FREECAD_DIR=/home/usuario/apps/freecad/fcrtd ;;
    *)
        echo "Invalid Option"
        exit  ;;
esac

export HOME=$FREECAD_DIR
export FREECAD_USER_HOME=$FREECAD_DIR
~/current --user-cfg ~/user.cfg --system-cfg ~/system.cfg --module-path ~/Mod

# Set default keymap for numeric pad
setxkbmap -option ''
0%