---
weight: 4
title: "Varias versiones de FreeCAD aisladas (appimages)"
date: 2021-10-25T23:16:27+0200
draft: false
summary: "Como instalar varias versiones de FreeCAD aisladas (AppImages)"
categories:
  - pildoras
tags:
  - freecad
---

## Varias versiones de FreeCAD aisladas entre si


{{< admonition type=abstract title="Referencias" open=true >}}

- Estos scripts están basados en el script propuesto por el usuario _**Maxi**_ en el [Grupo de Telegram FreeCAD en Español](https://telegra.ph/Grupo-Telegram-de-FreeCAD-en-Espa%C3%B1ol-07-12)

{{< /admonition >}}

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:

```bash
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:

```bash
#!/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.

{{< admonition type=note title=Notas open=true >}}

* 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"

{{< /admonition >}}

### 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

{{< admonition type=abstract title="Referencias" open=true >}}

Este script se basa directamente en el script propuesto por _Maxi_ uno de los usuarios del [Grupo FreeCAD Español](https://t.me/FreeCAD_Es) en Telegram.

{{< /admonition >}}

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

```bash
#!/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 ''
```

