Installera AmberTools18 (amber18) på Mac OS X 10.14 (Mojave) med eller utan Homebrew

Så efter en del velade tog jag beslutet att hoppa över från MacPorts till Homebrew. Detta har inte varit en smärtfri övergång och även om jag gillar Homebrew så är det vissa saker jag inte riktigt förstår motivationen till. Med det sagt, jag kör nu homebrew så instruktionerna för hur man kompilerar mjukvaror kommer att hänvisa till homebrew fortsättningsvis, lagt kort ligger.

Med uppdateringen från OS X 13.X High Sierra till OS X 14.X Mojave gick självklart en hel massa saker sönder, något jag nu för tiden har kommit att förvänta mig från uppdateringar av macOS. Detta includerade självklart möjligheten att kompilera amber på macOS. Det visade sig, bland annat, att Apple nu bestämt att ”libstdc++” tjänat ut sin roll och alla skall i stället använda ”libc++” utan att lämna någon bakåt kompabilitet eller sätt att lösa detta. Det har även försvunnits en del filer som brukade husera i /usr/include som man nu måste installera via en installer som ligger begravd i Xcode, dock kommer detta sluta fungera med nästa release av Xcode och garanterat orsaka en massa nya problem. Lång historia kort, detta är vad du måste göra för att kompilera amber på macOS Mojave med Homebrew GCC8 eller med macOS clang direkt. Resan fram till vad som fungerade är lång och innehåller en massa fel och problem, jag kommer inte att beskriva alla dessa problem då det skulle ta väldigt lång tid och potentiellt inte vara av generellt intresse.

Kompilera AmberTools18/amber18 med Homebrew GCC8

  1. Installera Xcode och Command Line Tools
    Xcode10 installerar du lämpligast via AppStore på din dator
    Du behöver installera Command Line Tools manuellt genom att köra följande i din Terminal.app
    sudo xcode-select --install

  2. Installera Homebrew och GCC
    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    brew install gcc

  3. Installera saknade headder filer
    I Terminal.app, kör följande kommando för att öppna PKG installeraren och följ instruktionerna.
    open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

  4. Laddda ned AmberTools18/amber18 och extrahera där du vill installera
    tar xvf AmberTools18.tar.bz2

  5. Configurera och installera
    export AMBERHOME=/[PATH]/[TO]/amber18
    export PATH=${AMBERHOME}:$PATH
    cd $AMBERHOME
    export MACOSX_DEPLOYMENT_TARGET='10.14'
    Eliminerar ett fel med "cannot find <include> file".
    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++
    ./configure -macAccelerate gnu
    make install

Detta producerar en fungerande version av AmberTools18/amber18 genom att använda Homebrew GCC men det finns fortfarande problem och det kommer garanterat att fortsätta uppstå mer problem innan allt går som det ska.

Kompilera AmberTools18/amber18 med macOS clang

  1. Installera Xcode och Command Line Tools
    Xcode10 installerar du lämpligast via AppStore på din dator
    Du behöver installera Command Line Tools manuellt genom att köra följande i din Terminal.app
    sudo xcode-select --install

  2. Installera saknade headder filer
    I Terminal.app, kör följande kommando för att öppna PKG installeraren och följ instruktionerna.
    open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

  3. Laddda ned AmberTools18/amber18 och extrahera där du vill installera
    tar xvf AmberTools18.tar.bz2

  4. Configurera och installera
    export AMBERHOME=/[PATH]/[TO]/amber18
    export PATH=${AMBERHOME}:$PATH
    cd $AMBERHOME
    export MACOSX_DEPLOYMENT_TARGET='10.14'
    Eliminerar ett fel med "cannot find <include> file".
    vi $AMBERHOME/AmberTools/src/configure2
    Kommentera ut raderna 2237-2241
    # if [ "$intelmpi" = 'yes' ]; then
    # echo "Intel MPI must be used with the Intel compilers."
    # exit 1
    # fi
    #


    vi $AMBERHOME/AmberTools/src/pytraj/setup.py
    Ändra libstdc++ till libc++ på rad 142
    142 extra_compile_args.append('-stdlib=libstdc++’)
    --->
    142 extra_compile_args.append('-stdlib=libc++’)


    Och ändra samma sak på radeta 2289-2293
    2289 # mac/clang
    2290 if [ "$skippython" = "no" ]; then
    2291 cpptrajcxxflags="-stdlib=libstdc++ $cpptrajcxxflags"
    2292 cpptrajldflags="-stdlib=libstdc++ -L/usr/lib/"
    2293 fi
    --->
    2289 # mac/clang
    2290 if [ "$skippython" = "no" ]; then
    2291 cpptrajcxxflags="-stdlib=libc++ $cpptrajcxxflags"
    2292 cpptrajldflags="-stdlib=libc++ -L/usr/lib/"
    2293 fi


    ./configure -macAccelerate clang
    make install

Detta producerar en fungerande version av AmberTools18/amber18 genom att använda macOS clang men det finns fortfarande problem och det kommer garanterat att fortsätta uppstå mer problem innan allt går som det ska.

Installera AmberTools17 (amber16) på Mac OS X 10.13.3 med MacPorts

Detta kommer bli en opolerad snabb genomgång av hur du får in en version av AmberTools17 och på samma sätt Amber16 om du har en licens med hjälp av pakethanteraren MacPorts. Jag kommer gå igenom Homebrew vid ett senare tillfälle och ska försöka putsa till detta senare och göra en mer utförlig och trevligare guide.

Jag har bytt dator på min arbetsplats relativt nyligen och av ren rutin körde jag in MacPorts som pakethanterare och började fylla i luckorna. Dock kom jag på att jag hittat en väldig massa information som jämför MacPorts mot Homebrew där det antingen är ett fåtal väldigt engagerade eldsjälar eller en växande majoritet av användare som rekommenderar Homebrew över MacPorts av olika anledningar. Jag kommer inte gå in på detaljerna kring detta här, det kommer dock komma en reflektion kring skiftet.

Jag sitter som sagt på en relativt ny Mac på jobbet men processen borde vara densamma för de flesta versioner av OS X (kan bekräfta detta nämligen) från  på en 2009 års modell MacBook Pro med 10.11 upp till 10.13.

Du måste vara en administratör på datorn du försöker göra detta på, oavsett vilken metod du väljer senare eftersom även Homebrew behöver installeras och i något skede kräver ett administratörslösenord. 

För att installera med hjälp av MacPorts, gör följande

  1. Installera Xcode från AppStore
  2. Öppna en terminal och kör följande kommandon för att installera extra komponenter du behöver och godkänna licensen.
    xcode-select --install
    xcodebuild -license
  3. Starta Xcode och installera eventuella updateringar
  4. Gå till MacPorts hemsida, ladda ned och installera enligt instruktion
  5. Gå till XQuartz hemsida för att ladda ned och installera XQuartz (ersättaren för Apples X11 som inte längre finns)
  6. Starta en ny terminal session (cmd+space, skriv terminal och öppna Terminal.app)
  7. Kör följande kommandon
    sudo port selfupdate
    sudo port upgrade outdated
    sudo port install gcc6
    sudo port install mpich-gcc6
    sudo port select --set gcc mp-gcc6
    sudo port select --set mpi mpich-gcc6-fortran
    exit
  8. Registrera dig och ladda ned AmberTools från nedladdningssidan
  9. Du kommer få hem en fil som heter något i stil med AmberToolsXX.tar.bz2, hitta den i finder (glöm inte att byta ut XX mot de siffror du faktiskt har). Placera detta arkiv i en mapp där du har läs/skriv rättigheter och där du vill installera programmet. Jag tänker skapa en mapp i min hemkatalog som heter ”Software” där jag installerar AmberTools så jag flyttar dit arkivet. Gör detta med musen och finder eller kör något liknande nedan i terminalen
    mkdir ~/Software/
    mv ~/Downloads/AmberToolsXX.tar.bz2 ~/Software/
    cd ~/Software/
  10. Om du vet hur terminalen fungerar använd ”cd” för att placera dig i samma ”mapp” som arkivet, alternativt om du tagit dig hit med mus/trackpad och finder. Öppna en terminalsession, skriv ”cd ” (glöm inte ett litet mellanslag) och ta sedan ”tag i mappen” där arkivet ligger med muspekaren och släpa till terminalfönstret där du ”släpper”, tryck sedan ”enter”.
  11. Väl i terminalfönstret i samma mapp som arkivet, kör detta kommando
    tar xvf AmberToolsXX.tar.bz2
    för att extrahera arkivet.
  12. Kör sedan detta kommando
    export AMBERHOME=~/Software/amberXX/
    (igen, byt ut XX mot korrekta siffror)
  13. Kör sedan detta för att hamna i rätt mapp
    cd $AMBERHOME
  14. Kör sedan detta kommando
    ./configure -macAccelerate gnu
    Kompilera sedan seriella versionen
    make install
  15. När detta är klart kommer lite info och att du skall göra något, det blir på enklast sätt detta (stäng inte terminalen ännu)
    vi ~/.profile
    Tryck på ”i” på tangentbordet för att aktivera skrivläget, markera i terminalfönstret detta och klistra in på en egen rad
    test -f ~/Software/amberXX//amber.sh && source ~/Software/amberXX//amber.sh
    Tryck på ”esc” tangenten, håll ned ”shift” och tryck två gånger på ”z” (shift+z+z) för att spara och gå ur editorn.
    exit
  16. Starta en ny terminalsession
    cd $AMBERHOME
    make test
  17. Om testen ser OK ut har du nu en installerad seriell version av Amber/AmberTools. Det som nu återstår är parallell versionen. Kör följande kommandon
    ./configure -macAccelerate -mpi gnu
    make install
    export DO_PARALLEL='mpirun -np 2'
    make test.parallel
    export DO-PARALLEL='mpirun -np 4'
    make test.parallel
  18. Om testerna fungerar och inget större problem inträffar är du nu klar.

Den här posten ser hemsk ut, jag ska försöka hinna gå loss på CSS och ändra bakgrundsfärgen och indenteringen för kod vid tillfälle.