Installation

Installera AmberTools 18 på macOS 10.14 (Mojave)

Att installera Amber/AmberTools på under macOS är inte en helt trivial process. Det har blivit mycket lättare en vad det än gång i tiden var men det kräver fortfarande lite mer än att släpa en fil till rätt mapp. Nedanför presenterar jag tre olika sätt att installera nuvarande version av AmberTools, där metoden skall vara den samma för Amber. Detta är för närvarande enbart den seriella versionen, jag har även kompilerat parallellt men måste validera metoderna innan jag kan publicera dessa här.

Det kommer även krävas att du installerar saker och kör kommandon genom den inbyggda ”kommandotolken” som för macOS heter Terminal(.app). Du hittar denna app i din mapp med Program, i mappen Verktyg eller genom att använda spotlight, det lilla förstoringsglaset uppe i högra hörnet av skärmen (alternativt genom genvägen cmd+blanksteg på ditt tangentbord, förutsatt att denna är aktiv) och söka på Terminal. När du skall köra kommandon i terminalen kommer de att se ut så här:

some command example

Det kan finnas längre kommandon där man måste ”sidscrolla” för att se hela sekvensen. Med detta förklarat tror jag att det är dags att sätta igång. Jag kommer nu förklara hur man gör för att kompilera AmberTools18/Amber18 med hjälp av pakethanteraren ”Homebrew”, ”Macports” och genom att använda Apples version av C kompilerarpaketet clang och en fristående fortran kompilerare. Tänk på att endast välja ett av dessa sätt då du kan skapa konflikter om du installerar mer än en pakethanterare eller en uppsättning av samma kompilerare samtidigt.

Installera Xcode och tillhörande Command Line Tools (CLT)

Oavsett om du tänker använda MacPorts, Homebrew eller bara Apple GCC och valfri gfortran version måste du installera Xcode. För denna beskrivning användes Xcode10 som du lämpligast installerar via AppStore på din Mac. CLT behöver du för att köra kommandon i terminalen och installeras efter att Xcode är installerat genom att köra följande kommando i din Terminal.app

sudo xcode-select --install

Du måste även installera filer som saknas, kör följande kommando för att öppna en PKG installerare som kommer med Xcode10 och följ instruktionerna.

open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

Detta är nödvändigt eftersom Apple har valt att pensionera en del av tidigare verktyg som kom installerat med Xcode. (Något som kommer skapa problem med installationen av AMBER i och med nästa version av Xcode(11) då detta paket med ”saknade” filer inte längre kommer finnas tillgänglig.

Vissa moduler i AMBER använder X.org X Window System för GUI, detta kommer inte längre förinstallerat på macOS i form av X11.app så för att detta skall fungera krävs att du installerar XQuartz som ersatt X11. Jag tror fortfarande att du får en pop-up som förklarar att du måste installera XQuartz när du försöker använda X11 men du kan lika gärna installera det direkt. Besök utvecklarnas hemsida (https://www.xquartz.org/) och följ instruktionen.

Nu bör du ha installerat Xcode och CLT för att kunna köra kommandon. Detta måste du göra oavsett vilken metod du sedan väljer nedan.

Kompilera AmberTools18/Amber18 med Homebrew GCC8

  1. Installera Homebrew

Homebrew installeras genom att köra ett kommando i terminalen, gå gärna till Homebrews hemsida (https://brew.sh/) och bekräfta kommandot där.

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  1. Installera Homebrew GCC8 (just nu den förvalda versionen) genom att köra följande kommando
brew install gcc
Följande eliminerar ett fel med "cannot find <include> file" som annars uppstår senare. Tekniskt sett beror felet på att Homebrew använder system kompileraren (clang) i stället för gcc8 som du just installerat om vi inte tvingar macOS att välja Homebrew versionen. Det gör du genom att köra följande kommandon.
ln -s /usr/local/bin/gcc-8 /usr/local/bin/gcc
ln -s /usr/local/bin/g++-8 /usr/local/bin/g++
ln -s /usr/local/bin/c++-8 /usr/local/bin/c++

Det du gör är att du lägger länkar till korrekt kompilerare i mappen för Homebrews körbara filer, annars går macOS på system versionen (clang) trotts att du installerat Homebrew versionen.

Vill du sedan göra detta ogjort är det bara att ta bort dessa filer igen utan att det skadar macOS eller Homebrew, det är bara länkar.

cd /usr/local/bin/
rm gcc g++ c++
  1. Ladda ned AmberTools18/amber18 från utvecklarnas hemsida (http://ambermd.org/), flytta arkivet till och extrahera sedan filerna där du vill installera.
mv /[PATH]/[TO]/AmberTools18.tar.bz2 /[PATH]/[TO]/[INSTALL]/[DIRECTORY]/
cd /[PATH]/[TO]/[INSTALL]/[DIRECTORY]/
tar xvf AmberTools18.tar.bz2
  1. Konfigurera och installera
export AMBERHOME=/[PATH]/[TO]/amber18
export PATH=${AMBERHOME}:$PATH
export MACOSX_DEPLOYMENT_TARGET='10.14'
cd $AMBERHOME

Du är nu redo att kompilera och installera den seriella versionen av AmberTools18/Amber18

./configure -macAccelerate gnu
make install

Förutsatt att inget har gått fel, ändrats, solen inte stod i zenit, det var skygga på västra sidan av pentagon eller något annat så skall du nu ha en fullt fungerande version av den seriella installationen av AmberTools18/Amber18 via Homebrew

Kompilera AmberTools18/Amber18 med MacPorts GCC6/8

  1. Du har redan installerat Xcode (eller hur?), gå då till MacPorts hemsida (https://www.macports.org/) och följ instruktionen för att installera.
  1. Installera GCC paketet, jag valde GCC8 för instruktionen men har har testat med GCC6 också, båda fungerar. Vill du använda GCC6 så but bara ut gcc8 mot gcc6 på de ställed där siffran hänvisar till GCC versionen. Nedanstående kommandon uppdaterar MacPorts och installerade ”program” (om det behövs) och installerar sedan gcc8. Det betyder inte att macOS använder gcc8 så sista kommandot ”sätter” gcc versionen att använda till MacPorts gcc8.
sudo port selfupdate
sudo port upgrade outdated
sudo port install gcc8
sudo port select --set gcc mp-gcc8

Du kan enkelt göra detta ogjort. Du kan kontrollera vilka (till exempel) gcc versioner du har installerade genom att köra

$ port select --list gcc
Available versions for gcc:
    gcc42
    mp-gcc6
    mp-gcc8
    none (active)

De olika versionerna som listas som ”Available version” beror självklart på vilka du har installerat via MacPorts. Du kan välja vilken du vill använda genom att ”sätta” en version. Detta gör du med kommandot i rutan ovan och för att gå tillbaka till system versionen (clang) sätter du den till ”none”.

sudo port select --set gcc none

Som i ”ingen (none) av MacPorts” versioner, inte som i ”använd ingen”. Detta fungerar för openmpi/mpich, python och en hel del andra saker.

  1. Ladda ned AmberTools18/amber18 från utvecklarnas hemsida (http://ambermd.org/), flytta arkivet till och extrahera sedan filerna där du vill installera.
mv /[PATH]/[TO]/AmberTools18.tar.bz2 /[PATH]/[TO]/[INSTALL]/[DIRECTORY]/
cd /[PATH]/[TO]/[INSTALL]/[DIRECTORY]/
tar xvf AmberTools18.tar.bz2
  1. Konfigurera och installera
export AMBERHOME=/[PATH]/[TO]/amber18
export PATH=${AMBERHOME}:$PATH
export MACOSX_DEPLOYMENT_TARGET='10.14'
cd $AMBERHOME

Du är nu redo att kompilera och installera den seriella versionen av AmberTools18/Amber18

./configure -macAccelerate gnu
make install

Förutsatt att inget har gått fel, ändrats, det inte regnar i London, en fjäril landade på tulpanen bredvid kvarnen i Holland eller något annat så skall du nu ha en fullt fungerande version av den seriella installationen av AmberTools18/Amber18 via MacPorts

Kompilera AmberTools18/Amber18 med macOS clang

Du har redan installerat Xcode (eller hur?) så du har en c kompilerare (clang) men du behöver en fortran kompilator, något som inte kommer med Xcode. Du kan skaffa detta genom att använda valfri fungerande källa, jag visar tre olika sätt. Notera dock att du enbart skall använda en metod!

Alternativ 1: MacPorts

Ladda ned och installera MacPorts och GCC (se ”Kompilera AmberTools18/Amber18 med MacPorts”), jag valde GCC8 och har testat med GCC6, båda fungerar.

sudo port selfupdate
sudo port upgrade outdated
sudo port install gcc8
sudo port select --set gcc mp-gcc8
Alternativ 2: Homebrew

Homebrew installeras genom att köra ett kommando i terminalen, gå gärna till Homebrews hemsida (https://brew.sh/) och bekräfta kommandot där.

/usr/bin/ruby -e &amp;quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)&amp;quot;
  1. Installera Homebrew GCC8 (just nu den förvalda versionen) genom att köra följande kommando
brew install gcc

Eftersom Apple inte tillhandahåller gfortran kommer Homebrew versionen automatiskt bli den aktiva genom att installera GCC och inga länkar behöver skapas.

Alternativ 3: HPC GCC

Här valde jag HPC gfortran-8.1-bin.tar.gz för att endast installera fortran kompileraren då jag vill använda Apple clang för allt annat. Ladda ned och installera gfortran-8.1-bin.tar.gz (http://hpc.sourceforge.net)

cd /[PATH]/[TO]/[DOWNLOAD]/
sudo tar -xvf gfortran-8.1-bin.tar -C /

Allt installeras i /usr/local/. Under processen fick jag felmeddelanden men installationen fungerade ändå så jag grävde inte djupare i detta:

x usr/local/: Can't set user=0/group=0 for usr/local Failed to set file flags
...
...
tar: Error exit delayed from previous errors.
Fortran Fixat

Oavsett vilken av de tre ovanstående metoderna ovan du valt bör du nu ha en fungerande gfortran version installerad. Nu är det dags att gå vidare med konfigurationen och installationen av AmberTools18/Amber18.

  1. Ladda ned AmberTools18/amber18 från utvecklarnas hemsida (http://ambermd.org/), flytta arkivet till och extrahera sedan filerna där du vill installera.
mv /[PATH]/[TO]/AmberTools18.tar.bz2 /[PATH]/[TO]/[INSTALL]/[DIRECTORY]/
cd /[PATH]/[TO]/[INSTALL]/[DIRECTORY]/
tar xvf AmberTools18.tar.bz2
  1. Konfigurera och installera
export AMBERHOME=/[PATH]/[TO]/amber18
export PATH=${AMBERHOME}:$PATH
export MACOSX_DEPLOYMENT_TARGET='10.14'
cd $AMBERHOME

Följande eliminerar ett fel med ”cannot find <include> file” behöver vi editera lite filer. Vilka filer och rader har härletts efter diskussioner med en av utvecklarna utav ptraj och är inget jag hittat på själv, eftersom vi bara ”kommenterar” är denna process dessutom helt reversibel så det finns ingen risk att du förstör något.

vi $AMBERHOME/AmberTools/src/configure2

Detta öppnar filen en editor (VIM, du kan självklart använda vilken editor du vill).

  • För att hoppa till rätt rad skriver du ett ”kolon” (”shift” + ”.” tangenterna), det dyker nu upp ett kolon längst ned i vänstra hörnet. Du kan nu skriva siffror för att hoppa till denna rad, avsluta med att trycka ”enter” (retur) för att genomföra hoppet (ex :143).
  • Vill numrera raderna i editors skriver du ett semikolon och skriver ”set number” följt av ”enter” tangenten :set number. Du döljer numreringen genom att köra :set nonumber om du vill.
  • För att ändra i filen trycker du först på ”i” tangenten på tangentbordet, det borde nu stå -- INSERT -- längst ned till vänster, du kan nu editera dokumentet.
  • När du har genomfört ändringarna trycker du på ”esc” tangenten, det står nu inget i nedre vänstra hörnet. Håll ned ”shift” tangenten och tryck två gånger på ”z” tangenten (shift+z+z). Filen sparas och editors stängs.

Kommentera ut raderna 2237-2241 och 2289-2293 (sätt ett # tecken först på varje rad). Det betyder att detta:

if [ &amp;quot;$intelmpi&amp;quot; = 'yes' ]; then 
    echo &amp;quot;Intel MPI must be used with Intel compilers.&amp;quot;
    exit 1
fi
# mac clang
if [ &amp;quot;$skippython&amp;quot; = 'no' ]; then 
    cpptrajcxxflags=&amp;quot;-stdlib=libstdc++ $cpptrajcxxflags&amp;quot;
    cpptrajldflags=&amp;quot;-stdlib=libstdc++ -L/usr/lib/&amp;quot;
fi

Skall bli detta:

#if [ &amp;quot;$intelmpi&amp;quot; = 'yes' ]; then 
#    echo &amp;quot;Intel MPI must be used with Intel compilers.&amp;quot;
#    exit 1
#fi
## mac clang
#if [ &amp;quot;$skippython&amp;quot; = 'no' ]; then 
#    cpptrajcxxflags=&amp;quot;-stdlib=libstdc++ $cpptrajcxxflags&amp;quot;
#    cpptrajldflags=&amp;quot;-stdlib=libstdc++ -L/usr/lib/&amp;quot;
#fi

Ytterligare en fil behöver editeras för att eliminera att felmeddelande.

vi $AMBERHOME/AmberTools/src/pytraj/setup.py

I denna fil behöver man kommentera ut rad 142 på samma sätt som i tidigare fil. Alltså skall vi se till att

extra_compile_args.append('-stdlib=libstdc++')

Blir till

#extra_compile_args.append('-stdlib=libstdc++')

Ett tidigare sätt att lösa detta var att byta ut libstdc++ mot libc++ på raderna 2291-2292 i configure2 filen och på rad 142 i setup.py. Jag har dock fått besked från utvecklaren av PTRAJ att dessa rader inte längre är nödvändiga. Du väljer själv vilken lösning du använder då båda är bekräftade att fungera.

Du är nu klar att kompilera och installera den seriella versionen av AmberTools18/Amber18

./configure -macAccelerate clang
make install

Förutsatt att inget har gått fel, att det inte är dimma i Skottland, att du stod på ett ben under processen, det solen sken på globen eller något annat så skall du nu ha en fullt fungerande version av den seriella installationen av AmberTools18/Amber18 som kompilerats med någon version av gfortran och Apples clang.