inst

来自Tsetien’s Wiki
跳转到导航 跳转到搜索
NB
Not actively maintained as of April 115 AR.

A very personal bash script used to install some applications and other things on my Debian system. It is simple, personal, and quite readable, so no explanation is needed—and, like qe and upd, this one is also subject to frequent revisions at my pleasure.

inst
#!/bin/bash
if [ "$1" = "7z" ]; then
	curl -L https://www.7-zip.org/download.html -o /tmp/7znvdlinterim.html
	curl -L -o /tmp/7znvdlinterim.tar.xz "https://www.7-zip.org/$(grep -oP 'href="a/7z[0-9]{4}-linux-x64\.tar\.xz"' /tmp/7znvdlinterim.html | head -n 1 | cut -d'"' -f2)"
	tar -xJf /tmp/7znvdlinterim.tar.xz -C /tmp/ --transform='s/7zz/7znvdlinterim/' 7zz
	sudo install -m 755 /tmp/7znvdlinterim /usr/local/bin/7z
	rm -rf /tmp/7znvdlinterim*
elif [ "$1" = "bb" ]; then
	curl -L https://www.bleachbit.org/download/linux -o /tmp/bleachbitinstallinterim.html
	curl -L -o /tmp/bleachbitinstallinterim.deb "$(sed -n 's/.*href="\([^"]*bleachbit_[^"]*debian\([0-9]\+\)\.deb\)".*/\2 \1/p' /tmp/bleachbitinstallinterim.html | sort -nr | head -n 1 | cut -d' ' -f2 | sed 's|/get/|/|')"
	sudo dpkg -i /tmp/bleachbitinstallinterim.deb
	rm -f /tmp/bleachbitinstallinterim*
elif [ "$1" = "bbb" ]; then
	curl -L https://download.bleachbit.org/beta/ -o /tmp/bleachbitbetainstallinterim1.html
	curl -L "https://download.bleachbit.org/beta/$(grep -oP 'href="/beta/\K[0-9.]+(?=/")' /tmp/bleachbitbetainstallinterim1.html | sort -Vr | head -n 1)/" -o /tmp/bleachbitbetainstallinterim2.html
	curl -L -o /tmp/bleachbitbetainstallinterim.deb "$(grep 'debian13.deb' /tmp/bleachbitbetainstallinterim2.html | sed -n 's/.*href="\([^"]*\)".*/https:\/\/download.bleachbit.org\1/p')"
	sudo dpkg -i /tmp/bleachbitbetainstallinterim.deb
	rm -f /tmp/bleachbitbetainstallinterim*
elif [ "$1" = "bs" ]; then
	cat <<EOF | sudo tee /etc/apt/sources.list.d/backports.list > /dev/null
deb http://deb.debian.org/debian trixie-backports main contrib non-free non-free-firmware
EOF
	cat <<EOF | sudo tee /etc/apt/preferences.d/backports.pref > /dev/null
Package: *
Pin: release n=trixie-backports
Pin-Priority: 200
EOF
elif [ "$1" = "rbs" ]; then
	sudo rm -f /etc/apt/sources.list.d/backports.list /etc/apt/preferences.d/backports.pref
elif [ "$1" = "et" ]; then
	for d in /usr/local/lib/x86_64-linux-gnu/perl/*/auto/Image/ExifTool /usr/local/share/perl/*/Image/ExifTool; do [ -d "$d" ] && sudo rm -rf "$d"; done
	[ -f /usr/local/bin/exiftool ] && sudo rm -f /usr/local/bin/exiftool
	for f in /usr/local/share/perl/*/Image/ExifTool.pm /usr/local/share/perl/*/Image/ExifTool.pod; do [ -f "$f" ] && sudo rm -f "$f"; done
	curl -L https://exiftool.org/rss.xml -o /tmp/exiftoolinstallinterim.xml
	curl -L -o /tmp/exiftoolinstallinterim.tar.gz "$(grep -oP "enclosure url='\K[^']*Image-ExifTool-[0-9]+\.[0-9]+\.tar\.gz[^']*" /tmp/exiftoolinstallinterim.xml | head -n 1)"
	[ -d "$HOME/.exiftool" ] && sudo rm -rf "$HOME/.exiftool"
	mkdir "$HOME/.exiftool"
	tar -xzf "/tmp/exiftoolinstallinterim.tar.gz" -C "$HOME/.exiftool" --strip=1
	cd $HOME/.exiftool
	perl Makefile.PL
	sudo make install
	rm -f /tmp/exiftoolinstallinterim*
	cd $HOME
	sudo rm -rf $HOME/.exiftool
elif [ "$1" = "fa" ]; then
	sudo install -d -m 0755 /etc/apt/keyrings
	sudo wget -q https://packages.mozilla.org/apt/repo-signing-key.gpg -O- | sudo tee /etc/apt/keyrings/packages.mozilla.org.asc > /dev/null
	sudo cat <<EOF > /etc/apt/sources.list.d/mozilla.sources
Types: deb
URIs: https://packages.mozilla.org/apt
Suites: mozilla
Components: main
Signed-By: /etc/apt/keyrings/packages.mozilla.org.asc
EOF
	sudo echo '
Package: *
Pin: origin packages.mozilla.org
Pin-Priority: 1000
' | sudo tee /etc/apt/preferences.d/mozilla
elif [ "$1" = "fx" ]; then
	sudo apt remove --autoremove firefox firefox-esr -y
	[ -d "$HOME/.config/mozilla" ] && rm -rf "$HOME/.config/mozilla"
	[ -d "$HOME/.cache/mozilla" ] && rm -rf "$HOME/.cache/mozilla"
	sudo apt update
	sudo apt install firefox -y
	sleep 2
	firefox &
	sleep 5
	pkill -f firefox
elif [ "$1" = "fxe" ]; then
	sudo apt remove --autoremove firefox firefox-esr -y
	[ -d "$HOME/.config/mozilla" ] && rm -rf "$HOME/.config/mozilla"
	[ -d "$HOME/.cache/mozilla" ] && rm -rf "$HOME/.cache/mozilla"
	sudo apt update
	sudo apt install firefox-esr -y
	sleep 2
	firefox-esr &
	sleep 5
	pkill -f firefox
elif [ "$1" = "fpf" ]; then
	p=$(grep -A 1 '^\[Install[0-9A-F]\{16\}\]' "$HOME/.config/mozilla/firefox/profiles.ini" | grep '^Default=' | sed 's/^Default=//')
	if [ -d "$HOME/.config/mozilla/firefox/$p" ]; then
		find "$HOME/.config/mozilla/firefox/$p" -mindepth 1 -delete
		curl -L -o /tmp/myfirefoxprofilebackup.7z "https://your.domain.com/path/to/your-firefox-profile.7z"
		7z x -y /tmp/myfirefoxprofilebackup.7z -o"$HOME/.config/mozilla/firefox/$p"
		chmod -R 755 "$HOME/.config/mozilla/firefox/$p"
		rm /tmp/myfirefoxprofilebackup.7z
	fi
elif [ "$1" = "rfx" ]; then
	sudo apt remove --autoremove firefox firefox-esr -y
	[ -d "$HOME/.config/mozilla" ] && rm -rf "$HOME/.config/mozilla"
	[ -d "$HOME/.cache/mozilla" ] && rm -rf "$HOME/.cache/mozilla"
elif [ "$1" = "fdk" ]; then
	sudo sed -i -E '/^deb /{/(^|[[:space:]])contrib([[:space:]]|$)/!{/(^|[[:space:]])non-free([[:space:]]|$)/!{s/( main)([[:space:]].*)?$/\1 contrib non-free\2/}}}' /etc/apt/sources.list
	sudo apt update
	sudo apt install fdkaac -y
elif [ "$1" = "ff" ]; then
	curl -L -o /tmp/fastfetchinstallinterim.deb "https://github.com/fastfetch-cli/fastfetch/releases/latest/download/fastfetch-linux-amd64.deb"
	sudo dpkg -i /tmp/fastfetchinstallinterim.deb
	rm -f /tmp/fastfetchinstallinterim*
elif [ "$1" = "fm" ]; then
	curl -L -o /tmp/ffmpegupdateinterim.tar.xz "https://github.com/yt-dlp/FFmpeg-Builds/releases/latest/download/ffmpeg-master-latest-linux64-gpl.tar.xz"
	sudo tar -xJf /tmp/ffmpegupdateinterim.tar.xz -C /usr/local/bin/ "ffmpeg-master-latest-linux64-gpl/bin/ffmpeg" "ffmpeg-master-latest-linux64-gpl/bin/ffplay" "ffmpeg-master-latest-linux64-gpl/bin/ffprobe" --strip-components=2
	sudo chmod +x /usr/local/bin/{ffmpeg,ffplay,ffprobe}
	rm -f /tmp/ffmpegupdateinterim*
elif [ "$1" = "fonts" ]; then
	curl -L -o /tmp/personalfontscollectioninterim.7z "https://your.domain.com/path/to/your-font-collection.7z"
	mkdir -p /tmp/personalfontscollectioninterim
	7z x -y /tmp/personalfontscollectioninterim.7z -o/tmp/personalfontscollectioninterim
	chmod -R 755 /tmp/personalfontscollectioninterim
	sudo mv -f /tmp/personalfontscollectioninterim/* /usr/share/fonts/
	rm -rf /tmp/personalfontscollectioninterim*
	sudo fc-cache -f -v
elif [ "$1" = "fy" ]; then
	sudo apt update
	sudo apt install libqt6concurrent6 -y
	curl -L -o /tmp/fooyininstallinterim.json "https://api.github.com/repos/fooyin/fooyin/releases/latest"
	curl -L -o /tmp/fooyininstallinterim.deb "$(grep -oP '"browser_download_url":\s*"\Khttps://[^"]*fooyin_[^"]*trixie_amd64\.deb' /tmp/fooyininstallinterim.json | head -n1)"
	sudo dpkg -i /tmp/fooyininstallinterim.deb
	rm -f /tmp/fooyininstallinterim*
elif [ "$1" = "jpl" ]; then
	curl -L -o /tmp/jpegliinstallintrim.7z "https://your.domain.com/path/to/your-jpegli-binaries.7z"
	sudo 7z x -y /tmp/jpegliinstallintrim.7z -o/usr/local/bin/
	sudo chmod +x /usr/local/bin/{cjpegli,djpegli}
	rm -f /tmp/jpegliinstallintrim*
elif [ "$1" = "nn" ]; then
	[ ! -d /usr/local/apps/ ] && sudo mkdir -p /usr/local/apps/
	sudo chmod -R 755 /usr/local/apps/
	curl -L -o /tmp/notepadnextinstallintrim.json "https://api.github.com/repos/dail8859/NotepadNext/releases/latest"
	sudo curl -L -o /usr/local/apps/NotepadNext.AppImage "$(grep -oP '"browser_download_url":\s*"\Khttps://[^"]*x86_64\.AppImage' /tmp/notepadnextinstallintrim.json | head -n1)"
	sudo chmod +x /usr/local/apps/NotepadNext.AppImage
	if [ ! -f /usr/local/bin/npp ]; then
		echo '#!/bin/bash
/usr/local/apps/NotepadNext.AppImage "$@"' | sudo tee /usr/local/bin/npp > /dev/null
		sudo chmod +x /usr/local/bin/npp
	fi
	rm -f /tmp/notepadnextinstallintrim*
elif [ "$1" = "os" ]; then
	cat <<EOF | sudo tee /etc/apt/sources.list.d/oldstable.list > /dev/null
deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware
deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware
EOF
	cat <<EOF | sudo tee /etc/apt/preferences.d/oldstable.pref > /dev/null
Package: *
Pin: release n=bookworm
Pin-Priority: 100
EOF
elif [ "$1" = "ros" ]; then
	sudo rm -f /etc/apt/sources.list.d/oldstable.list /etc/apt/preferences.d/oldstable.pref
elif [ "$1" = "oo" ]; then
	curl -L -o /tmp/onlyofficeinstallinterim.deb "https://github.com/ONLYOFFICE/DesktopEditors/releases/latest/download/onlyoffice-desktopeditors_amd64.deb"
	sudo dpkg -i /tmp/onlyofficeinstallinterim.deb
	rm -f /tmp/onlyofficeinstallinterim*
elif [ "$1" = "oc" ]; then
	sudo apt update
	sudo apt install python3-pip -y
	sudo pip install opencc --break-system-packages
elif [ "$1" = "pd" ]; then
	curl -L -o /tmp/pandocinstallinterim.html "https://github.com/jgm/pandoc/releases/latest"
	curl -L -o /tmp/pandocinstallinterim.deb "https://github.com/jgm/pandoc/releases/latest/download/pandoc-$(grep -oP '<title>Release pandoc \K[0-9.]+(?= · jgm/pandoc · GitHub</title>)' /tmp/pandocinstallinterim.html | head -n1)-1-amd64.deb"
	sudo dpkg -i /tmp/pandocinstallinterim.deb
	rm -f /tmp/pandocinstallinterim*
elif [ "$1" = "qv" ]; then
	[ ! -d /usr/local/apps/ ] && sudo mkdir -p /usr/local/apps/
	sudo chmod -R 755 /usr/local/apps/
	curl -L -o /tmp/qviewinstallintrim.json "https://api.github.com/repos/jurplel/qView/releases/latest"
	sudo curl -L -o /usr/local/apps/qView.AppImage "$(grep -oP '"browser_download_url":\s*"\Khttps://[^"]*x86_64\.AppImage' /tmp/qviewinstallintrim.json | head -n1)"
	sudo chmod +x /usr/local/apps/qView.AppImage
	if [ ! -f /usr/local/bin/qv ]; then
		echo '#!/bin/bash
/usr/local/apps/qView.AppImage "$@"' | sudo tee /usr/local/bin/qv > /dev/null
		sudo chmod +x /usr/local/bin/qv
	fi
	rm -f /tmp/qviewinstallintrim*
elif [ "$1" = "rm" ]; then
	sudo apt remove --purge ibus fcitx -y
	sudo apt autoremove -y
	sudo apt update
	sudo apt install fcitx5 fcitx5-rime fcitx5-frontend-qt6 fcitx5-frontend-gtk3 fcitx5-config-qt -y
	if [ ! -f ~/.xprofile ]; then
		touch ~/.xprofile
	fi
	if ! grep 'fcitx5' ~/.xprofile; then
		cat <<EOL >> ~/.xprofile
export XMODIFIERS=@im=fcitx5
export GTK_IM_MODULE=fcitx5
export QT_IM_MODULE=fcitx5
export CLUTTER_IM_MODULE=fcitx5
export SDL_IM_MODULE=fcitx5
EOL
	fi
	im-config -n none
elif [ "$1" = "rmc" ]; then
	cat > "$HOME/.local/share/fcitx5/rime/default.custom.yaml" <<EOL
patch:
  schema_list:
    - schema: luna_pinyin_tw
    - schema: luna_pinyin_fluency
    - schema: luna_pinyin_simp
EOL
elif [ "$1" = "sg" ]; then
	wget -O /tmp/sarasafontupdateinterim.html https://github.com/be5invis/Sarasa-Gothic/releases/latest
	wget -O /tmp/sarasafontupdateinterim.7z $(grep -oP 'href="https://github.com/be5invis/Sarasa-Gothic/releases/download/v[0-9.]+/Sarasa-TTC-[0-9.]+\.7z"' /tmp/sarasafontupdateinterim.html | head -n 1 | cut -d'"' -f2)
	mkdir -p /tmp/sarasafontupdateinterim
	7z x -y /tmp/sarasafontupdateinterim.7z -o/tmp/sarasafontupdateinterim
	chmod -R 755 /tmp/sarasafontupdateinterim
	sudo mv -f /tmp/sarasafontupdateinterim/* /usr/share/fonts/
	rm -rf /tmp/sarasafontupdateinterim*
	sudo fc-cache -f -v
elif [ "$1" = "tb" ]; then
	curl -L https://www.torproject.org/download/ -o /tmp/torbdlinterim.html
	curl -L -o /tmp/torbdlinterim.tar.xz "https://www.torproject.org$(grep -oP 'href="/dist/torbrowser/[0-9.]+/tor-browser-linux-x86_64-[0-9.]+\.tar\.xz"' /tmp/torbdlinterim.html | head -n 1 | cut -d'"' -f2)"
	mkdir -p ~/.tor
	tar --strip-components=2 -xf /tmp/torbdlinterim.tar.xz -C ~/.tor tor-browser/Browser
	chmod -R 755 ~/.tor
	echo '#!/bin/bash
~/.tor/start-tor-browser --detach' | sudo tee /usr/local/bin/torb > /dev/null
	sudo chmod +x /usr/local/bin/torb
	rm -f /tmp/torbdlinterim*
elif [ "$1" = "vmt" ]; then
	sudo apt update
	sudo apt install open-vm-tools-desktop -y
elif [ "$1" = "xp" ]; then
	sudo apt update
	sudo apt install xclip pkexec -y
elif [ "$1" = "yt" ]; then
	[ -d "$HOME/.deno" ] && rm -rf "$HOME/.deno"
	sudo curl -fsSL https://deno.land/install.sh | sh
	sudo curl -L -o /usr/local/bin/yt-dlp "https://github.com/yt-dlp/yt-dlp-nightly-builds/releases/latest/download/yt-dlp"
	sudo chmod +x /usr/local/bin/yt-dlp
else
	echo '
═══ Which one do you want to install? ═══

    7z ....................... 7-zip
    bb ................... BleachBit
     └─bbb ........ BleachBit (beta)
    bs ........... add backports src
     └─rbs ........ rm backports src
    et .................... ExifTool
    fa ...... add Firefox repository
     ├─fx ........ Firefox (current)
     ├─fxe ............. Firefox ESR
     ├─fpf ...... pre-packed Profile
     └─rfx .......... remove Firefox
    fdk ..................... fdkaac
    ff ................... fastfetch
    fm ...................... FFmpeg
    fonts .......... Font Collection
    fy ...................... fooyin
    jpl ..................... jpegli
    nn ................. NotepadNext
    os ........... add oldstable src
     └─ros ........ rm oldstable src
    oo .................. ONLYOFFICE
    oc ...................... OpenCC
    pd ...................... Pandoc
    qv ....................... qView
    rm ........................ RIME
     └─rmc .......... configure RIME
    sg ............... Sarasa Gothic
    tb ................. Tor Browser
    vmt .............. Open VM Tools
    xp .............. xclip + pkexec
    yt ...................... yt-dlp
'
	exit 0
fi