1.1.8. Mac OS, 10.9-15 (via command line)

What to do?

These setup instructions are for Mac OS versions 10.9-15.

Note

If you are seeking the new App version of install instructions, *and have a Mac OS version 10.13-15, please click HERE.

  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.

  6. To open a text file, you can type open -t FILENAME. For example, to open the bash “rc” file:

    open -t ~/.bashrc
    

Setup terminal

  1. Copy+paste:

    defaults write org.macosforge.xquartz.X11 wm_ffm -bool true
    defaults write org.x.X11 wm_ffm -bool true
    defaults write com.apple.Terminal FocusFollowsMouse -string YES
    

    Purpose: This sets the policy where “focus follows mouse” for relevant applications. After this, clicks on a new window are directly applied, without needing to “pre-click” it. You’re welcome.

Install Xcode and XQuartz

  1. Copy+paste:

    xcode-select --install
    

  2. For …

    • … OS X >= 10.11, click on this link:
      Then click on the “Quick Download” DMG, and follow the instructions to install.

    • … OS X 10.9 and 10.10, copy+paste:

      /Applications/Utilities/X11.app
      

    Purpose: These install Xcode command line tools (needed for the gcc compiler et al.) and XQuartz (the desktop manager needed to run X11 programs, such as afni!).

Setup Mac env variables

  1. Copy+paste the following:

    touch ~/.cshrc
    echo 'if ( $?DYLD_LIBRARY_PATH ) then' >> ~/.cshrc
    echo '  setenv DYLD_LIBRARY_PATH ${DYLD_LIBRARY_PATH}:/opt/X11/lib/flat_namespace' >> ~/.cshrc
    echo 'else' >> ~/.cshrc
    echo '  setenv DYLD_LIBRARY_PATH /opt/X11/lib/flat_namespace' >> ~/.cshrc
    echo 'endif' >> ~/.cshrc
    
    touch ~/.bashrc
    echo 'export DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH}:/opt/X11/lib/flat_namespace' >> ~/.bashrc
    

    Purpose: This adjusts the library format variable for XQuartz in both tcsh and bash. Sigh.

Install AFNI binaries

  1. For …:

    • … (default) installing 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 macos_10.12_local -do_extras
      
    • … (alternative) installing already-downloaded binaries, you can use -local_package .. (replace “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/macos_10.12_local.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.

Reboot

Please logout and log back into your system.

Purpose: This deals with system updates, any change in login shell, and path updates.

Install R

  1. Purpose: Get R-3.6.3 (a recent, but not the most recent, version of R).

  2. Copy+paste:

    sudo rPkgsInstall -pkgs ALL
    

    Purpose: Get specific R packages needed for AFNI programs.

Install Netpbm

  1. Copy+paste:

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
    
  2. Copy+paste:

    brew install netpbm
    

Purpose: Install “netpbm”, which has functionality for converting image formats (such as to PNG) and is used in several programs like @snapshot_volreg, @chauffeur_afni and others. Uses the package manager homebrew to do the installation.

Setup Python (opt)

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.

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!

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”.

Niceify terminal (optional, but goood)

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

echo 'set filec'    >> ~/.cshrc
echo 'set autolist' >> ~/.cshrc
echo 'set nobeep'   >> ~/.cshrc

echo 'alias ls ls -G'       >> ~/.cshrc
echo 'alias ll ls -lG'      >> ~/.cshrc
echo 'alias ltr ls -lGtr'   >> ~/.cshrc
echo 'alias ls="ls -G"'     >> ~/.bashrc
echo 'alias ll="ls -lG"'    >> ~/.bashrc
echo 'alias ltr="ls -lGtr"' >> ~/.bashrc
echo 'alias ls="ls -G"'     >> ~/.zshrc
echo 'alias ll="ls -lG"'    >> ~/.zshrc
echo 'alias ltr="ls -lGtr"' >> ~/.zshrc

Purpose: The first command block sets up tab autocompletion for tcsh (which should already be enabled for bash users by default). The second set of commands make aliases for the main shells 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.

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.