ubuntu のAtomでファイルの削除が出来ない

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から削除できるはず。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です