Skip to content

Instantly share code, notes, and snippets.

@hieplpvip
Last active January 28, 2022 14:33
Show Gist options
  • Save hieplpvip/8e399f34d89ed672e26020b212259df9 to your computer and use it in GitHub Desktop.
Save hieplpvip/8e399f34d89ed672e26020b212259df9 to your computer and use it in GitHub Desktop.
MacTeX Uninstaller Generator
#!/bin/bash
# Based on https://tug.org/mactex/uninstalling.html
# Redirect stdout
exec > mactex-uninstaller.sh
echo "#!/bin/bash"
echo
echo 'if [ "$(id -u)" != "0" ]; then'
echo ' if [ "$(sudo -n echo sudo 2> /dev/null)" != "sudo" ]; then'
echo ' echo "This script must be run as root!"'
echo ' fi'
echo ' exit 1'
echo 'fi'
echo
echo "# Uninstall TeX"
echo "rm -rf /usr/local/texlive"
echo
echo "# Uninstall GUI Applications"
echo "rm -rf /Applications/TeX"
echo
echo "# Uninstalling the TeX Distribution Data Structure"
echo "rm -rf /Library/TeX"
echo "rm -rf /Library/PreferencePanes/TeXDistPrefPane.prefPane"
echo
IFS='
'
for pkg in $(pkgutil --pkgs | grep org.tug.mactex.ghostscript); do
volume="$(pkgutil --pkg-info $pkg | grep volume | cut -d ' ' -f 2-)"
location="$(pkgutil --pkg-info $pkg | grep location | cut -d ' ' -f 2-)"
echo "# Uninstall $pkg"
for file in $(pkgutil --files "$pkg" | tail -r); do
path="$volume$location/$file"
if [ -f "$path" ] ; then
echo "rm -f \"$path\" > /dev/null 2>&1"
elif [ -d "$path" ] ; then
echo "rmdir \"$path\" > /dev/null 2>&1"
fi
done
echo
done
for pkg in $(pkgutil --pkgs | grep org.tug.mactex); do
echo "pkgutil --forget \"$pkg\" > /dev/null 2>&1"
done
chmod +x mactex-uninstaller.sh
#!/bin/bash
# Sample uninstaller generated using above script for MacTeX 2020
if [ "$(id -u)" != "0" ]; then
if [ "$(sudo -n echo sudo 2> /dev/null)" != "sudo" ]; then
echo "This script must be run as root!"
fi
exit 1
fi
# Uninstall TeX
rm -rf /usr/local/texlive
# Uninstall GUI Applications
rm -rf /Applications/TeX
# Uninstalling the TeX Distribution Data Structure
rm -rf /Library/TeX
rm -rf /Library/PreferencePanes/TeXDistPrefPane.prefPane
# Uninstall org.tug.mactex.ghostscript9.50
rm -f "///usr/local/share/man/man1/ps2ps.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/man1/ps2pdfwr.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/man1/ps2pdf14.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/man1/ps2pdf13.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/man1/ps2pdf12.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/man1/ps2pdf.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/man1/ps2epsi.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/man1/ps2ascii.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/man1/printafm.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/man1/pfbtopfa.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/man1/pf2afm.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/man1/pdf2ps.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/man1/pdf2dsc.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/man1/gsnd.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/man1/gslp.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/man1/gslj.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/man1/gsdj500.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/man1/gsdj.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/man1/gsbj.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/man1/gs.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/man1/eps2eps.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/man1/dvipdf.1" > /dev/null 2>&1
rmdir "///usr/local/share/man/man1" > /dev/null 2>&1
rm -f "///usr/local/share/man/de/man1/ps2ps.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/de/man1/ps2pdf14.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/de/man1/ps2pdf13.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/de/man1/ps2pdf12.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/de/man1/ps2pdf.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/de/man1/ps2ascii.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/de/man1/printafm.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/de/man1/pdf2ps.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/de/man1/pdf2dsc.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/de/man1/gsnd.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/de/man1/eps2eps.1" > /dev/null 2>&1
rm -f "///usr/local/share/man/de/man1/dvipdf.1" > /dev/null 2>&1
rmdir "///usr/local/share/man/de/man1" > /dev/null 2>&1
rmdir "///usr/local/share/man/de" > /dev/null 2>&1
rmdir "///usr/local/share/man" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/thirdparty.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/subclass.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/style.css" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/sample_downscale_device.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/pscet_status.txt" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/index.js" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/index.html" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/images/x-light.png" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/images/hamburger-light.png" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/images/ghostscript_logo.png" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/images/favicon.png" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/images/Artifex_logo.png" > /dev/null 2>&1
rmdir "///usr/local/share/doc/ghostscript/9.50/images" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/gs-style.css" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/gdevds32.c" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/WhatIsGS.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/VectorDevices.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/Use.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/Unix-lpr.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/Source.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/SavedPages.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/Release.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/Readme.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/Psfiles.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/Ps2epsi.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/Ps-style.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/News.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/Make.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/Lib.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/Language.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/Install.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/History9.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/GS9_Color_Management.pdf" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/Fonts.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/Drivers.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/Devices.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/Develop.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/Deprecated.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/DLL.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/Commprod.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/COPYING" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/C-style.htm" > /dev/null 2>&1
rm -f "///usr/local/share/doc/ghostscript/9.50/API.htm" > /dev/null 2>&1
rmdir "///usr/local/share/doc/ghostscript/9.50" > /dev/null 2>&1
rmdir "///usr/local/share/doc/ghostscript" > /dev/null 2>&1
rmdir "///usr/local/share/doc" > /dev/null 2>&1
rmdir "///usr/local/share" > /dev/null 2>&1
rm -f "///usr/local/bin/unix-lpr.sh" > /dev/null 2>&1
rm -f "///usr/local/bin/ps2ps2" > /dev/null 2>&1
rm -f "///usr/local/bin/ps2ps" > /dev/null 2>&1
rm -f "///usr/local/bin/ps2pdfwr" > /dev/null 2>&1
rm -f "///usr/local/bin/ps2pdf14" > /dev/null 2>&1
rm -f "///usr/local/bin/ps2pdf13" > /dev/null 2>&1
rm -f "///usr/local/bin/ps2pdf12" > /dev/null 2>&1
rm -f "///usr/local/bin/ps2pdf" > /dev/null 2>&1
rm -f "///usr/local/bin/ps2epsi" > /dev/null 2>&1
rm -f "///usr/local/bin/ps2ascii" > /dev/null 2>&1
rm -f "///usr/local/bin/printafm" > /dev/null 2>&1
rm -f "///usr/local/bin/pphs" > /dev/null 2>&1
rm -f "///usr/local/bin/pfbtopfa" > /dev/null 2>&1
rm -f "///usr/local/bin/pf2afm" > /dev/null 2>&1
rm -f "///usr/local/bin/pdf2ps" > /dev/null 2>&1
rm -f "///usr/local/bin/pdf2dsc" > /dev/null 2>&1
rm -f "///usr/local/bin/lprsetup.sh" > /dev/null 2>&1
rm -f "///usr/local/bin/gsnd" > /dev/null 2>&1
rm -f "///usr/local/bin/gslp" > /dev/null 2>&1
rm -f "///usr/local/bin/gslj" > /dev/null 2>&1
rm -f "///usr/local/bin/gsdj500" > /dev/null 2>&1
rm -f "///usr/local/bin/gsdj" > /dev/null 2>&1
rm -f "///usr/local/bin/gsbj" > /dev/null 2>&1
rm -f "///usr/local/bin/gs-noX11" > /dev/null 2>&1
rm -f "///usr/local/bin/gs-X11" > /dev/null 2>&1
rm -f "///usr/local/bin/eps2eps" > /dev/null 2>&1
rm -f "///usr/local/bin/dvipdf" > /dev/null 2>&1
rmdir "///usr/local/bin" > /dev/null 2>&1
rmdir "///usr/local" > /dev/null 2>&1
rmdir "///usr" > /dev/null 2>&1
pkgutil --forget "org.tug.mactex.basictex2020" > /dev/null 2>&1
pkgutil --forget "org.tug.mactex.texlive2020" > /dev/null 2>&1
pkgutil --forget "org.tug.mactex.ghostscript9.50" > /dev/null 2>&1
pkgutil --forget "org.tug.mactex.gui2020" > /dev/null 2>&1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment