pyenv/pyenv-virtualenv環境を構築する

必要なパッケージのインストール

pyenvはpythonをダウンロードしてきてコンパイルするけど、その際に必要となるパッケージを入れておく。Fedora以外はこちらを参照。

dnf install -y gcc zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel tk-devel xz

pyenvとpyenv-virtualenvのインストール

pyenv開発者がpyenv installerを公開しているのでそれを利用してインストールする。このインストーラがpyenv-virtualenvまで入れてくれるからラクチン。

$ curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
....
<snip>
...
WARNING: seems you still have not added 'pyenv' to the load path.

# Load pyenv automatically by adding
# the following to ~/.bash_profile:

export PATH="/home/hoge/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

ということなので、.bashrcに下記を追加しておく。

export PATH="/home/hoge/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

pythonのバージョンをインストールしてみる

インストール可能なバージョンを確認

$ pyenv install --list
...
3.6.4
...

特定バージョンのpythonをインストールする

$ python install 3.6.4
$ pyenv versions
* system (set by /home/hoge/.pyenv/version)
  3.6.4

新しい環境を作成してみる

システムのpythonのバージョンの確認

fedora 27のpythonのバージョンは2.7.14

$ python --version
Python 2.7.14

/home/hoge/hoge以下に3.6.4環境を作成してみる

$ cd /home/hoge/hoge
$ pyenv virtulenv 3.6.4 my_3.6.4
$ pyenv local my_3.6.4
$ python --version
Python 3.6.4
$ cd ..
$ python --version
Python 2.7.14

ということで、/home/hoge/hoge以下だけ3.6.4を使う環境をつくれた

起動失敗してgrubプロンプト(grub >)が出た場合の対処

調べるのが面倒なので、メモを残しておく。

1. パーティションの確認

grub> ls
(hd0) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1)

2. パーティションの中身の確認

grub> ls (hd0,msdos2)/
bin/ boot/ dev/ ....
grub> cat (hd0,msdos2)/etc/redhat-releases
Fedora release 27 (Twenty Seven)
grub> ls (hd0,msdos)/boot/
.... initramfs-4.14-11-300.fc27.x86_64.img .... vmlinuz-4.14.11-300.fc27.x86_64 ...

3. 起動

grub> set root=(hd0,msdos2)
grub> linux /boot/vmlinux-4.14.11-300.fc27.x86_64 root=/dev/sda2
grub> initrd /boot/initramfs-4.14.11-300.fc27.x86_64.img
grub> boot

4 (必要に応じて) grubの再インストール

# grub2-install /dev/sda

5 (必要に応じて) ファイルシステムの復旧

今回はxfsが壊れていたので下記コマンドを実行。

# xfs_repair /dev/sda2

参考

Linux 上の GRUB 2 がブートできなくなったときの対処方法 24.7. GRUB 2 の再インストール - Red Hat Customer Portal

psコマンドでプロセスの親子関係を表示する

今までps aux使ってたけど、f付けるだけで分かり易くなるの知らなかった。

$ ps auxf

​USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
​...

hoge 1981 0.0 0.1 534500 53764 tty2 S+ 23:19 0:00 \_ /opt/google/chrome/chrome --type=zygote
hoge 1982 0.0 0.0 148140 13112 tty2 S+ 23:19 0:00 | \_ /opt/google/chrome/nacl_helper
hoge 1985 0.0 0.0 534500 12308 tty2 S+ 23:19 0:00 | \_ /opt/google/chrome/chrome --type=zygote
hoge 2163 0.0 0.2 991548 83072 tty2 Sl+ 23:19 0:00 | \_ /opt/google/chrome/chrome --type=renderer --field-trial-handle=1715498460

...