--- 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 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 '' ```