変更記録
2018.8.22 設定がすべて完了するまでのプロセスを記述するためpyenvのシェル変数へのPATHの通し方を追記
概要
- Ubuntu 18.04でpyenvを使ってpython3.6.6をインストールしようとしたところエラーが発生した
- エラーメッセージにzlibが無いとのことだったのでこれをsudo apt-get install zlib1g-devでインストールした
- Python3.6.6を無事にインストールできた
環境
Ubuntu 18.04.1 LTS
何をしたか
「PyenvによるPython3.x環境構築(CentOS, Ubuntu)」
https://qiita.com/akito1986/items/be5dcd1a502aaf22010b
の記事を参考に、以下のコマンドを実行(参考記事の環境にUbuntu14.04と書いてあったのを気にすればよかったとあとで思った... )
途中でエラーが発生したため解決した。以下で手順を説明
必要なファイルのインストール
(結論から言うとこれに足りないライブラリがあった)
$ sudo apt-get install git gcc make openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev
pyenvをgithubからインストール
$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
pyenvのPathをbashrcを介して通す
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
$ source ~/.bashrc
visudoでsudo時にも同じPathを使用するよう設定
詳細はsudo時にPATHを引き継ぐ方法
を参照すると良い
sudo visudo
を実行するとnanoで権限に関する重要なsudoresファイルを編集するモードになる。この中で以下のように書き換えた。
#Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
Defaults env_keep += "PATH"
Defaults env_keep += "PYENV_ROOT"
#はコメントアウトを表す。何もしていなければ1行目に該当する部分がコメントアウトされずに存在しているのでこれをコメントアウトし2・3行目を追加した。
ctrl+Oで保存、ctrl+Xで終了。(nanoでの操作に慣れていないためググった)
pythonインストールを試みる
sudo pyenv install 3.6.6
エラー発生
$ sudo pyenv install 3.6.6
Downloading Python-3.6.6.tar.xz...
-> https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tar.xz
Installing Python-3.6.6...
BUILD FAILED (Ubuntu 18.04 using python-build 1.2.7-1-g71902168)
Inspect or clean up the working tree at /tmp/python-build.20180822214932.20950
Results logged to /tmp/python-build.20180822214932.20950.log
Last 10 log lines:
sys.exit(ensurepip._main())
File "/tmp/python-build.20180822214932.20950/Python-3.6.6/Lib/ensurepip/__init__.py", line 204, in _main
default_pip=args.default_pip,
File "/tmp/python-build.20180822214932.20950/Python-3.6.6/Lib/ensurepip/__init__.py", line 117, in _bootstrap
return _run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
File "/tmp/python-build.20180822214932.20950/Python-3.6.6/Lib/ensurepip/__init__.py", line 27, in _run_pip
import pip._internal
zipimport.ZipImportError: can't decompress data; zlib not available
Makefile:1103: recipe for target 'install' failed
make: *** [install] Error 1
エラーメッセージ中に
zipimport.ZipImportError: can't decompress data; zlib not available
Makefile:1103: recipe for target 'install' failed
とあったのでこれをインストール
sudo apt-get install zlib1g-dev
そして再度
sudo pyenv install 3.6.6
にて無事にインストールができた。
あとはpyenvの使い方に従ってglobalで3.6.6が効くようにしたり自分好みに設定すると良い。