Deploying only a subset of synApps reduces the number of build errors encountered on non-standard Linux systems.
#### 1.1.3 Clear EPICS environment variables
#### 1.3.1 Assemble synApps
These EPICS environment variables can cause problems with this training, so they should be cleared before continuing.
bash
```bash
$ unset EPICS_BASE
$ unset EPICS_CA_ADDR_LIST
$ unset EPICS_CA_AUTO_ADDR_LIST
```
tcsh
```tcsh
$ unsetenv EPICS_BASE
$ unsetenv EPICS_CA_ADDR_LIST
$ unsetenv EPICS_CA_AUTO_ADDR_LIST
$ cd ${EPICS_DIR}
$ curl [URL]/training-synApps-config.txt
```
### 1.2 Create directories needed for the training
#### 1.3.2 Build synApps
```bash
$ mkdir-p${IOC_DIR}${SUPPORT_DIR}
```
$ cd ${SUPPORT_DIR}
$ make
```
### 1.3 Confirm the directories exist
### 1.4 Create directories needed for the training
```bash
$ tree ${EPICS_DIR}
$ mkdir-p${IOC_DIR}
```
<details>
<summary>output</summary>
```bash
$ tree ${EPICS_DIR}
/home/beams/USERNAME/PET-S2/epics
└── synApps_6_2_1
├── ioc
└── support
### 1.5 caQtDM
3 directories, 0 files
```
</details>
caQtDM is only packaged for Windows and OS X. It is painful to build on Linux.
If the **tree** command doesn't exist, there is a workaround:
<details>
<summary>workaround</summary>
One way to make caQtDM work for this training is to do the following:
The **find** command can be used to show all directories inside a specific directory.
1. Install caQtDM on a Windows machine on the same subnet as the Linux computer that will run the IOC
2. Copy the ui files from `asyn-R4-42/opi/caqtdm/autoconvert`, `motor-master/motorApp/op/ui/autoconvert`, and `my-xxx.ui` created in [step 2.3](2-IOC-deployment.md#23-choose-a-new-ioc-prefix) to a single directory on the windows machine
3. Set the CAQTDM_DISPLAY_PATH to the directory where the ui files were copied
4. Run caQtDM with required options
bash
```bash
$ tree(){ find $1-type d | grep-v git;}
```
tcsh
```csh
$ alias tree "find \!* -type d | grep -v git"
```
Alternatively, use caget and caput from the EPICS base bin directory to avoid the need for caQtDM.
Once the bash function or tcsh alias is defined, the tree command can be rerun: