MacFUSE をアンインストールする方法(Mac OS X 10.7.5 Lion)

  • このエントリーをはてなブックマークに追加
exit

FUSE for OS X(OSXFUSE)を使ってみようかと調べていたら、MacFUSE とコンフリクトするらしかったので、まずは、昔、VMware Fusion と一緒にインストールした(と思う(記憶が薄れすぎている・・))MacFUSE をアンインストールしておこうと思い立ちました。MacFUSE はGoogleの開発も止まってバージョンアップも行われていないので、この際、過去の遺物を整理するのにもちょうど良い機会かなと。

ところでですが、MacFUSE をアンインストールすることによって、VMware Fusion の使用に何か支障を来すのではないだろうか? という懸念もあるようでしたので、そちらのほうに関しても調べてみましたが、公式サイトの Knowledge Base を読んでみた感じでは、自分が使っているバージョン(VMware Fusion 6)では、既に MacFUSE の機能を利用していないらしいので、特に心配する必要はなさそうです。

参照サイトより:
This process requires the MacFUSE file system program. MacFUSE is no longer maintained and as a result VMDKmounter is not included in later versions of Fusion.
This process is valid for Mac OS X 10.5 and 10.6 only.
Note: If you originally installed Fusion while using OS X 10.5, you should have MacFUSE installed. If you originally installed Fusion while using OS X 10.6, you likely do not have MacFUSE installed. This article explains how to obtain a copy.

 

MacFUSE が残っているかどうか 確認する方法

MacFUSE はシステム環境設定にメニューがあって、そのメニューを削除しただけで、アンインストールできたと勘違いしている人も少なからずいらっしゃるかと思います。
MacFUSE が今現在、インストールされているかどうか? を確認したい場合には、Terminalを起動して、関連ディレクトリをチェックしてみると良いです。

$ ls -l /Library/Filesystems/fusefs.fs/Support
total 192
lrwxr-xr-x 1 root wheel 81 Oct 22 2011 autoinstall-macfuse-core -> /Library/PreferencePanes/MacFUSE.prefPane/Contents/MacOS/autoinstall-macfuse-core
drwxr-xr-x 3 root wheel 102 Dec 20 2008 fusefs.kext
-rwsr-xr-x 1 root wheel 29088 Dec 20 2008 load_fusefs
-rwxr-xr-x 1 root wheel 51272 Dec 20 2008 mount_fusefs
-rwxr-xr-x 1 root wheel 6543 Dec 4 2008 uninstall-macfuse-core.sh

こんなふうに、表示されるようであれば、まだアンインストールされていない証拠です。

 

画面(GUI)からのアンインストールができない

本来、MacFUSE はシステム環境設定からアンインストールできる機能が実装されているのですが、今はもう反応しません。(厳密には Snow Leopard までは動いていたはずですが。原因は後述に回します。)

MacFUSE_uninstall_00

MacFUSE_uninstall_01

MacFUSE_uninstall_02

この画面の「Remove MacFUSE」ボタンを押下しても、反応しない。

 

開発元の公式サイトに記載されている方法(Terminal でスクリプトを実行)ではエラーになる

Google の MacFUSE 公式サイト(https://code.google.com/p/macfuse/wiki/FAQ)に記載されているアンインストール方法を実行してみると、

$ sudo /Library/Filesystems/fusefs.fs/Support/uninstall-macfuse-core.sh
MacFUSE Uninstaller: Can not find the Archive.bom for MacFUSE Core package.

と、エラーメッセージが表示されて、アンインストールが失敗します。

 

アンインストール スクリプトがエラーになる原因

せっかくなので、 uninstall-macfuse-core.sh の内容を確認してみましょう。

 

$ cat /Library/Filesystems/fusefs.fs/Support/uninstall-macfuse-core.sh
#!/bin/sh
#
# Copyright (C) 2006 Google. All Rights Reserved.
#
# Uninstalls the “MacFUSE Core.pkg”.

INSTALL_VOLUME=”/”

LOG_SYSLOG=1
LOG_STDOUT=1
function log() {
local msg=”$1″
if [ $LOG_SYSLOG -eq 1 ]
then
syslog -l Notice -s “MacFUSE Uninstaller: $msg”
fi
if [ $LOG_STDOUT -eq 1 ]
then
echo “MacFUSE Uninstaller: $msg”
fi
}

# Check to make sure that operations (such as rm, rmdir) are relatively
# safe. This should only allow operations throught that would operate on
# stuff installed by MacFUSE.
#
# Ret: 1 (true) if the prefix is ok to use, otherwise 0 (false).
function is_safe_prefix() {
local path=”$1″
case “$path” in
“$INSTALL_VOLUME”/./usr/local/lib/pkgconfig)
# We don’t try to remove the pkgconfig directory.
return 0;
;;
“$INSTALL_VOLUME”/./usr/local/bin/* | ¥
“$INSTALL_VOLUME”/./usr/local/lib/* | ¥
“$INSTALL_VOLUME”/./usr/local/include/* | ¥
“$INSTALL_VOLUME”/./Library/Extensions/fusefs.kext | ¥
“$INSTALL_VOLUME”/./Library/Extensions/fusefs.kext/* | ¥
“$INSTALL_VOLUME”/./Library/Filesystems/fusefs.fs | ¥
“$INSTALL_VOLUME”/./Library/Filesystems/fusefs.fs/* | ¥
“$INSTALL_VOLUME”/./Library/Frameworks/MacFUSE.framework | ¥
“$INSTALL_VOLUME”/./Library/Frameworks/MacFUSE.framework/* | ¥
“$INSTALL_VOLUME”/./Library/Application¥ Support/Developer/Shared/Xcode/Project¥ Templates/* | ¥
“$INSTALL_VOLUME”/Library/Receipts/MacFUSE.pkg | ¥
“$INSTALL_VOLUME”/Library/Receipts/MacFUSE.pkg/* | ¥
“$INSTALL_VOLUME”/Library/Receipts/MacFUSE¥ Core.pkg | ¥
“$INSTALL_VOLUME”/Library/Receipts/MacFUSE¥ Core.pkg/*)
# These are all ok to process.
return 1;
;;
esac

return 0; # Not allowed!
}

# Remove the given file if it seems “safe” to do so.
function remove_file() {
local path=”$1″
is_safe_prefix “$path”
local allow=$?
if [ $allow -ne 1 ]
then
# We ignore this file, which is fine.
log “Ignoring file ‘$path'”
return 0;
fi

if [ ¥( ! -e “$path” ¥) -a ¥( ! -L “$path” ¥) ]
then
# No longer exists
log “Skipping file: ‘$path’ since it no longer exists.”
return 0;
fi

if [ ¥( ! -f “$path” ¥) -a ¥( ! -L “$path” ¥) ]
then
# This is no longer a file?
log “Skipping file: ‘$path’ since it is no longer a file or symlink?”
return 1;
fi

log “Removing file: ‘$path'”
rm -f “$path”
}

# Remove the given directory if it seems “safe” to do so. This will only remove
# empty directories.
function remove_dir() {
local path=”$1″
is_safe_prefix “$path”
local allow=$?
if [ $allow -ne 1 ]
then
# We ignore this directory.
log “Ignoring dir: ‘$path'”
return 0;
fi

if [ ! -e “$path” ]
then
# No longer exists
log “Skipping dir: ‘$path’ since it no longer exists.”
return 0;
fi

if [ ! -d “$path” ]
then
# Not a directory?
log “Skipping dir: ‘$path’ since it is either gone or no longer a dir.”
return 1;
fi

log “Removing dir: ‘$path'”
rmdir “$path”
}

# Forcefully remove the given directory tree. This is “rm -rf”, so use this routine with caution!
function remove_tree() {
local path=”$1″
is_safe_prefix “$path”
local allow=$?
if [ $allow -ne 1 ]
then
# We ignore this tree.
log “Ignoring tree: ‘$path'”
return 0;
fi

if [ ! -e “$path” ]
then
# No longer exists
log “Skipping tree: ‘$path’ since it no longer exists.”
return 0;
fi

if [ ! -d “$path” ]
then
# Not a directory?
log “Skipping tree: ‘$path’ since it is not a directory.”
return 1;
fi

log “Removing tree: ‘$path'”
rm -rf “$path”
}

### MAIN

# Set to 1 if at any point it looks like the uninstall did not proceed
# smoothly. If IS_BOTCHED_UNINSTALL then we don’t remove the Receipt.
IS_BOTCHED_UNINSTALL=0

# Do they want quiet mode?
if [ “$1” = “-q” ]
then
LOG_STDOUT=0
fi

# Make sure this script runs as root
if [ “$EUID” -ne 0 ]
then
log “Sudoing…”
sudo $0 “$@”
exit $?
fi

OS_RELEASE=`/usr/bin/uname -r`
case “$OS_RELEASE” in
8*)
log “Incorrect uninstall. Use the Tiger version please.”
exit 1
;;
9*)
PACKAGE_RECEIPT=”$INSTALL_VOLUME/Library/Receipts/MacFUSE Core.pkg”
OUTER_PACKAGE_RECEIPT=”$INSTALL_VOLUME/Library/Receipts/MacFUSE.pkg”
BOMFILE=”$PACKAGE_RECEIPT/Contents/Archive.bom”
;;
10*)
PACKAGE_RECEIPT=””
BOMFILE=”$INSTALL_VOLUME/var/db/receipts/com.google.macfuse.core.bom”
;;
esac

# Make sure the INSTALL_VOLUME is ok.
if [ ! -d “$INSTALL_VOLUME” ]; then
log “Install volume ‘$INSTALL_VOLUME’ is not a directory.”
exit 2
fi

# Make sure that MacFUSE Core is installed and the Archive.bom is present.
if [ ! -z “$PACKAGE_RECEIPT” ]
then
if [ ! -d “$PACKAGE_RECEIPT” ]
then
log “It appears that MacFUSE Core is not installed.”
exit 3
fi
else
/usr/sbin/pkgutil –pkg-info com.google.macfuse.core > /dev/null 2>&1
if [ $? -ne 0 ]
then
log “It appears that MacFUSE Core is not installed.”
exit 3
fi
fi
if [ ! -f “$BOMFILE” ]
then
log “Can not find the Archive.bom for MacFUSE Core package.”
exit 4
fi

# 1. Try to unload the kext if possible. Best effort, so ignore errors.
kextunload -b com.google.filesystems.fusefs > /dev/null 2>&1

# 2. Remove files and symlinks
OLD_IFS=”$IFS”
IFS=$’¥n’
for x in `/usr/bin/lsbom -slf “$BOMFILE”`
do
remove_file “$INSTALL_VOLUME/$x”
if [ $? -ne 0 ]
then
IS_BOTCHED_UNINSTALL=1
fi
done
IFS=”$OLD_IFS”

# 3. Remove autoinstaller
remove_file “$INSTALL_VOLUME/./Library/Filesystems/fusefs.fs/Support/autoinstall-macfuse-core”

# 4. Remove the directories
OLD_IFS=”$IFS”
IFS=$’¥n’
for x in `/usr/bin/lsbom -sd “$BOMFILE” | /usr/bin/sort -r`
do
remove_dir “$INSTALL_VOLUME/$x”
if [ $? -ne 0 ]
then
IS_BOTCHED_UNINSTALL=1
fi
done
IFS=”$OLD_IFS”

# 5. Remove the Receipt.
if [ $IS_BOTCHED_UNINSTALL -eq 0 ]
then
if [ ! -z “$PACKAGE_RECEIPT” ]
then
remove_tree “$PACKAGE_RECEIPT”
if [ $? -ne 0 ]
then
IS_BOTCHED_UNINSTALL=1
fi
# Best effort remove of MacFUSE.pkg
if [ ! -z “$OUTER_PACKAGE_RECEIPT” ]
then
remove_tree “$OUTER_PACKAGE_RECEIPT”
fi
else
/usr/sbin/pkgutil –forget com.google.macfuse.core
if [ $? -ne 0 ]
then
IS_BOTCHED_UNINSTALL=1
fi
# Best effort remove of MacFUSE.pkg.
/usr/sbin/pkgutil –forget com.google.macfuse
fi
fi

exit $IS_BOTCHED_UNINSTALL

 

 

はい、というわけで、ご覧の通り、

$ sudo /Library/Filesystems/fusefs.fs/Support/uninstall-macfuse-core.sh

を実行した際にエラーとなっている原因は、OSXのバージョンアップによって、com.googlemacfuse.core.bom に対するパスを指定している条件式が足りなくなってしまっている為なので、スクリプトを通す為には、使用しているOSXのバージョンに対して、該当する正しいパスへのケースを追加してあげる必要があります。

具体的な箇所は、

OS_RELEASE=`/usr/bin/uname -r`

の直後のところですね。(sections cases look like 8* 9* 10*)

ちなみに、自分のマシンは、Mac OS X 10.7.5 Lion ですが、コマンドを打って確認してみたところ、

$ /usr/bin/uname -r
11.4.2

と返却されるため、

OS_RELEASE= 11.4.2

つまり、11*) のケースになるというわけですが、11*) のケースについては、前記のコード内に記載がされていない為、エラーとなっていたのです。

※その他のバージョン例:
Snow Leopard version (10) Lion の一つ前なのでおそらく
Mountain Lion version (12) たぶん・・・(自分では確認できない為、推定)

 

Terminalでアンインストールする方法(最終手段)

ちなみに com.googlemacfuse.core.bom がある場所はどこかというと?

$ sudo ls -l /var/db/receipts/com.google*
-rw-r–r– 1 root wheel 36068 Jan 12 14:37 /var/db/receipts/com.google.macfuse.bom
-rw-r–r– 1 root wheel 43630 Oct 22 2011 /var/db/receipts/com.google.macfuse.core.bom
-rw-r–r– 1 root wheel 472 Oct 22 2011 /var/db/receipts/com.google.macfuse.core.plist
-rw-r–r– 1 root wheel 350 Jan 12 14:37 /var/db/receipts/com.google.macfuse.plist

※ 注意:これは自分のマシンの場合です。下記のスクリプトを追加する際には、各自のマシン上において確認した正しいパスを指定するようにしてください。

 

スクリプトのソースコードを編集する

$ sudo vi /Library/Filesystems/fusefs.fs/Support/uninstall-macfuse-core.sh

– 編集対象箇所を探します(Search for the version testing section)
/uname

10*)
PACKAGE_RECEIPT=””
BOMFILE=”$INSTALL_VOLUME/var/db/receipts/com.google.macfuse.core.bom”
;;

の下に、Lion 用のケースとして、

11*)
PACKAGE_RECEIPT=””
BOMFILE=”$INSTALL_VOLUME/var/db/receipts/com.google.macfuse.core.bom”
;;

を編集モードで追記(挿入)します。

– 上書き保存します(Save and exit)
:wq

 

編集したアンインストール スクリプトを実行します(Launch the script)

$ sudo /Library/Filesystems/fusefs.fs/Support/uninstall-macfuse-core.sh

 

アンインストールが無事に成功したかどうか、関連ディレクトリを確認してみると、

$ ls -l /Library/Filesystems/fusefs.fs/Support
ls: /Library/Filesystems/fusefs.fs/Support: No such file or directory

$ sudo ls -l /var/db/receipts/com.google*
ls: /var/db/receipts/com.google*: No such file or directory

すっかり綺麗に削除されていますね〜 (^_^)v

 

ちなみに、この時点では、システム環境設定のMacFUSEメニューはまだ残っている為、必要に応じてGUIから削除します。
(This will not remove the preference pane icon, but you can achieve this by just right-clik the icon it and select remove.)

蛇足になりますが、「Remove MacFUSE」ボタンについては既に不活性に変わっていますね。

MacFUSE_uninstall_03

MacFUSEメニューの削除の方法は、システム環境設定を開いて、右クリック →「“MacFUSE”環境設定パネルを削除」をクリックで、削除することができます。

MacFUSE_uninstall_04

 

 

参考にさせていただいたサイト:
Mounting a virtual disk as a Mac OS volume (1010989)
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1010989

FAQ – macfuse – Frequently Asked Questions (and Answers) – The Easiest and Fastest Way to Create File Systems for Mac OS X – Google Project Hosting
https://code.google.com/p/macfuse/wiki/FAQ

Fix to remove or uninstall MacFuse on Mountain Lion when you get the error “MacFUSE Uninstaller: Can not find the Archive.bom for MacFUSE Core package.”
http://michael.terretta.com/fix-to-remove-or-uninstall-macfuse-on-mountain-lion-when-you-get-the-error-macfuse-uninstaller-can-not-find-the-archive-dot-bom-for-macfuse-core-package-dot

MacFUSE › Can’t Uninstall MacFUSE under Lion
https://groups.google.com/forum/#!topic/macfuse/x5jGIf0DPFM

関連記事

コメント

    • sho
    • 投稿日 (Posted on):

    そら様
    はじめまして、Shoともうします。
    ブログを拝見させて頂き、MacFUSEのアンイストールを試みたところ、

    >スクリプトのソースコードを編集する
    >$ sudo vi /Library/Filesystems/fusefs.fs/Support/uninstall-macfuse-core.sh

    を実行すると
    ——————–
    #!/bin/sh
    #
    # Copyright (C) 2006 Google. All Rights Reserved.
    #
    # Uninstalls the “MacFUSE Core.pkg”.

    INSTALL_VOLUME=”/”

    LOG_SYSLOG=1
    LOG_STDOUT=1
    function log() {
    local msg=”$1″
    if [ $LOG_SYSLOG -eq 1 ]
    then
    syslog -l Notice -s “MacFUSE Uninstaller: $msg”
    fi
    if [ $LOG_STDOUT -eq 1 ]
    then
    echo “MacFUSE Uninstaller: $msg”
    fi
    }

    # Check to make sure that operations (such as rm, rmdir) are relatively
    “/Library/Filesystems/fusefs.fs/Support/uninstall-macfuse-core.sh” 271L, 6543C
    ————————–

    と返されて先に進めませんでした。

    これを実行する前に、
    http://d.hatena.ne.jp/rurou/20121116/1353073065?_ga=1.136029174.694361527.1470030950
    を参考に、Tuxera NTFSの体験版を入れてアンインストールしているのですが、そのせいでしょうか?

    もし、解決策がおわかりになりましたら、ご教授頂けますと幸いです。
    よろしくお願いいたします。

      • so-ra
      • 投稿日 (Posted on):

      Shoさん、コメントありがとうございます!
      vi は、viエディタでファイルを編集するためのコマンドです。
      スクリプトの実行時は「vi」を入れる必要ありません。

  1. この記事へのトラックバックはありません。

*

人気記事ランキング

  • SEOブログパーツ
ページ上部へ戻る