2017-03-13 2 views
0

Kann mir jemand helfen, die Umgebungsvariablen für die Konfiguration der Software SLEPc (eine Bibliothek für die Lösung großer Sparse-Eigenprobleme auf Parallelrechnern) zu setzen. Ich benutze in Ubuntu 16.04 LTS.Konfiguration der Software SLEPc - Einstellung der Umgebungsvariablen

Ich habe petsc-3.2 Docs: Installation und PETSc Documentation: Installation Seiten als Richtlinie verwendet, wo es heißt:

für csh/tcsh enviornment Variable angeben

setenv PETSC_DIR /home/balay/petsc-3.7.0 
setenv PETSC_ARCH linux-gnu-c-debug 

angeben enviornment Variable für bash [in ~/.cshrc angegeben werden] [kann spezifiziert in ~/.bashrc]

export PETSC_DIR=/home/balay/petsc-3.7.0 
export PETSC_ARCH=linux-gnu-c-debug 

Ich bekomme Fehlermeldung: ist

setenv SLEPC_DIR=/home/brendan/Documents/slepc/slepc 
setenv PETSC_DIR=/home/brendan/Documents/petsc_2/petsc 
setenv PETSC_ARCH=/home/brendan/Documents/petsc_2/petsc/arch-linux2-c-debug 
+0

Wenn die './configure' eine Bash ist, können Sie 'bash -x ./configure' ausführen und uns die Ausgabe zeigen. Bitte zeigen Sie uns auch die Outpout von 'env | egrep PETSC_DIR' – Aleksandar

+0

... das heißt, Tests wären in der Tat nützlich. 'declare -p PETSC_DIR' zeigt sowohl den Wert für die Variable * als auch * an, ob es exportiert wird (' declare -x PETSC_DIR = ... 'gibt an, dass es exportiert wird;' declare - PETSC_DIR = ... 'zeigt andernfalls an). –

+0

@Aleks, dieses spezielle "configure" -Skript ist überhaupt nicht in einer Shell-Sprache geschrieben, also ist 'bash -x configure' nicht hilfreich. Siehe https://bitbucket.org/petsc/petsc/src/dcd36c237939d4bae4c670048cc3c33706a8123f/configure?at=master&fileviewer=file-view-default –

Antwort

2

~/.bashrc das:

$ ./configure 
Checking environment... 
ERROR: PETSC_DIR enviroment variable is not set 

ich zum Ende meiner ~/.bashrc Datei Folgendes hinzugefügt haben:

export SLEPC_DIR=/home/brendan/Documents/slepc/slepc 
export PETSC_DIR=/home/brendan/Documents/petsc_2/petsc 
export PETSC_ARCH=/home/brendan/Documents/petsc_2/petsc/arch-linux2-c-debug 

und zu meiner ~/.cshrc Datei Falscher Ort, um Umgebungsvariablen zu konfigurieren - sie stammen aus nicht interaktiven Shells. Wenn Ihre Plattform jedoch MacOS ist, startet jede Terminal-Instanz eine Anmeldung Shell, so dass es ~/.bash_profile, nicht ~/.bashrc Quellen. (Vielleicht möchten Sie eine ~/.bash_profile erstellen, die ~/.bashrc wenn getan, wenn auf einer solchen Plattform).

Auch auf konventionellere Unix-Desktops, ~/.bash_profile Verwendung ist für Umgebungsvariablen vorzuziehen - es laufen gelassen nur einmal wenn du da drin einzuloggen, vs auf jeder neuen Schöpfung interaktive Shell (jeden neuen Tab/Fenster, etc). Da Umgebungsvariablen von untergeordneten Prozessen (über die Prozessumgebung) geerbt werden, müssen sie nicht mehr als einmal pro Prozessbaum exportiert werden.


By the way - durch the relevant configure script lesen, scheint es - tatsächlich PETSC_DIR und PETSC_ARCH aus dem Konfigurationsskript der Kommandozeile zu lesen, nicht aus der Umgebung. Das Ausführen von ./configure PETSC_DIR="$PETSC_DIR" PETSC_ARCH="$PETSC_ARCH" kann daher hilfreich sein.

Das Übergeben eines vollständig qualifizierten Pfades, wenn Sie das in der Vergangenheit erfolgreich verwendet haben, ist ebenfalls hilfreich.

+0

Ich habe den Code von ~/.bashrc und ~/.cshrc entfernt und die Verzeichnisse nach ~/.bash_profile exportiert, mit der neuen Ausgabe: ...... '$ ./configure PETSC_DIR =/home/brendan/Dokumente/petsc_2/petsc PETSC_ARCH =/home/brendan/Dokumente/petsc_2/petsc/arch-linux2-c-debug FEHLER: Ungültige Argumente PETSC_DIR =/home/brendan/Dokumente/petsc_2/petsc PETSC_ARCH =/home/brendan/Dokumente/petsc_2/petsc/arch-linux2-c-debug Verwenden Sie -h für Hilfe –

+0

die Vars sollten vor dem Skript sein. 'PETSC_DIR =/home/brendan/Dokumente/petsc_2/petsc PETSC_ARCH =/home/brendan/Dokumente/petsc_2/petsc/arch-linux2 -c-debug./Configure' – Aleksandar

+0

@Aleks, eigentlich, nein, der Rat zu setzen sie auf der Befehlszeile und nicht in der Umgebung waren absichtlich. Siehe den Code unter https://bitbucket.org/petsc/petsc/src/ae618e6989482e576d696b8985b6d772300e3607/config/configure.py?at=v3.7&fileviewer=file-view-default#configure.py-48, das nach "PETSC_ARCH" sucht = '** auf' sys.argv' **, nicht in der Umgebung. (Sowohl autoconf-generierte configure-Skripte als auch traditionelle Makefiles akzeptieren auf diese Weise Überschreibungen. Es ist also keine große Überraschung, sie hier implementiert zu sehen). –

0

ich den setenv Code in ~/.cshrc gelöscht und hinzugefügt folgendes Ende ~/.bashrc Datei:

export SLEPC_DIR=/home/brendan/Documents/slepc/slepc 
export PETSC_DIR=/home/brendan/Documents/petsc_2/petsc 
export PETSC_ARCH=arch-linux2-c-debug 

Ich trat dann source ~/.bashrc zu reload .bashrc und:

$ ./configure PETSC_DIR=/home/brendan/Documents/petsc_2/petsc PETSC_ARCH=/home/brendan/Documents/petsc_2/petsc/arch-linux2-c-debug 

gibt:

ERROR: Invalid arguments PETSC_DIR=/home/brendan/Documents/petsc_2/petsc PETSC_ARCH=/home/brendan/Documents/petsc_2/petsc/arch-linux2-c-debug 
Use -h for help 

Also habe ich dann nur ./configure ausprobiert. Es gibt:

$ ./configure 
Checking environment... done 
Checking PETSc installation... done 
Checking LAPACK library... done 
Writing various configuration files... done 
Generating Fortran stubs... done 

=============================================================================== 
SLEPc Configuration 
=============================================================================== 

SLEPc directory: 
/home/brendan/Documents/slepc/slepc 
    It is a git repository on branch: master 
PETSc directory: 
/home/brendan/Documents/petsc_2/petsc 
    It is a git repository on branch: master 
Architecture "arch-linux2-c-debug" with double precision real numbers 

xxx=========================================================================xxx 
Configure stage complete. Now build the SLEPc library with (gnumake build): 
    make SLEPC_DIR=$PWD PETSC_DIR=/home/brendan/Documents/petsc_2/petsc PETSC_ARCH=arch-linux2-c-debug 
xxx=========================================================================xxx 

Ich denke, die source ~/.bashrc mit ./configure gearbeitet!

Verwandte Themen