tl;dr
$ conda uninstall glib
で治る。ついでにseaborn
がuninstallされるばあいは、
$ pip install seaborn
でpipから拾うようにする。
解説
xdg-open(1)
の実態は、デスクトップ環境を識別してその環境で適切なデフォルトアプリケーションを開く、ワークアラウンドの塊のようなシェルスクリプトである。
GNOME、MATE、XfceなどGTK系のデスクトップでは内部でgio
コマンドを経由しているが、何者か(condaパッケージ)がgio
を$PATH
に配置しているようであり、このconda仮想環境のgio
が適切にデスクトップアプリケーションを選択できていないのが原因である。
bin/gio
の由来を調べると、
$ cd ~/.miniconda3/pkgs
$ grep bin/gio -R .
grep: ./python-3.8.5-h7579374_1/compiler_compat/ld: No such file or directory
./glib-2.66.1-h680cd38_0/info/has_prefix:/home/conda/feedstock_root/build_artifacts/glib_1601587225743/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeh binary bin/gio
./glib-2.66.1-h680cd38_0/info/files:bin/gio
./glib-2.66.1-h680cd38_0/info/files:bin/gio-querymodules
./glib-2.66.1-h680cd38_0/info/paths.json: "_path": "bin/gio",
./glib-2.66.1-h680cd38_0/info/paths.json: "_path": "bin/gio-querymodules",
grep: ./libopencv-4.5.0-py38_3/include/libpng: No such file or directory
grep: ./python-3.8.3-cpython_he5300dc_0/compiler_compat/ld: No such file or directory
grep: ./python-3.8.8-hffdb5ce_0_cpython/compiler_compat/ld: No such file or directory
grep: ./_openmp_mutex-4.5-1_llvm/lib/libgomp.so.1: No such file or directory
./glib-2.56.2-hd408876_0/info/has_prefix:/tmp/build/80754af9/glib_1535475653755/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold binary bin/gio
./glib-2.56.2-hd408876_0/info/files:bin/gio
./glib-2.56.2-hd408876_0/info/files:bin/gio-querymodules
./glib-2.56.2-hd408876_0/info/paths.json: "_path": "bin/gio",
./glib-2.56.2-hd408876_0/info/paths.json: "_path": "bin/gio-querymodules",
どうやらglib
がbin/gio
を配っているようだ。なので、
$ conda uninstall glib
で症状は治る。
ただしこのとき、自分の環境ではseaborn
が削除されて、jedi
が0.18
→0.17
、parso
が0.7
→0.8
になった。jedi
の方はconda -c anaconda jedi
でglib
を混ぜずに再度0.18
に戻すことができた(なんでかは知らん)。
そしてそもそもglib
を連れてきたのはseaborn
のcondaパッケージのようなので、代わりにpip経由から取るようにすればいい。
$ pip install seaborn
でOK。ちなみにこのseaborn
のcondaパッケージだが、glib
だけでなくqt
にも依存しているので、環境との不整合を嫌うなら常にpipから使うようにしたほうが無難かもしれない。