UbuntuのAtomでソースを削除しようとすると
Is gvfs-trash installed ?
と表示されて削除できない。
- Ubuntu 19.10
- Atom 1.45.0
原因はマウントポイント毎にtrashディレクトリを作らなければいけないから。
ちなみにgvfs-trashはゴミ箱機能で、現在はgioに置き換わっている。
まずはgvfs自体がインストールされているか確認する。標準機能なので通常は入っているはず。
# apt search gvfs
万一入っていなければインストールする。
# sudo apt install gvfs
これでgvfsがインストールされ、/usr/bin/gvfs/gvfsd-trashが作成される。
ただ、/usr/bin/gvfs/gvfsd-trashは実際には使われておらず、gvfs-trashコマンドは以下のスクリプトでgioにすり替えられている。
/usr/bin/gvfs-trash
#!/bin/sh
replacement="gio trash"
help="gio help trash"#>&2 echo "This tool has been deprecated, use '$replacement' instead."
#>&2 echo "See '$help' for more info."
#>&2 echo#if [ "$1" = "--help" ] || [ "$1" = "-h" ]; then
# exec $help "$@:2"
#else
# exec $replacement "$@"
#fi/usr/bin/gio trash "$@"
バージョンによってスクリプトの位置は変わるかもしれないが、which gvfs-trashで検索することができる。
試しにホームディレクトリで適当なファイルを作ってgvfs-trashコマンドで削除すればゴミ箱に送られることを確認できるはずだ。
# cd
# touch a.txt
# gvfs-trash詳細な動作を見たければ以下のコマンドを使うとよい
# strace -e trace=file gvfs-trash a.txt
通常はこれでゴミ箱を使えるが、gvfs-trashはマウントしたディレクトリでは使えないという制約がある。(正確にはマウントポイントごとにゴミ箱ディレクトリを作る必要があるという仕様)
試しにatomで消せないファイルに対してgvfs-trashコマンドを使うと以下のエラーが表示されるはずだ。
# gvfs-trash test.css
gio: file:///var/local/user/rayfan/develop/html/css/test.css: Unable to find or create trash directory for /var/local/user/rayfan/develop/html/css/test.css
この場合はマウントポイントにTrush-<uid>フォルダを作って書き込み権限を与えればよい。
マウントポイントが/var/local/user/rayfan/developの場合は以下の様にする。
# mnt=/var/local/user/rayfan/develop
# id=$(id -u)
# sudo mkdir -p "$mnt/.Trash-$id"/{expunged,files,info}
# sudo chown -R $USER:$USER "$mnt/.Trash-$id"/
# sudo chmod -R o-rwx "$mnt/.Trash-$id"/
これでもう一度gvfs-trashを実行すればファイルが消せるようになる。
ここまでできればAtomから削除できるはず。