備忘録やめた

備忘録として使用していたけどやめた.このブログに載せてあるコードのライセンスは別途記載がない限りWTFPL OR NYSLです.

PYTHON_TARGETSのバージョンはさっさと上げよう

トラブル概要

VimのUltiSnipsが突然エラーを吐き出した.文字を挿入しようとする毎に,UltiSnips#TrackChange関数が存在しない旨のエラーを大量に流してきた.

調査した内容

github.com

  • 公式のバグ再現ガイドに従って,Docker内でバグの再現を試みた→エラーを吐き出さなかった
  • UltiSnips TrackChangeなどで検索した→関連情報は出てこなかった.
  • .vimrcのバックアップを取り,vim-plugの最低限の関数呼び出しと,UltiSnipsに関する設定だけを残し,ほかを全部消去した.→Python3.7に関するライブラリが読み込めないというエラーが表示された.
  • VimのUSEフラグを確かめた→VimがPython3.6でコンパイルされていた.

解決策

/etc/portage/make.confに以下の設定をした.

PYTHON_TARGETS="python2_7 python3_7"
PYTHON_SINGLE_TARGET="python3_7"

そして@worldのemergeを試みた.

sudo emerge --ask --verbose --tree --update --deep --newuse --keep-going --with-bdeps=y @world

なおこのコマンド中には,Pythonのアップグレードには必要ないオプションがいくつかついているが,スクリプトとして保存してあったため,そのまま実行した.

そしてまた問題発生

Vimコンパイル中,最後のリンクに失敗した.原因は,Python3.8が既にインストールされているため,Vimは3.8がPythonの最新バージョンと認識したが,VimのUSEフラグはPython3.7を指定したため,正常にPython3.7でコンパイルできなかった.

解決策

まずPython3.8をアンインストールした.

sudo emerge -cav "=dev-lang/python-3.8.0"

そして@worldのemergeをした.最後にPython3.8をインストールした.

反省

make.confPYTHON_TARGETSPYTHON_SINGLE_TARGETSはしっかり書こう.

そもそもこの問題が発生するまでPYTHON_TARGETSの項が/etc/portage/make.confに記載されていなかった.

まず自分を疑おう

xn--97-273ae6a4irb6e2hsoiozc2g4b8082p.com まさにこれ.