Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make install doesn't complain when files cannot be overwritten #2

Open
mcamiano opened this issue Nov 17, 2011 · 3 comments
Open

Make install doesn't complain when files cannot be overwritten #2

mcamiano opened this issue Nov 17, 2011 · 3 comments

Comments

@mcamiano
Copy link

If a previous install of MacFuse or a similar package was made, and not fully uninstalled, the make install action does not detect the leftover files and may not update them when run under normal user permissions.

After installing, when this problem scenario occurs, the following error may be seen:
$ sshfs myname@mysite.me: ~/mnt/mysite.me
/Library/Filesystems/fusefs.fs/Support/fusefs.kext failed to load - (libkern/kext) link error; check the system/kernel logs for errors or try kextutil(8).
the MacFUSE file system is not available (71)

Investigating turned up that the fusefs.fs file was left-over from MacFUSE that had been installed in a previously uninstalled tool:
$ ls -ld /Library/Filesystems/fusefs.fs
drwxr-xr-x 4 root wheel 136 Dec 19 2008 /Library/Filesystems/fusefs.fs

I found this when attempting to install fuse4x through homebrew, but since homebrew is just invoking make install, I'm logging this here to provide some notice. (A more full explanation is at http://www.unityisplural.com/2011/11/getting-fuse4x-installed-on-osx-lion.html)

It would be helpful and perhaps save someone a bit of grief if the make install directive checked and reported whenever the files it is attempting to install cannot be written.

@anatol
Copy link
Member

anatol commented Nov 17, 2011

This issue seems related Homebrew/legacy-homebrew#8224

AFAIK make in Homebrew uses DESTDIR /usr/local/Cellar/fuse4x/0.8.12 and "make install" installs in this directory without any problem. Then Homebrew creates a symbolic link from /usr/local/Cellar/fuse4x/0.8.12/.. to /usr/local and I suspect that Homebrew fails here.

I don't know why but maybe because of permissions (e.g. previous macfuse files were creates by root). I need to check it.

@anatol
Copy link
Member

anatol commented Nov 17, 2011

My suspicion was correct. Homebrew uses --prefix equal to /usr/local/Cellar/fuse4x/0.8.13 and all files (*.pc, headers) are installed in that directory.

Then Homebrew creates symlinks (see "ls -l /usr/local/lib/pkgconfig/fuse.pc") and it is where it fails. Homebrew cannot create these links. It is weird because "brew link fuse4x" that aims to fix symlinks shows warning in case if it cannot do it. Do you say that "brew install fuse4x" (or brew link) failed without showing this warning?

As of your article - I think the correct way to fix was:

brew uninstall sshfs (sshfs was compiled against macfuse, so we need to clean it first)
brew link fuse4x (fix symlink to *.pc and to headers)
brew install sshfs (reinstall sshfs and use correct *.pc file)

sshfs will be linked against fuse4x, and fuse4x userlib knows where fuse4x kext is stored - thus it'll load it (not macfuse).

@mcamiano
Copy link
Author

Thanks for the update.

brew install fuse4x completed without apparent errors AFAICT. I uninstalled and installed multiple times, and it still left the original files intact. I do think your suspicions about the root permissions make sense; my copy of macfuse had been installed with a third party tool, and I wasn't aware of its presence when I first installed fuse4x.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants