1.1.4. Linux, Ubuntu 20.04

These setup instructions are for Ubuntu Linux version 20.04 (Focal Fossa). And a note of thanks to Chris Rorden, who contributed advice to these instructions!

Things to note before starting

  1. Each step involves either copy+pasting a command, or clicking on a download link.

  2. Admin privileges are needed for some steps: check if you can run sudo ls, entering the correct password. If you can’t, perhaps ask an administrator to do that step, and you can do the others that don’t require it.

  3. Note your terminal shell type (bash, zsh, tcsh, csh, etc.), by copy+pasting:

    echo $0
    
  4. Do the system check in the “Evaluate” stage. Try any recommendations in its “Please Fix” section.

  5. If you run into any problems, please just ask a clear question on the AFNI Message Board.

  1. To copy and paste in a Linux terminal, one can use Ctrl+Shift+c and Ctrl+Shift+v, respectively. (In WSL terminals, one might first enable this functionality: rightclick on the panel’s taskbar, select “Properties” and put a checkmark by this option.)

  2. To open a text file, use any text editor you like, and/or you can type gedit FILENAME, such as either:

    gedit ~/.bashrc
    
    gedit ~/.bashrc &
    

Quick setup

This is the quick form of AFNI setup for Ubuntu 20.04. It includes downloading the Bootcamp data and running the system check (don’t forget to do that!).

  1. Download the command scripts.

    Copy+paste:

    cd
    curl -O https://raw.githubusercontent.com/afni/afni/master/src/other_builds/OS_notes.linux_ubuntu_20_64_a_admin.txt
    curl -O https://raw.githubusercontent.com/afni/afni/master/src/other_builds/OS_notes.linux_ubuntu_20_64_b_user.tcsh
    curl -O https://raw.githubusercontent.com/afni/afni/master/src/other_builds/OS_notes.linux_ubuntu_20_64_c_nice.tcsh
    
    Feel free to read any of these, for educational purposes.

  2. Run command scripts.

    Check your shell (echo $0), and use the appropriate set of commands below. Running the commands this way creates a text file, o.ubuntu*.txt, which can be sent to an AFNI guru for troubleshooting, if necessary.

    For bash users:

    1. Copy+paste the following (requires sudo with password):

      sudo bash OS_notes.linux_ubuntu_20_64_a_admin.txt 2>&1 | tee o.ubuntu_20_a.txt
      
    2. Copy+paste the following (no sudo):

      tcsh OS_notes.linux_ubuntu_20_64_b_user.tcsh 2>&1 | tee o.ubuntu_20_b.txt
      
    3. (optional, but useful) To niceify your terminal, copy+paste the following (no sudo):

      tcsh OS_notes.linux_ubuntu_20_64_c_nice.tcsh 2>&1 | tee o.ubuntu_20_c.txt
      

    For tcsh or csh users:

    1. Copy+paste the following (requires sudo with password):

      sudo bash OS_notes.linux_ubuntu_20_64_a_admin.txt |& tee o.ubuntu_20_a.txt
      
    2. Copy+paste the following (no sudo):

      tcsh OS_notes.linux_ubuntu_20_64_b_user.tcsh |& tee o.ubuntu_20_b.txt
      
    3. (optional, but useful) To niceify your terminal, copy+paste the following (no sudo):

      tcsh OS_notes.linux_ubuntu_20_64_c_nice.tcsh |& tee o.ubuntu_20_c.txt
      
  3. Evaluate/check the setup


    1. Open a new terminal, and run the AFNI system check:

      afni_system_check.py -check_all
      
      Read the “Please Fix” section at the bottom, to see if setup is complete.
      If there are suggested fixes, please do those and re-run the system check.
      Ask any questions on the Message Board

    2. Open up the AFNI and SUMA GUIs, juuuust to make sure all is well:

      afni
      suma
      
      Report any crashes! Otherwise, you are all set.

(slow setup) Install prerequisite packages

  1. Copy+paste:

    sudo add-apt-repository universe
    

    Copy+paste:

    sudo add-apt-repository -y "ppa:marutter/rrutter4.0"
    

    Copy+paste:

    sudo add-apt-repository -y "ppa:c2d4u.team/c2d4u4.0+"
    
    Purpose: Being able to get dependencies from the latter two repositories is necessary for installing the brms R-package installation.

  2. Copy+paste:

    sudo apt-get update
    

    Copy+paste:

    sudo apt-get install -y tcsh xfonts-base libssl-dev       \
                            python-is-python3                 \
                            python3-matplotlib python3-numpy  \
                            python3-flask python3-flask-cors  \
                            python3-pil                       \
                            gsl-bin netpbm gnome-tweak-tool   \
                            libjpeg62 xvfb xterm vim curl     \
                            gedit evince eog                  \
                            libglu1-mesa-dev libglw1-mesa     \
                            libxm4 build-essential            \
                            libcurl4-openssl-dev libxml2-dev  \
                            libgfortran-8-dev libgomp1        \
                            gnome-terminal nautilus           \
                            gnome-icon-theme-symbolic         \
                            firefox xfonts-100dpi             \
                            r-base-dev cmake bc git           \
                            libgdal-dev libopenblas-dev       \
                            libnode-dev libudunits2-dev       \
                            libgfortran4
    

    Purpose: Installs a lot of packages that AFNI depends on (so we don’t have to reinvent the wheel!). This may take a little while to complete running.

    Some of these packages also improve terminal behavior, especially if you are running Ubuntu on a Windows machine.

  3. Copy+paste:

    sudo ln -s /usr/lib/x86_64-linux-gnu/libgsl.so.23 /usr/lib/x86_64-linux-gnu/libgsl.so.19
    

    Purpose: Make a symbolic link for the specific version of GSL included in this version of Ubuntu.

(slow setup) Install AFNI binaries

  1. Choose one of the following approaches:

    • (default) To install the binaries from online, copy+paste:

      cd
      curl -O https://afni.nimh.nih.gov/pub/dist/bin/misc/@update.afni.binaries
      tcsh @update.afni.binaries -package linux_ubuntu_16_64 -do_extras
      
    • (alternative) To install already-downloaded binaries, use -local_package .. (replacing PATH_TO_FILE with the actual path; also, if @update.afni.binaries has also been downloaded, you can skip the curl .. command), copy+paste:

      cd
      curl -O https://afni.nimh.nih.gov/pub/dist/bin/misc/@update.afni.binaries
      tcsh @update.afni.binaries -local_package PATH_TO_FILE/linux_ubuntu_16_64.tgz -do_extras
      

    Purpose: Download and unpack the current binaries in your $HOME directory; set the AFNI binary directory name to $HOME/abin/; and add that location to the $PATH in both ~/.cshrc and ~/.bashrc.

(slow setup) Install R

  1. Check your shell type (echo $0). For …


    • ... a tcsh terminal, copy+paste:

      setenv R_LIBS $HOME/R
      mkdir  $R_LIBS
      echo  'export R_LIBS=$HOME/R' >> ~/.bashrc
      echo  'setenv R_LIBS ~/R'     >> ~/.cshrc
      
    • ... a bash terminal, copy+paste:

      export R_LIBS=$HOME/R
      mkdir  $R_LIBS
      echo  'export R_LIBS=$HOME/R' >> ~/.bashrc
      echo  'setenv R_LIBS ~/R'     >> ~/.cshrc
      
    Purpose: Set the environment variable $R_LIBS to specify where to install+find the R packages.

  2. Copy+paste:

    rPkgsInstall -pkgs ALL
    
    Purpose: Get specific R packages needed for AFNI programs. This step might take a while (of order an hour) to complete, because R will compile the packages. Sigh.

  3. If brms did not install from above, copy+paste:

    Rscript -e "install.packages(c('Rcpp','brms'), dependencies = TRUE, INSTALL_opts = '--no-lock')"
    

(slow setup) Prepare for Bootcamp

  1. Copy+paste:

    curl -O https://afni.nimh.nih.gov/pub/dist/edu/data/CD.tgz
    tar xvzf CD.tgz
    cd CD
    tcsh s2.cp.files . ~
    cd ..
    

    Purpose: Download the Bootcamp class data; untar+unzip it (= open it up); move into the newly opened directory; execute a script to copy the files to $HOME/..

    If no errors occur in the above, and your afni_system_check.py says things are OK, you can delete/remove the tarred/zipped package, using “rm CD.tgz”. If you are really confident, you can also deleted the CD/ directory in the present location.

  2. !Pro tip!: Bring a computer mouse to use at the Bootcamp. It is muuuuch easier to follow the demos that way.

  3. Read+practice with the handy Unix documentation/tutorial.

    Purpose: give you a quick lesson/refresher on using basic Linux shell commands (e.g., ls, cd, less, etc.). It will greatly enhance your bootcamp experience– we promise!

(slow setup) Evaluate setup/system (important!)

  1. Open a new terminal, and then copy+paste:

    afni_system_check.py -check_all
    
  2. Read the “Please Fix” section at the end. If there are no suggestions, then rejoice! Otherwise, try the suggestion(s) there.

  3. Open up the AFNI and SUMA GUIs, juuuust to make sure all is well:

    afni
    suma
    

Report any crashes or problems!

If stuck, then …

  • try searching online with the error message, and/or ask on the Message Board

  • send the system check to an AFNI guru for advice—copy+paste:

    afni_system_check.py -check_all > out.ASC.txt
    

    ... and email the file “out.ASC.txt”.

(slow setup) Niceify terminal (optional, but goood)

  1. To improve your life when using the terminal, copy+paste:

    echo 'set filec'    >> ~/.cshrc
    echo 'set autolist' >> ~/.cshrc
    echo 'set nobeep'   >> ~/.cshrc
    
    echo 'alias ls ls --color=auto' >> ~/.cshrc
    echo 'alias ll ls --color -l'   >> ~/.cshrc
    echo 'alias ltr ls --color -ltr'   >> ~/.cshrc
    echo 'alias ls="ls --color"'    >> ~/.bashrc
    echo 'alias ll="ls --color -l"' >> ~/.bashrc
    echo 'alias ltr="ls --color -ltr"' >> ~/.bashrc
    

    Purpose: The first commands set up tab autocompletion for tcsh (which should already be enabled for bash, by default). The second set of commands make aliases so that different types of files (“normal” files, zipped files, executables, et al.) and directories are shown using different colors and boldness. It makes it much easier to navigate on a terminal, IMHO.

  1. Also, consider running gnome-tweak-tool and changing Windows -> Focus Mode from ‘click’ to ‘mouse’.

  2. Also, consider extending time for screen saver: System Settings -> Brightness & Lock, and set inactivity duration.

(slow setup) Keep up-to-date (remember!)

  1. To update your AFNI sometime, copy+paste:

    @update.afni.binaries -d
    

    That’s it!!

    Purpose: This will automatically download the correct, latest AFNI version to your computer, replacing your old binaries. It will also update the apearch help information. Update often!

  2. To check your AFNI version, copy+paste:

    afni -ver
    

    Purpose: Report this useful info whenever asking a question on the Message Board!

Note

The record of all changes (new options, new programs, bug fixes, et al.) in AFNI programs is maintained for all to see in the online AFNI History.

A note on setting up Python/using Conda (opt)

For this OS, you should not need to do anything further to set up your Python.

AFNI has very minimal Python requirements—at present, matplotlib and numpy. For example, for the recommended automatic QC output from afni_proc.py, matplotlib is necessary.

You can use any method to install+manage Python and its dependencies. In fact, your OS might have all the Python+modules needed to run AFNI already. Check this by running:

afni_system_check.py -check_all

... and seeing there are no notes in the “Please fix” section at the end—if there are none about Python, then you are all set!

But if you do still need to setup Python with appropriate modules, or you want to manage different environments with different package needs (Python or otherwise), then we note that we have found Miniconda to be convenient. It is cross-platform (with occasional OS-specific quirks). If you are interested in either using it or reading more about it, you can check out this tutorial, which has both verbose and quick instructions.

But Miniconda is not required.