Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Fixes annoying brew doctor messages caused by Truecrypt - tested on Yosemite
#!/usr/bin/env bash
# Author: Ori Tzoran, based on idea and gist by aaronzirbes (see evolution below)
# Tested on Mac OS X 10.10.2 (14C109)
set -e
## verify root runs this
[[ $(id -u) == 0 ]] || { echo need root; exit 1; }
#set -vx
## verify TrueCrypt doesn't run
# - ps COMMAND should "/Applications/TrueCrypt.app/Contents/MacOS/TrueCrypt"
# - the 'true' in end of the pipe escapes the check on grep's return (which in !=0 if TrueCrypt doesnt run)
num_procs=$(ps -eo command | sed -n '/^sed/d;/TrueCrypt.app/p;' | grep -c 'MacOS/TrueCrypt' || true )
if [[ $num_procs > 0 ]]; then
printf "TrueCrypt is running, quit it and start over...\n";
exit 1
fi
truecrypt=/Applications/TrueCrypt.app/Contents/Resources
cd /usr/local/lib
## list of files (obtained by `find . -user root` )
fuse_libs="
libfuse.0.dylib
libfuse.2.dylib
libfuse.dylib
libfuse_ino64.2.dylib
libfuse_ino64.dylib
libmacfuse_i32.2.dylib
libmacfuse_i32.dylib
libmacfuse_i64.2.dylib
libmacfuse_i64.dylib
libosxfuse.2.7.3.dylib
libosxfuse.2.dylib
libosxfuse.dylib
libosxfuse.la
libosxfuse_i32.2.7.3.dylib
libosxfuse_i32.2.dylib
libosxfuse_i32.dylib
libosxfuse_i32.la
libosxfuse_i64.2.7.3.dylib
libosxfuse_i64.2.dylib
libosxfuse_i64.dylib
libosxfuse_i64.la
pkgconfig/fuse.pc
pkgconfig/osxfuse.pc
"
## check all files exist
for ff in $fuse_libs; do
[[ -e $ff ]] || { printf "File not found \"$ff\". Abroting\n"; exit 1; }
done
printf "This script moves OSXFUSE files from /usr/local/lib under TrueCrypt's App dir.\n"
printf "All verifications passed. Hit enter to continue [or ^C to abort now] "
read ANS
## create Library subdir - dest
if [[ -d $truecrypt ]]; then
mkdir -p $truecrypt/Library
else
printf "Dir not found \"$truecrypt\". Abroting\n"
exit 1
fi
## copy the files, preserving the pkgconfig subdir
tar cf - $fuse_libs | tar xvf - -C $truecrypt/Library
## rm & symlink
for ff in $fuse_libs; do
rm $ff
ln -s $truecrypt/Library/$ff $ff
done
echo
printf "Successfully moved OSXFUSE libfiles from /usr/local/lib to $truecrypt/Library\n"
echo
printf "You should run brew now from your own account (not as root):\n"
cat <<-EOCC
brew prune
brew doctor
brew update
EOCC
exit
## Motivation: fix brew doctor complaints on fuse libs
# sources:
# 1. Aaron J. Zirbes, Created on Aug 2, 2012
# https://gist.github.com/aaronzirbes/3239033
# 2. James Cuzella, aka "trinitronx", last edit Apr 22, 2013 forked to add cond. dir create
# https://gist.github.com/trinitronx/5437061
# 3. Yiufung Cheong, Nov 13, 2013 forked trinitronx to fix rm
# https://gist.github.com/yiufung/7445219
# Errors/mistakes
# - no verif ran by root
# - no verif TrueCrypt is NOT running
# - no verif all libfiles exist beforehand
# - pkgconfig is not recreated on dest, the 2 *.pc files are not copied to the right location
# - symlinks not copied: he handles only the 7 files, there are 16 symlinks that become orphans
#
# Read this article: https://lazymind.me/2014/10/install-truecrypt-on-mac-osx-yosemite-10-10/
# Opened an "old" 7.1a dmg (e.g. dump the "insecure" FUD)
# Copy out "TrueCrypt 7.1a.mpkg" to ~/Downloads
# Edited `distribution.dist` as explained in above url
# Opened the the mpkg/Contents/Packages
# Confirmed 23 lib entries in the 2 Fuse pkgs. OSXFUSECore.pkg OSXFUSEMacFUSE.pkg
# * The 3rd pkg, MacFUSE.pkg, doesnt carry lib files
# Installed TrueCrypt (after hacking the distribution.dist file)
# - tested that it opens an existing vol, creating new vol == ok (before moving libs)
# - wrote script and run
# - repeat tests
#
# Includes
# There're 9 files under /usr/local/include, they can be moved under /Apps.../Include
# osxfuse/fuse/fuse.h
# osxfuse/fuse/fuse_common.h
# osxfuse/fuse/fuse_common_compat.h
# osxfuse/fuse/fuse_compat.h
# osxfuse/fuse/fuse_darwin.h
# osxfuse/fuse/fuse_lowlevel.h
# osxfuse/fuse/fuse_lowlevel_compat.h
# osxfuse/fuse/fuse_opt.h
# osxfuse/fuse.h
#
# caveats
# This script isn't idempotent. If ran a 2nd time, we have symlinks under lib ...
# and it will end up in infinite symlink loop ....
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.