結論
/usr/include
配下のディレクトリのパーミッションが全て 744 になっていたため、コンパイルが通らなかった。
対応策
以下のように愚直に対応し、正しくインストール(コンパイル)することができた。
$ sudo chmod 755 asm-generic && sudo chmod 755 caja-sendto && sudo chmod 755 btrfs && sudo chmod 755 X11 && sudo chmod 755 drm && sudo chmod 755 gstreamer-0.10 && sudo chmod 755 misc && sudo chmod 755 mtd && sudo chmod 755 openvpn && sudo chmod 755 python2.7 && sudo chmod 755 python3.5m && sudo chmod 755 rdma && sudo chmod 755 readline && sudo chmod 755 reglib && sudo chmod 755 ruby-2.3.0 && sudo chmod 755 scsi && sudo chmod 755 sound && sudo chmod 755 uapi && sudo chmod 755 video && sudo chmod 755 xen && sudo chmod 755 xfs && sudo chmod 755 xorg && sudo chmod 755 x86_64-linux-gnu && sudo chmod 755 linux
$ pyenv install 3.6.4 Downloading Python-3.6.4.tar.xz... -> https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz Installing Python-3.6.4... Installed Python-3.6.4 to /home/your_name/.pyenv/versions/3.6.4
経緯
別マシンではスムーズに行えた pyenv による Python のインストールがコケた。エラーログを見て、スムーズにインストールできたマシンと比較したところ「結論」のような状況だと分かった。root で pyenv して試してみたら問題なかったことが決め手となった。
エラーメッセージ
エラーメッセージは以下のようなものでした。
configure: error: C compiler cannot create executables cc1: fatal error: /usr/include/x86_64-linux-gnu/stdc-predef.h: Permission denied
configure: error: C preprocessor "/lib/cpp" fails sanity check /usr/include/x86_64-linux-gnu/bits/local_lim.h:38:26: fatal error: /usr/include/linux/limits.h: Permission denied
Makefile:1587: ターゲット 'Parser/acceler.o' のレシピで失敗しました make: *** [Parser/acceler.o] エラー 1 make: *** 未完了のジョブを待っています.... Makefile:1587: ターゲット 'Parser/listnode.o' のレシピで失敗しました make: *** [Parser/listnode.o] エラー 1 Makefile:763: ターゲット 'Programs/python.o' のレシピで失敗しました make: *** [Programs/python.o] エラー 1 Makefile:1587: ターゲット 'Parser/grammar1.o' のレシピで失敗しました make: *** [Parser/grammar1.o] エラー 1 /usr/include/asm-generic/types.h: Permission denied
こうなった理由
わからない……。
今回 pyenv で起きたことではありますが、もちろんたまたま pyenv だっただけで pyenv に限って起こることではないです。