condaで環境構築・Linuxの場合

% bash ~/Miniconda2-latest-Linux-x86_64.sh -b -p $HOME/.miniconda2
% ln -s $HOME/.miniconda2 $HOME/.miniconda
% conda create --name myenv
% source activate myenv

環境設定はここに書く:

cd $CONDA_PREFIX
mkdir -p ./etc/conda/activate.d
mkdir -p ./etc/conda/deactivate.d
touch ./etc/conda/activate.d/env_vars.sh
touch ./etc/conda/deactivate.d/env_vars.sh

Bash completionをzshで使いたい場合は、$CONDA_PREFIX/etc/conda/activate.d/env_vars.shに以下の行を加える。

autoload bashcompinit
bashcompinit

コンパイラもcondaで入れたいなら、

% conda install gcc_linux-64 gxx_linux-64 gfortran_linux-64

$CONDA_PREFIX/etc/conda/activate.d以下にactivate-gcc_linux-64.shなどのbashスクリプトが入る。それが環境変数CCなどを設定する。gccといった実行可能バイナリもしくはそのリンクは作られないので、このbashスクリプトが重要。zshではbashスクリプトを適当な場所に移動して、以下のようにエミュレートして読み込むようにする。

emulate sh -c 'source $CONDA_PREFIX/etc/conda/activate.d/bash/activate-binutils_linux-64.sh'
emulate sh -c 'source $CONDA_PREFIX/etc/conda/activate.d/bash/activate-gcc_linux-64.sh'
emulate sh -c 'source $CONDA_PREFIX/etc/conda/activate.d/bash/activate-gxx_linux-64.sh'
emulate sh -c 'source $CONDA_PREFIX/etc/conda/activate.d/bash/activate-gfortran_linux-64.sh'

プロンプトのホスト名がx86_64-conda_cos6-linux-gnuになるので、元に戻すために以下の行を$CONDA_PREFIX/etc/conda/activate.d/env_vars.sh$CONDA_PREFIX/etc/conda/deactivate.d/env_vars.shに追加。

export HOST=`hostname`

他に、cmake, eigen, boost, openblasもcondaで入る。(Macの場合はopenblasはconda-forgeから入れると良い(2018年10月12日現在)。)

condaで環境構築・Macの場合

gcc, gxxの代わりにそれぞれclang, clang++を使うことになる。fortranは共にgfortran。以下参照。

% conda install clang_osx-64 clangxx_osx-64 gfortran_osx-64 llvm-openmp

OpenMPを使う場合はllvm-openmpが必要。

$CONDA_PREFIX/etc/conda/activate.d/env_vars.shの設定をまとめると、

autoload bashcompinit
bashcompinit

export PATH=$CONDA_PREFIX/bin:/Users/togo/code/rtags/bin:$PATH
export LD_LIBRARY_PATH=$CONDA_PREFIX/lib:$LD_LIBRARY_PATH
export C_INCLUDE_PATH=$CONDA_PREFIX/include
export LIBRARY_PATH=$CONDA_PREFIX/lib

emulate sh -c 'source $CONDA_PREFIX/etc/conda/activate.d/bash/activate-gfortran_osx-64.sh'
emulate sh -c 'source $CONDA_PREFIX/etc/conda/activate.d/bash/activate_clangxx_osx-64.sh'
emulate sh -c 'source $CONDA_PREFIX/etc/conda/activate.d/bash/activate_clang_osx-64.sh'
export HOST=`hostname`

condaによるpostgresqlのインストールと起動

% conda install postgresql
% initdb -D /path/to/postgresql-prefix
% pg_ctl -D /path/to/postgresql-prefix start
% createuser -P password username
% createdb -O owner dbname
% psql dbname
dbname=# GRANT ALL PRIVILEGES ON DATABASE dbname to username;

elpy, flycheck, irony, company-modeなどなどのインストール

emacsのpackage-installから。 パッケージ名は[elpy, flycheck, irony, company, company-irony, company-irony-c-hedears, smartrep, py-yapf]

elpyの導入

個人的な Python 用の Emacs の設定 | org-技術

Emacs – The Best Python Editor? – Real Python

elpyの設定メモ - ししちにじゅうはち 4x7=28

pip install flake8 importmagic yapf

M-x elpy-configでインストールしたパッケージが正しくelpyに読み込まれているか確認する必要がある。Macのアイコンから起動するemacsでは、shellの設定が読み込まれない。これはexec-path-from-shellパッケージをインストールして.emacs内でinitializeすることで詠みこまれるようになる。

M-x package-refresh-contents
M-x package-install exec-path-from-shell
(exec-path-from-shell-initialize)

company-ironyの導入

M-x irony-install-server RET

を忘れずに。

rtags

インストールはここに書いているように行う

rtagsをmakeする環境としてcmakeとllvmが必要。ない場合は次のようにインストールする。

% conda install cmake
% brew install llvm

emacsでrtagsとflycheck-rtagsをpackage-installする。そして、以下のstep-by-step ...のemacs lispをコピペしたら動いた!

参考

flycheck c++ 11の設定

その他 emacs 設定

Emacsの設定 - nobUnagaの日記

自動改行をする/しない

(c-toggle-auto-newline 1)

homebrew (macOS Mojave)

brew install wget
brew install gcc@6
brew install tmux
brew install coreutils
brew install gnu-tar
brew install imagemagick
brew install aspell
brew cask install iterm2
brew cask install osxfuse
brew install sshfs
brew cask install emacs
brew cask install xquartz
brew options gnuplot
brew install gnuplot --with-x11 --with-cairo --with-wxmac
brew install llvm
brew cask install skim
export PATH=/usr/local/bin:$PATH

Emacsでのaspellの設定

(setq ispell-program-name "/usr/local/bin/aspell")
(setq ispell-list-command "--list")

tmux内からopen(macOS)を使う

brew update
brew install reattach-to-user-namespace
brew upgrade reattach-to-user-namespace
echo "set -g default-command \"reattach-to-user-namespace -l ${SHELL}\"" >> ~/.tmux.conf

Unable to use 'open' command in OSX tmux

macOS(High Sierra, Mohave)でcondaとhomebrewのlibgompが衝突

condaで主な環境を構築しているものの、gccはhomebrewを使っている。最近のアップデートのせいか、このgccとcondaのlibgompが非互換なため、実行時にコケてしまうようになった。つまり-lgompでリンクすると、どうしてもcondaのlibgompを読んでしまう。/usr/local/opt/gcc@6/lib/gcc/6/libgomp.aといった静的ライブラリをリンクすることで問題を回避した。

macOS Mojaveでフォントがぼんやりする

MacOS Mojaveにアップデートしたところ、外部ディスプレイで画面がぼんやりするので仕事にならない。以下のリンクの「呪文を唱えて、ログアウト、ログインせよ」に従い前の感じに戻った。ありがとう。

このページの筆者は「アップルによるアップデートでこれは修正されるだろう」と書いている。

macOS Mojaveでgitが使えない

xcode-select --installせよとのこと。

KVM使い方(Ubuntu 16.04)

virt-installVMの作成、virshでVMの管理ができる。

KVMのインストール
sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils virtinst
ブリッジネットワークデバイスの作成と物理ネットワークデバイスとの関連付け

ホストと同じネットワークの固定IPをふるためにはブリッジを作る必要があるらしい。

auto eth0
iface eth0 inet manual

iface br0 inet static
address 192.168.1.xxx
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers xxx.xxx.xxx.xxx
bridge_ports eth0
bridge_stp off
auto br0

ネットワークの再起動後、仮想ブリッジの確認

% brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.6805ca2f9aab	no		eth0
virbr0		8000.5254006ccac0	yes		virbr0-nic

/etc/sysctl.confで

net.ipv4.ip_forward=1

として、再起動(再起動したほうがいいと思う)。Ubuntu 16.04 desktopではこれを設定しないとホスト・ゲスト間でしたコミュニケーションができない。同serverではこれは設定していなくても動いている。謎。

VM作成

vncで接続できる状態でのインストール。Ubuntu16.04サーバのインストールCDイメージ(ubuntu-16.04.5-server-amd64.iso)がカレントディレクトリにあることを想定。

% sudo virt-install --name vmname --memory 4096 \
--disk size=50 --vcpus 1 --os-type linux \
--os-variant ubuntu16.04 --network bridge=br0 --noautoconsole \
--cdrom ubuntu-16.04.5-server-amd64.iso \
--graphics vnc,listen=0.0.0.0,password=vnc

size=30は30GB。環境設定の書かれたファイルは

/etc/libvirt/qemu/vmname.xml

に作成される。

Ubuntuのインストール

UbuntuのインストールはVNCを設定したならVNC経由で行える。KVMVNCの使い方は下の通り。

KVMVNC

一つ目のVMvncのデフォルトポートは5900。パスワードは次のコマンドで確認できる。

% virsh edit vmname

以下のような感じでpasswdが設定されている。

<graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0' passwd='hoge'/>

二つ目以降順次5901, 5902となっていく模様。5900 + xのxは次のコマンドで確認できる。

% virsh vncdisplay vmname
:1

の場合、5901がポート番号。MacOSの場合、Finder->Go->Connect to serverから

vnc://hostmachine:5901

のようにして接続できる。

KVMメモリサイズ変更

% virsh edit mydata

VirshコマンドによるKVMゲストOSの管理

仮想マシンがものすごく遅い。

virsh edit vmnameで一番最初の行がこうなっているか確認。

<domain type='kvm'>

ものすごく遅い仮想マシンではこうなっていた。

<domain type='qemu'>

kvmに書き換えて仮想マシンを起動しようとすると、Check that virtualization is enabled in the host BIOS、というメッセージがでた。そういうことなのか。

VirtualboxからKVMへの移行

参考http://qiita.com/BexPolar/items/5d9189573e6900be0069

qemu-img convert -O raw vmname.vdi vmname.img
% sudo virt-install \
--name vmname \ 
--ram 1024 \
--disk path=/var/lib/libvirt/images/vmname.img,bus=sata,format=raw \
--vcpus 1 \
--os-type linux \
--os-variant ubuntutrusty \
--network bridge=br0 \
--noautoconsole \
--graphics vnc,listen=0.0.0.0,password=vnc \
--import