Die Funktionen von jedem werden auf einer anderen Seite angegeben.
Es gibt ein Bio-Softwarepaket namens Qiime, und es ist schwierig, es selbst zu installieren. Ich muss verschiedene Bio-Befehle installieren,
/ usr / local /
Wenn Sie das sagen können, möchten Sie es nicht berühren. Außerdem möchte ich dem Server einen neuen hinzufügen,
Es fühlt sich an wie
Mit Bio-Tools werden unzählige kleine Befehle und Skripte eingegeben.
Selbst wenn ich versuche, es einzuführen, werde ich verschiedene Nerven zermürben.
Ob es einen Befehlsnamenkonflikt gibt, die diesmal installierte Liste verwalten, deinstallieren usw.
Außerdem wies mich jeder von ihnen an, detaillierte Umgebungsvariablen festzulegen, und in einem Augenblick war . * Shrc
durcheinander.
Selbstverständlich möchte ich ein einfaches Tool zum Umschalten der Umgebung (einschließlich Umgebungsvariablen).
Sie können Befehle mit den typischen "virtualenv" und "pyenv-virtualenv" wechseln, aber es ist schwierig, auch Umgebungsvariablen zu wechseln. Im Gegenteil, "direnv" berührt den Verwaltungsteil des Befehls nicht.
Basierend auf dem einfachen Konzept zu sagen, "anyenv" "direnv" zu installieren und die Umgebung zu erstellen. Im Folgenden wird dies als Beispiel verwendet, wobei davon ausgegangen wird, dass eine isolierte Umgebung von Qiime-1.8.0 erstellt wird.
CentOS 6.6 (einige Macs)
anyenv
pyenv
, plenv
, jenv
Im Moment brauche ich kein anderes "* env" in der Praxis
python
$ mv .bashrc .bashrc~
$ mv .local .local.bak
.bashrc
verschmutzt ist$ PYTHONPATH
geht zum Lesen und geht in Richtung ~ / .local
.Wenn sich im gemeinsamen Bibliothekspfad etwas wie ".local" in den Überresten der Vergangenheit befindet, sollte es aufgeräumt werden
python
$ export PERL5OPT= #<=Nur wir brauchen
$ git clone https://github.com/riywo/anyenv ~/.anyenv
$ export PATH=${HOME}/.anyenv/bin:$PATH
$ eval "$(anyenv init -)"
python
$ anyenv install pyenv
$ git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.anyenv/envs/pyenv/plugins/pyenv-virtualenv
$ eval "$(anyenv init -)" # exec $SHELL -l
$ pyenv install 2.7.3 # @mac: $ CFLAGS="-I$(xcrun --show-sdk-path)/usr/include" pyenv install 2.7.3
$ pyenv install 3.3.6
$ pyenv rehash
pip
, das für verschiedene Installationen verwendet wirdAuf dem Mac bei der Installation von "Python"
python
$ CFLAGS="-I$(xcrun --show-sdk-path)/usr/include" pyenv install 2.7.3
Wenn Sie dies nicht tun, wird es nicht funktionieren
pyenv-virtualenv Erstellen Sie eine isolierte Umgebung für die Verwendung Sie können mehrere Umgebungen mit derselben Version von "Python" erstellen
python
$ pyenv virtualenv 2.7.3 qiime
$ pyenv rehash
Python
-Modul usw. in $ {HOME} /. Anyenv / envs / pyenv / version / qiime
plenv
$ anyenv install plenv
$ plenv install 5.20.1
$ plenv shell 5.20.1
$ plenv install-cpanm
cpanm
wird separat installiert
jenv
$ anyenv install jenv
$ alternatives --config java
Es gibt 3 Programme'java'Bereitstellen.
Befehl auswählen
-----------------------------------------------
1 /usr/lib/jvm/jre-1.5.0-gcj/bin/java
+ 2 /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
* 3 /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
$ jenv add /usr/lib/jvm/jre-1.5.0-gcj
$ jenv add /usr/lib/jvm/jre-1.6.0-openjdk.x86_64
$ jenv add /usr/lib/jvm/jre-1.7.0-openjdk.x86_64
Wenn Sie "gnu screen" on "mac" verwenden und "zsh" verwenden und "anyenv" regelmäßig verwenden möchten
python
% cd /etc
% sudo mv zshenv zshenv.bak
#% sudo mv zshenv zprofile
Ich muss tun
Wenn Sie "gnu screen" in "CentOS" verwenden und "zsh" verwenden und "anyenv" regelmäßig verwenden möchten
python
% cd /etc
% sudo mv zshrc zshrc.bak
Vielleicht muss ich es tun (nicht verifiziert).
direnv
Ohne
python
$ wget -q https://storage.googleapis.com/golang/go1.4.linux-386.tar.gz
$ tar zxf go1.4.linux-amd64.tar.gz
$ mv go ../bin #Wo immer du willst
$ cd ../bin/go
$ export GOROOT=$PWD
$ cd go/bin
$ export PATH=$PWD:$PATH
Wenn GOROOT
nicht gesetzt ist, verursacht direnv
beim Kompilieren einen Fehler
python
$ git clone https://github.com/zimbatm/direnv
$ cd direnv
$ make install DESTDIR=/PATH/TO/DIR #Wo immer du willst
$ eval "$(direnv hook bash)"
python
$ cat /PATH/TO/.envrc
export FOOBAR=foobar
$ cd /PATH/TO
direnv: loading .envrc
direnv: export + FOOBAR
Ändern Sie die Eingabeaufforderung mit zsh
.envrc
export PROMPT='Qiime-1.8.0 $'
Ich möchte etwas tun, aber es interpretiert die Variablen in der Eingabeaufforderung nicht und es ist miserabel, wenn ich zu /
wechsle. Ist es nur meine Umgebung?
Ich möchte .envrc
nicht in /
einfügen,
Beschreiben Sie Folgendes in .bashrc
.bashrc
export PATH=${HOME}/.anyenv/bin:$PATH
eval "$(anyenv init -)"
eval "$(direnv hook bash)"
Es ist unnötig zu erwähnen, dass der Weg zu "anyenv", "direnv" vergehen soll.
Aktivieren und installieren Sie explizit nur in dieser Shell, z. B. mit der "pyenv-Shell"
Die einzelnen Befehle sind
python
$ ./configure --prefix=${HOME}/.anyenv/envs/pyenv/versions/qiime
Streben Sie nach Isolation durch
Durch "pyenv rehash" für "pyenv" werden einzelne Befehle (wie das installierte "ghc", das separat beschrieben wird) auch mit "$ {HOME} /. Anyenv / envs / pyenv / shims" synchronisiert.
python
$ cat ${PYENV_ROOT}/pyenv/shims/ghc
#!/usr/bin/env bash
set -e
[ -n "$PYENV_DEBUG" ] && set -x
program="${0##*/}"
if [ "$program" = "python" ]; then
for arg; do
case "$arg" in
-c* | -- ) break ;;
*/* )
if [ -f "$arg" ]; then
export PYENV_DIR="${arg%/*}"
break
fi
;;
esac
done
fi
export PYENV_ROOT="/PATH/TO/.anyenv/envs/pyenv"
exec "/PATH/TO/.anyenv/envs/pyenv/libexec/pyenv" exec "$program" "$@"
$ which ghc
~/.anyenv/envs/pyenv/shims/ghc
$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 6.8.3
$ pyenv shell 3.3.6
$ ghc --version
pyenv: ghc: command not found
The `ghc' command exists in these Python versions:
qiime
Gleiches galt für "plenv". Ob Sie es verwenden oder nicht
Mit der Funktion von direnv
Zum Beispiel nur das Verzeichnis, in dem Sie Qiime-1.8.0 verwenden möchten
python
$ cat /PATH/TO/DIR/.envrc
export PYENV_VERSION=qiime
export JENV_VERSION=1.6.0.33
$ direnv allow
Wenn Sie tun
python
$ pyenv versions
* system (set by PYENV_VERSION environment variable)
2.7.3
3.3.6
qiime
$ jenv versions
* system (set by JENV_VERSION environment variable)
1.5
1.5.0
1.6
1.6.0.33
1.7
1.7.0.71
(Weggelassen)
Aber
python
$ cd /PATH/TO/DIR
direnv: loading .envrc
direnv: export ~JENV_VERSION ~PYENV_VERSION
$ pyenv versions
system
2.7.3
3.3.6
* qiime (set by PYENV_VERSION environment variable)
$ jenv versions
system
1.5
1.5.0
1.6
* 1.6.0.33 (set by JENV_VERSION environment variable)
1.7
1.7.0.71
(Weggelassen)
Wechseln zu
Natürlich bleibt es im Nachkommenverzeichnis gültig
Externe Befehle werden ebenfalls richtig geschaltet. ex) blastall
python
$ which blastall
/home/XXXX/.anyenv/envs/pyenv/shims/blastall
$ blastall | head -2 | tail -1
blastall 2.2.26 arguments: # /usr/local/Version in bin
$ cd /PATH/TO/DIR
direnv: loading .envrc
direnv: export ~JENV_VERSION ~PYENV_VERSION
$ which blastall
/home/XXXX/.anyenv/envs/pyenv/shims/blastall
$ blastall | head -2 | tail -1
blastall 2.2.22 arguments: #Gewünschte Version
$ cd ../
$ direnv: unloading
$ blastall | head -2 | tail -1
blastall 2.2.26 arguments:
Das ist in Ordnung für den persönlichen Gebrauch, aber es gibt Fälle, in denen andere Personen auf dem Server es verwenden möchten. Selbst wenn jemand anderes das obige ".bashrc" so kopiert, wie es ist, funktioniert "anyenv" nicht ("direnv" funktioniert normalerweise als einzelne Einheit). Wenn sich diese "andere Person" auf einem Niveau befindet, auf dem sie "anyenv" oder "direnv" persönlich installieren und verwenden kann, wird sie damit umgehen, aber wenn nicht.
.bashrc
eval "$(anyenv init -)"
Speichern Sie das Ergebnis von "eval" $ (anyenv init-) "" separat und "source" in der ".bashrc" der Zielperson, anstatt es so wie es ist einzubetten.
Auf diese Weise verhält es sich wie erwartet.
Recommended Posts