Advertisement
Noki

super-setup

Mar 26th, 2016
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.58 KB | None | 0 0
  1. #!/bin/bash
  2. # super-setep installer script
  3. # by Noki
  4. sVer="17" #script version
  5. ## required updates:
  6. ## 1. sudo start section
  7. ## 2. chrome install flakey, delete erreor
  8. ## 2. Change directory (cd) to ~/.config/google-chrome/Default
  9. ## 2. Delete the file named “Web Data”: rm -rf Web\ Data;
  10. ## 3. better logging
  11. ## 4. aptdcon
  12. ## 5. build-dep (virtualbox etc)
  13. ############################################################
  14. # functions
  15. ############################################################
  16. function logInfo() {
  17. case $1 in
  18. 0 )
  19. echo "[`date`][INFO] $2" >> ~/super-setup.log;;
  20. 1 )
  21. echo "[`date`][INFO] $2" >> ~/super-setup.log
  22. echo "$2";;
  23. 2 )
  24. echo "[`date`][WARN] $2" >> ~/super-setup.log
  25. echo "$2";;
  26. 3 )
  27. echo "[`date`][ERROR] $2" >> ~/super-setup.log
  28. echo "$2";;
  29. 4 )
  30. echo "[`date`][FIXME] $2" >> ~/super-setup.log
  31. echo "$2";;
  32. esac
  33. }
  34. function bannerSmall() {
  35. clear
  36. echo "####"
  37. echo "#### $1"
  38. echo "####"
  39. echo
  40. }
  41. function bannerBig() {
  42. clear
  43. figlet -f big $1
  44. echo
  45. echo "################################################################################"
  46. echo
  47. echo $2
  48. echo
  49. echo "################################################################################"
  50. echo
  51. }
  52. function cleanUpgrade() {
  53. sudo apt-get purge && sudo apt-get clean && sudo apt-get check
  54. sudo apt-get update -qq
  55. sudo apt-get upgrade -yqq && sudo apt-get dist-upgrade -yqq
  56. sudo apt-get -y autoremove && sudo apt-get autoclean
  57. }
  58. function addPPA() {
  59. grep -h "^deb.*$1" /etc/apt/sources.list.d/* > /dev/null 2>&1
  60. if [ $? -ne 0 ] ; then
  61. echo
  62. echo
  63. echo "Adding ppa:$1"
  64. sudo add-apt-repository -y ppa:$1
  65. return 0
  66. fi
  67. echo
  68. echo
  69. echo "ppa:$1 already exists, skipping repo."
  70. return 1
  71. }
  72. function appCheck() {
  73. case "$1" in
  74. [0] ) # check single only
  75. dpkg -l | grep -q $2
  76. if [ $? -eq 0 ] ; then
  77. return 0 # app found
  78. fi
  79. return 1 # not found
  80. ;;
  81. [1] ) # check array only
  82. local tmp=$2[@]
  83. local ask=0
  84. local arrArg=(${!tmp})
  85. for i in ${arrArg[*]}
  86. do
  87. :
  88. dpkg -l | grep -q $i
  89. if [ $? -eq 1 ] ; then
  90. ask=1
  91. fi
  92. done
  93. if [ $ask -eq 0 ] ; then
  94. return 0 # app found
  95. else
  96. return 1 # not found
  97. fi
  98. ;;
  99. esac
  100. }
  101. function runInstall() {
  102. local carryOn=0
  103. appCheck 0 $1
  104. if [ $? -ne 0 ] ; then
  105. bannerSmall "Simulating install for '$1'"
  106. if sudo apt-get --simulate install $1
  107. then carryOn=1
  108. else carryOn=0 && echo "Install test failed!!!"
  109. fi
  110. if [ $carryOn -ne 1 ] ; then
  111. sleep 2
  112. read -p "Retry (selecting 'NO' will exit the script)? " -n 1 -r
  113. if [[ $REPLY =~ ^[Yy]$ ]] ; then
  114. if sudo apt-get --simulate install $1
  115. then echo "Simulation Passed, but you won't see this message!"
  116. else echo "Simulation failed again, proceeding anyway..." && echo && sleep 2
  117. fi
  118. else
  119. clear && exit
  120. fi
  121. fi
  122. bannerSmall "Beginning install for '$1' and any dependencies."
  123. sudo apt-get -yqq install $1
  124. if [ $? -eq 0 ] ; then
  125. logInfo 1 "'$1' was installed with all of its dependencies."
  126. return 0
  127. else
  128. echo "#### Failed installation for $1 ####"
  129. return 1
  130. fi
  131. else
  132. echo
  133. echo "$1 is already installed, skipping..."
  134. return 0
  135. fi
  136. }
  137. function askInstall() {
  138. local tmp=("${!2}")
  139. clear
  140. bannerBig "Install $1 ?" "The following are the main applications in this section:"
  141. echo ${tmp[*]}
  142. echo
  143. read -p "Proceed? " -n 1 -r
  144. if [[ $REPLY =~ ^[Yy]$ ]] ; then
  145. local complete=0
  146. if [ ! -z $3 ] ; then
  147. addPPA $3
  148. if [ ! -z $4 ] ; then
  149. addPPA $4
  150. fi
  151. fi
  152. for i in ${tmp[@]}
  153. do
  154. :
  155. mainList+=($i)
  156. done
  157. else
  158. local complete=1
  159. if [ ! -z $3 ] ; then
  160. skipList+=("$1 repo: 'sudo add-apt-repository ppa:$3'")
  161. if [ ! -z $4 ] ; then
  162. skipList+=("$1 repo 2: 'sudo add-apt-repository ppa:$4'")
  163. fi
  164. fi
  165. for i in ${tmp[@]}
  166. do
  167. :
  168. skipList+=($i)
  169. done
  170. fi
  171. echo
  172. if [ $complete -eq 0 ] ; then
  173. return 0
  174. else
  175. return 1
  176. fi
  177. }
  178. function downloadPackage() {
  179. clear
  180. if [ -f $2 ] ; then
  181. wget -O $2.new $3 && rm $1
  182. if [ $? -ne 0 ] ; then
  183. mv $2.new $2
  184. echo
  185. return 0
  186. else
  187. logInfo 3 "$1 failed to download: $3"
  188. return 1
  189. fi
  190. else
  191. wget -O $2 $3
  192. echo
  193. return 0
  194. fi
  195. }
  196. function askRemove() {
  197. clear
  198. echo "Remove '$1' from the system?"
  199. echo
  200. read -p "Proceed? " -n 1 -r
  201. if [[ $REPLY =~ ^[Yy]$ ]] ; then
  202. local complete=0
  203. echo
  204. echo "Removing '$1' and any dependencies from system."
  205. sudo apt-get -yqq autoremove $1
  206. if [ $? -eq 0 ] ; then
  207. echo "#### Done with $1 ####"
  208. return 0
  209. else
  210. echo "#### Failed removal for $1 ####"
  211. return 1
  212. fi
  213. fi
  214. }
  215. ############################################################
  216. # START!
  217. ############################################################
  218. clear
  219. #crap, fix this (1)
  220. echo "Hello $USER"
  221. sudo clear
  222. # run log
  223. logInfo 0 "Beginning super-setup $sVer run by $USER"
  224. echo "#### Installing lsb-core to prevent errors in script."
  225. sudo apt-get -yqq install lsb-core && echo
  226. echo "#### Installing figlet for fun and mirth!"
  227. sudo apt-get -yqq install figlet
  228. echo "#### Installing dctrl-tools to check for installed packages."
  229. sudo apt-get -yqq install dctrl-tools
  230. mkdir -p ~/Downloads/Keepers
  231. bannerBig "Beginning Super Amazing Awesome Script of Doom" "version number $sVer" && sleep 2
  232. # declare 64 bit dependencies here
  233. if [ `uname -m` = "x86_64" ] ; then
  234. sudo dpkg --add-architecture i386
  235. chromeVer=amd64
  236. skypeVer=64
  237. else
  238. chromeVer=i386
  239. skypeVer=32
  240. fi
  241. ############################################################
  242. # arrays and variables
  243. ############################################################
  244. # mainlist will be installed, others are optionally appended to this
  245. declare -a mainList=( python-software-properties pkg-config software-properties-common rar unrar compizconfig-settings-manager compiz-plugins compiz-plugins-extra ghex gksu preload wmctrl dkms curl gcc pinta Unetbootin gprename qbittorrent smartmontools medit gparted )
  246. # first app list, no repo's required
  247. declare -a mediaList=( ubuntu-restricted-extras audacity audacious vlc mpv lame libav-tools calibre libdvdread4 gimp flashplugin-installer k3b flac faac faad sox ffmpeg2theora libmpeg2-4 uudeview mpeg3-utils mpegdemux liba52-dev mpeg2dec vorbis-tools id3v2 mpg321 mpg123 libflac++6 icedax lame libmad0 libjpeg-progs libdvdnav4 ) #odd logic, bluray # libdvdcss2 libdvdread4
  248. declare -a webcamList=( cheese gnome-video-effects-extra )
  249. declare -a sharingList=( nfs-common filezilla cifs-utils ssh samba samba-common smbclient apache2 )
  250. declare -a gameList=( xserver-xorg-dev p7zip-full scanmem glibc-doc-reference playonlinux wine ttf-mscorefonts-installer )
  251. declare -a devList=( eclipse git-core git subversion byacc flex build-essential checkinstall cvs mercurial automake ruby ruby-capybara cucumber bundler nodejs rbenv bison openssl libreadline6 libreadline6-dev zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev libtool )
  252. declare -a unityTweakList=( unity-tweak-tool )
  253. declare -a chromiumList=( chromium-browser flashplugin-installer pepperflashplugin-nonfree )
  254. # download apps
  255. declare -a chrome=( google-chrome-stable )
  256. declare -a chromeList=( libxss1 libappindicator1 libcurl3 )
  257. declare -a skypeList=( skype )
  258. # third Party apps requiring repo's
  259. declare -a xbmcList=( kodi )
  260. declare -a handbrakeList=( handbrake-gtk )
  261. declare -a gnomeList=( gnome-shell gnome-shell-extensions )
  262. declare -a blurayList=( libaacs0 libbluray-bdj libbluray1 )
  263. declare -a halList=( hal hal-info )
  264. declare -a playmusicList=( google-musicmanager-beta )
  265. # third Party apps repo's
  266. wineRepo='ubuntu-wine/ppa'
  267. xbmcRepo='team-xbmc/ppa'
  268. gnomeRepo1='gnome3-team/gnome3-next'
  269. gnomeRepo2='gnome3-team/gnome3-staging'
  270. blurayRepo='n-muench/vlc'
  271. halRepo='mjblenner/ppa-hal'
  272. handbrakeRepo='stebbins/handbrake-snapshots'
  273. # downloaded apps # CURL
  274. chromeFile=~/Downloads/Keepers/google-chrome-stable_current_$chromeVer.deb
  275. chromeWeb=https://dl.google.com/linux/direct/google-chrome-stable_current_$chromeVer.deb
  276. skypeFile=~/Downloads/Keepers/skype-linux-beta-ubuntu-$skypeVer.deb
  277. skypeWeb=http://www.skype.com/go/getskype-linux-beta-ubuntu-$skypeVer
  278. steamFile=~/Downloads/Keepers/steam_latest.deb
  279. steamWeb=http://repo.steampowered.com/steam/archive/precise/steam_latest.deb
  280. sc2File=~/Downloads/Keepers/StarCraft-II-Setup-enGB.exe
  281. sc2Web=http://dist.blizzard.com/downloads/sc2-installers/full/StarCraft-II-Setup-enGB.exe
  282. diabloFile=~/Downloads/Keepers/Diablo-III-Setup-enGB.exe
  283. diabloWeb=http://dist.blizzard.com/downloads/d3-installers/9ed8c6bce632597fa6646acda77b8025/retail_1/Diablo-III-Setup-enGB.exe
  284. # removal apps
  285. declare -a removeList=( transmission-common gedit-common )
  286. ################################################################################
  287. # Ask questions...
  288. ################################################################################
  289. bannerBig "Section 1 of 2" "Applications from Ubuntu Main & .deb packages."
  290. echo ${mainList[*]} && sleep 3
  291. if ! appCheck 1 sharingList ; then
  292. askInstall "File Sharing Software" sharingList[@]
  293. fi
  294. if ! appCheck 1 unityTweakList ; then
  295. askInstall "Unity Tweak Tool" unityTweakList[@]
  296. fi
  297. if ! appCheck 1 mediaList ; then
  298. askInstall "Media Software" mediaList[@]
  299. if [ $? -eq 0 ] ; then
  300. dvdplayback=true
  301. handbrake=true
  302. blurayskip=false
  303. echo
  304. echo "Include Dolby Support?"
  305. echo
  306. read -p "Proceed? " -n 1 -r
  307. echo
  308. echo
  309. if [[ $REPLY =~ ^[Yy]$ ]]
  310. then
  311. mainlist+=('pavucontrol')
  312. fi
  313. fi
  314. else
  315. blurayskip=true
  316. handbrake=false
  317. dvdplayback=false
  318. fi
  319. if ! appCheck 1 webcamList ; then
  320. askInstall "Optional Web Cam Extras" webcamList[@]
  321. fi
  322. if ! appCheck 1 chromiumList ; then
  323. askInstall "Chromium Browser" chromiumList[@]
  324. if [ $? -eq 0 ] ; then
  325. chromium=true
  326. fi
  327. fi
  328. if ! appCheck 1 chrome ; then
  329. askInstall "Google Chrome Browser" chromeList[@]
  330. if [ $? -eq 0 ] ; then
  331. chromeDownload=true
  332. fi
  333. fi
  334. if ! appCheck 1 skypeList ; then
  335. bannerBig "Download Skype?" "manual install required..."
  336. read -p "Proceed? " -n 1 -r
  337. echo
  338. echo
  339. if [[ $REPLY =~ ^[Yy]$ ]]
  340. then
  341. skypeDownload=true
  342. else
  343. skipList+=('Skype Installer Available')
  344. skipList+=('To install Skype visit skype.com/en/download-skype/skype-for-linux/')
  345. fi
  346. fi
  347. if ! appCheck 1 devList ; then
  348. askInstall "Developer Kit Software" devList[@]
  349. fi
  350. if ! appCheck 1 gameList ; then
  351. askInstall "Game Software" gameList[@]
  352. if [ $? -eq 0 ] ; then
  353. games=true
  354. fi
  355. else
  356. games=false
  357. wineInstall=false
  358. fi
  359. if [ "$games" = true ] ; then
  360. echo
  361. echo "Add Wine Repo and update to the latest version?"
  362. read -p "This is required for Steam under Wine, are you sure? " -n 1 -r
  363. echo
  364. if [[ $REPLY =~ ^[Yy]$ ]]
  365. then
  366. wineInstall=true #defer for update
  367. addPPA $wineRepo
  368. fi
  369. echo
  370. echo "Playing Starcraft II and/or Diablo III through Wine? "
  371. echo "1. Both"
  372. echo "2. Starcraft II only"
  373. echo "3. Diablo III only"
  374. echo
  375. read -p "Enter 1, 2 or 3. " choice
  376. echo
  377. case $choice in
  378. 1 ) # both
  379. sc2Download=true
  380. diabloDownload=true
  381. kernelMode=true ;;
  382. 2 ) # sc2
  383. sc2Download=true
  384. diabloDownload=false
  385. kernelMode=true ;;
  386. 3 ) # diablo
  387. diabloDownload=true
  388. sc2Download=false
  389. kernelMode=true ;;
  390. * )
  391. echo "Cancelled/Invalid input." >> ~/super-setup.log
  392. echo ;;
  393. esac
  394. fi
  395. bannerBig "Section 2 of 2" "These applications need additional Repositories in order to be installed." && sleep 3
  396. if ! appCheck 1 xbmcList ; then
  397. askInstall "Kodi Media Centre" xbmcList[@] $xbmcRepo
  398. fi
  399. if [ "$handbrake" = true ]; then
  400. if ! appCheck 1 handbrakeList ; then
  401. askInstall "HandBrake - DVD ripper" handbrakeList[@] $handbrakeRepo
  402. fi
  403. fi
  404. if ! appCheck 1 gnomeList ; then
  405. askInstall "GNOME 3 - Desktop Manager" gnomeList[@] $gnomeRepo1 $gnomeRepo2
  406. fi
  407. if ! appCheck 1 halList ; then
  408. askInstall "HAL - DVD streaming 4od" halList[@] $halRepo
  409. fi
  410. if ! appCheck 1 playmusicList ; then
  411. askInstall "Google Play Music - beta" playmusicList[@]
  412. if [ $? -eq 0 ] ; then
  413. sudo sh -c 'echo "deb http://dl.google.com/linux/musicmanager/deb/ stable main" >> /etc/apt/sources.list.d/google-musicmanager.list'
  414. wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
  415. fi
  416. fi
  417. if [ "$bluraySkip" = false ]; then
  418. app_check 1 blurayList
  419. if [ $? -eq 1 ] ; then
  420. askInstall "Bluray support - VLC Extension" blurayList[@] $blurayRepo
  421. if [ $? -eq 0 ] ; then
  422. mkdir -p ~/.config/aacs/
  423. if [ -f /home/$USER/.config/aacs/KEYDB.cfg ] ; then
  424. sudo rm -f /home/$USER/.config/aacs/KEYDB.cfg
  425. wget -O /home/$USER/.config/aacs/KEYDB.cfg http://vlc-bluray.whoknowsmy.name/files/KEYDB.cfg
  426. fi
  427. fi
  428. fi
  429. fi
  430. ############################################################
  431. # begin install
  432. ############################################################
  433. bannerBig "Right then!" "Updating and installing software..."
  434. cleanUpgrade
  435. # wine version now that apt-get is updated
  436. if [ "$wineInstall" = true ] ; then
  437. declare -a WineVersion
  438. wineVersion=(`apt-cache search --names-only wine[0-9]*[.][0-9]* | awk -F' ' '{ print $1 }' | awk -F'-' '{ print $1 }' | sort -nr | uniq`)
  439. mainlist+=(${wineVersion[0]})
  440. fi
  441. # application install
  442. for i in "${mainList[@]}"
  443. do
  444. :
  445. runInstall $i
  446. if [ $? -ne 0 ] ; then
  447. failList+=($i)
  448. fi
  449. done
  450. # DVD Script
  451. if [ "$dvdplayback" = true ] ; then
  452. sudo /usr/share/doc/libdvdread4/install-css.sh
  453. echo
  454. fi
  455. # download and installs
  456. if [ "$chromium" = true ] ; then
  457. sudo update-pepperflashplugin-nonfree --install
  458. fi
  459. if [ "$chromeDownload" = true ] ; then
  460. downloadPackage "Google Chrome" $chromeFile $chromeWeb
  461. if [ $? -eq 0 ] ; then
  462. sudo dpkg -i $chromeFile
  463. rm /home/$USER/.config/google-chrome/SingletonLock
  464. fi
  465. fi
  466. if [ "$skypeDownload" = true ] ; then
  467. downloadPackage "Skype - beta" $skypeFile $skypeWeb
  468. fi
  469. if [ "$games" = true ] ; then
  470. downloadPackage "Steam" $steamFile $steamWeb
  471. fi
  472. if [ "$sc2Download" = true ] ; then
  473. downloadPackage "StarCraft II (exe)" $sc2File $sc2Web
  474. fi
  475. if [ "$diabloDownload" = true ] ; then
  476. downloadPackage "Diable III (exe)" $diabloFile $diabloWeb
  477. fi
  478. if [ "$dvdPlayback" = true ] ; then
  479. sudo /usr/share/doc/libdvdread4/install-css.sh
  480. fi
  481. # ask about removing some crap
  482. for i in "${removeList[@]}"
  483. do
  484. :
  485. appCheck 0 $i
  486. if [ $? -eq 0 ] ; then
  487. askRemove $i
  488. fi
  489. done
  490. ############################################################
  491. # install done failures and skip
  492. ############################################################
  493. declare -a failList
  494. declare -i failed=0
  495. for i in "${failList[@]}"
  496. do
  497. :
  498. failed=`expr $failed + 1`
  499. done
  500. if [ $failed -ne 0 ] ; then
  501. declare -a failList2=()
  502. clear
  503. logInfo 2 "Some installations failed, these include:"
  504. echo
  505. for i in "${failList[@]}"
  506. do
  507. :
  508. logInfo 2 ":: $i"
  509. done
  510. echo
  511. read -p "Retry these apps? " -n 1 -r
  512. echo
  513. if [[ $REPLY =~ ^[Yy]$ ]]
  514. then
  515. for i in "${failList[@]}"
  516. do
  517. :
  518. runInstall $i
  519. if [ $? -ne 0 ] ; then
  520. failList2+=($i)
  521. fi
  522. done
  523. failed=0
  524. for i in "${failList2[@]}"
  525. do
  526. :
  527. failed=`expr $failed + 1`
  528. done
  529. if [ $failed -ne 0 ] ; then
  530. clear
  531. logInfo 3 "Some installations failed thrice, these include:"
  532. echo
  533. for i in "${failList2[@]}"
  534. do
  535. :
  536. if [ "$i" = 'kodi' ] ; then
  537. logInfo 3 ":: $i :: http://kodi.wiki/view/HOW-TO:Install_Kodi_for_Linux"
  538. else
  539. logInfo 3 ":: $i"
  540. fi
  541. done
  542. fi
  543. else
  544. echo
  545. logInfo 3 "Some installations failed twice, these include:"
  546. echo
  547. for i in "${failList2[@]}"
  548. do
  549. :
  550. if [ "$i" = 'kodi' ] ; then
  551. logInfo 3 ":: $i"
  552. logInfo 3 ":: http://kodi.wiki/view/HOW-TO:Install_Kodi_for_Linux"
  553. else
  554. logInfo 3 ":: $i"
  555. fi
  556. done
  557. fi
  558. fi
  559. declare -a skipList=()
  560. declare -i skipped=0
  561. for i in "${skipList[@]}"
  562. do
  563. :
  564. skipped=`expr $skipped + 1`
  565. done
  566. if [ $skipped -ne 0 ] ; then
  567. bannerSmall "Skipped item details."
  568. logInfo 1 "You opted out of installing some apps during the script."
  569. logInfo 1 "You can use the following command to install them:"
  570. logInfo 1 "'sudo apt-get install APPNAME'"
  571. echo
  572. logInfo 1 "The following are from the Ubuntu Repository"
  573. logInfo 1 "Or installed from: /home/$USER/Downloads/Keepers:"
  574. for i in "${skipList[@]}"
  575. do
  576. :
  577. logInfo 1 ":: $i"
  578. done
  579. sleep 1
  580. fi
  581. if [ "$wineInstall" = true ] ; then
  582. logInfo 1 "Alternate wine versions available (apt source added):"
  583. for i in "${wineVersion[@]}"
  584. do
  585. :
  586. logInfo 1 ":: $i"
  587. done
  588. sleep 1
  589. fi
  590. ############################################################
  591. # fail/skip done, final messages
  592. ############################################################
  593. echo && cleanUpgrade
  594. bannerSmall "Super Amazing Awesome Script of Doom Completed!" "$USER completed this run, version number $sVer !"
  595. if [ "$kernelMode" = true ] ; then
  596. sudo sysctl kernel.yama.ptrace_scope=0
  597. logInfo 1 "Blizzard games require a non-default kernel setting:"
  598. logInfo 1 ":: 'sudo sysctl kernel.yama.ptrace_scope=0'"
  599. logInfo 1 "Kernel mode has been SET, change 0 to 1 in order to reset."
  600. echo
  601. fi
  602. if [ "$steam" = true ] || [ "$sc2Download" = true ] || [ "$diabloDownload" = true ] || [ "$skypeDownload" = true ]; then
  603. bannerSmall "Game options selected, file locatations:"
  604. if [ "$skypeDownload" = true ] ; then
  605. logInfo 1 "Skype installer in shell is flakey, run this is GUI:"
  606. logInfo 1 "$skypeFile"
  607. echo
  608. fi
  609. if [ "$sc2Download" = true ] ; then
  610. logInfo 1 "StarCraft II is located here, run this in PlayOnLinux:"
  611. logInfo 1 "$sc2File"
  612. echo
  613. fi
  614. if [ "$diabloDownload" = true ] ; then
  615. logInfo 1 "Diablo III is located here, run this in PlayOnLinux:"
  616. logInfo 1 "$diabloFile"
  617. echo
  618. fi
  619. if [ "$steam" = true ] ; then
  620. logInfo 1 "Steam installer in shell is flakey, run this is GUI:"
  621. logInfo 1 "$steamFile"
  622. echo
  623. fi
  624. fi
  625. logInfo 0 "Super-setup $sVer completed by $USER."
  626. echo >> ~/super-setup.log
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement