立ち上がった問題
webサーバーでAPIを使ってみたい
↓
GCPのVMインスタンスが放置されてるので、それにNginxを入れてみよう
↓
pipを入れる→詰まる
(確かここでpythonのバージョンが低い、というエラーが出た)
↓
pyenvでpythonをアップデートしようとする→詰まる
#解決した問題
-
aptを他のプロセスが使っているよ!というエラー
-
$ sudo apt autoremove
-
pyenvが無いよ!と言われたので、
インストールしてみると、pyenvの設定ファイルがあるよ!と言われた。 -
パスが通ってなかった。
参考にしたサイト
「PythonかければWebアプリぐらい作れる」
https://qiita.com/cabernet_rock/items/852fc7c5d382fdc422a3
「GCPのCloud Shellのpythonバージョンの更新方法」
https://qiita.com/greenteabiscuit/items/cbecdf4f84f0b73ff96e
「ubuntu 20.04 に pyenv をインストールする話【2020/07/18更新】」
https://qiita.com/neruoneru/items/1107bcdca7fa43de673d
#環境
Ubuntu 16.04.7 LTS (GNU/Linux 4.15.0-1080-gcp x86_64)
#実際に行った手順
$ pip
The program 'pip' is currently not installed. To run 'pip' please ask your administrator to install the package 'python-pip'
$ sudo apt-get update
$ sudo apt install python-pip
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
エラー発生。
どうもよくあるエラーらしい。ほかのプロセスが使ってるんじゃないの?とのこと。
$ rm -rf ~/.pyenv
上手くいかなかった。というかここで消してるはずなのにあとで出てきてないか?
$ ps aux | grep apt | grep -v 'grep'
root 2035 0.0 0.1 4504 708 ? Ss 11:37 0:00 /bin/sh /usr/lib/apt/apt.systemd.daily install
root 2050 0.0 0.2 4504 1684 ? S 11:37 0:00 /bin/sh /usr/lib/apt/apt.systemd.daily lock_is_hel
d install
root 2610 0.7 3.1 39640 18884 pts/1 Ss+ 11:39 0:00 /usr/bin/dpkg --status-fd 12 --unpack --auto-decon
figure /var/cache/apt/archives/libx11-data_2%3a1.6.3-1ubuntu2.2_all.deb
調べたら出てきた方法だけど、kill PID と言われてもどれがPIDか分からない。
$ sudo apt autoremove
これで行けた。
よく分からんけど上手い事忖度して余計なものを消してくれたのだろう。
#pyenvのインストール
$ sudo apt-get install -y git
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
fatal: destination path '/home/【user名】/.pyenv' already exists and is not an empty directory.
どうもインストールはできているようなので、パスが通っていないのでは?と推測。
参考にしたサイトでは、以下のコマンドでパスを通しているはず。
# add to path
echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
他のサイトを参照すると、
# .bashrcの更新
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc
となっている。足りない部分を詠唱する。
$ source ~/.bashrc
$ pyenv -v
pyenv 1.2.21
出来たー!
#その後
早速pythonをアップデートしよう。
$ pyenv install 3.7.4
Downloading Python-3.7.4.tar.xz...
-> https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tar.xz
Installing Python-3.7.4...
BUILD FAILED (Ubuntu 16.04 using python-build 1.2.21)
Inspect or clean up the working tree at /tmp/python-build.20201015120257.27370
Results logged to /tmp/python-build.20201015120257.27370.log
Last 10 log lines:
sys.exit(ensurepip._main())
File "/tmp/python-build.20201015120257.27370/Python-3.7.4/Lib/ensurepip/__init__.py", line 204, in _main
default_pip=args.default_pip,
File "/tmp/python-build.20201015120257.27370/Python-3.7.4/Lib/ensurepip/__init__.py", line 117, in _bootstrap
return _run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
File "/tmp/python-build.20201015120257.27370/Python-3.7.4/Lib/ensurepip/__init__.py", line 27, in _run_pip
import pip._internal
zipimport.ZipImportError: can't decompress data; zlib not available
Makefile:1132: recipe for target 'install' failed
make: *** [install] Error 1
なんかまた新しいエラー出てきた…
とりあえず一歩進んだので、ここまでにする。