#/bin/sh # Скрипт доступен на условиях GNU GPL. Автор 3245 e-mail: freddy@land.ru, ICQ: 260297874, Skype: v1nn1-puh #---- Константы ------------------------------------------------- GUI=1 #---------------------------------------------------------------- #---- Функции ------------------------------------------------- usage_install() { set +x # WARNING: do not use single quote in any package description; that breaks the gui menu. echo " install_OO_3.3.0_pro Установка OO 3.3.0 pro от компании Инфра-Ресурс. Для продолжения нажмите кнопку ОК" } usage_update() { set +x # WARNING: do not use single quote in any package description; that breaks the gui menu. echo " update_OO_3.2.1_pro Обновление OO 3.2.1 pro до версии 3.3.0. Для продолжения нажмите кнопку ОК" } showmenu_install() { echo "zenity --title 'Установка OpenOffice Pro от компании Инфра-Ресурс' --text 'Возможные варианты установки' --list --checklist --column '' --column Пакет --column Описание --height 150 --width 850 \\" > test.sh usage_install | grep '^ [0-9a-z]' | sed 's/^ \([^ ]*\) *\(.*\)/TRUE "\1" '"'\2'/" | sed 's/$/ \\/' >> test.sh todo="`sh test.sh | tr '|' ' '`" if test "$todo"x = x then # Clean tmp file rm test.sh exit 0 fi } showmenu_update() { echo "zenity --title 'Установка OpenOffice Pro от компании Инфра-Ресурс' --text 'Возможные варианты установки' --list --checklist --column '' --column Пакет --column Описание --height 150 --width 800 \\" > test.sh usage_update | grep '^ [0-9a-z]' | sed 's/^ \([^ ]*\) *\(.*\)/TRUE "\1" '"'\2'/" | sed 's/$/ \\/' >> test.sh todo="`sh test.sh | tr '|' ' '`" if test "$todo"x = x then # Clean tmp file rm test.sh exit 0 fi } #Trivial test internet connection try_internet_connection() { ping -c 3 ya.ru > /dev/null if [ $? -ne 0 ] then zenity --error \ --text="Ошибка подключения к сети Интернет! Проверьте подключение и запустите скрипт еще раз." exit 0 fi } oo_select() { # Определяем установленную версию openoffice ( pro или ванилька ) и в зависимости от этого предлагаем - установить или обновить. В случае если требуемая версия не обнаружена - выход. if [ "`dpkg -s openoffice.org-base-core | grep "Version: 1:3.2.0"`" = "Version: 1:3.2.0-7ubuntu4.2" ]; then showmenu_install else if [ "`dpkg -s openoffice.org3-base | grep "Version: 3.2.1-19"`" = "Version: 3.2.1-19" ]; then showmenu_update else zenity --text 'Не обнаружена требуемая версия OpenOffice.' --error exit 0 fi fi } # Start start() { echo Внимание!!! >OO_help.txt echo "" >>OO_help.txt echo Данная программа позволяет установить OpenOffice версии 3.3.0 pro от компании "Инфра-Ресурс" в Ubuntu 10.04.* заменив OpenOffice >>OO_help.txt echo версии 3.2.0 установленный в дистрибутиве по умолчанию. >>OO_help.txt echo "" >>OO_help.txt echo Если у вас уже установлен OpenOffice версии 3.2.1 pro от компании "Инфра-Ресурс", вы сможете обновить его до текущей версии 3.3.0 >>OO_help.txt echo "" >>OO_help.txt echo Программа автоматически определяет установленную версию OpenOffice и в зависимости от этого предлагает установку или обновление.>>OO_help.txt echo "" >>OO_help.txt echo Весь процесс установки записывается в файл OOo_3.3.0_install.log, процесс обновления в файл OOo_3.2.1_update.log >>OO_help.txt echo В случае возникновения ошибки во время работы программы, вы можете отправить соответствующий файл на электронную почту freddy@land.ru - я постараюсь вам помочь. >>OO_help.txt echo "" >>OO_help.txt echo Требования программы установки: >>OO_help.txt echo 1. Установленная Ubuntu 10.04.* "(i686/x64)" >>OO_help.txt echo 2. Подключение к сети интернет >>OO_help.txt echo 3. Отсутствие запущенных приложений - Менеджер пакетов Synaptic и Центр приложений Ubuntu >>OO_help.txt echo 4. "Хорошее настроение :-)" >>OO_help.txt echo "" >>OO_help.txt zenity --title 'Информация по установке' --text-info --filename OO_help.txt --height 420 --width 550 } # End end() { if [ "`dpkg -s openoffice.org3-base | grep "Version: 3.3.0-20"`" = "Version: 3.3.0-20" ]; then zenity --text 'Установка успешно завершена!' --info else zenity --text 'Установка завершена некорректно' --error fi } #---------------------------------------------------------------- #----- Функции установки/обновления OO---------- update_OO_load() { # Пишем весь процесс установки в log файл npipe=/tmp/$$.tmp trap "rm -f $npipe" EXIT mknod $npipe p tee <$npipe OOo_3.2.1_update.log & exec 1>&- exec 1>$npipe 2>&1 # Заносим в log файл билд ОС echo Установленная версия ОС cat /etc/issue.net # Clean tmp file rm test.sh # Определяем переменные MD5SUM_LINK=http://download.i-rs.ru/pub/openoffice/3.3.0/ru/MD5SUM MD5SUM_FILE=MD5SUM OO_x64_DOWNLOAD_LINK=http://download.i-rs.ru/pub/openoffice/3.3.0/ru/OOo_3.3.0_Linux_x86-64_install-deb_ru_infra.tar.gz OO_i686_DOWNLOAD_LINK=http://download.i-rs.ru/pub/openoffice/3.3.0/ru/OOo_3.3.0_Linux_x86_install-deb_ru_infra.tar.gz OO_x64_FILE=OOo_3.3.0_Linux_x86-64_install-deb_ru_infra.tar.gz OO_i686_FILE=OOo_3.3.0_Linux_x86_install-deb_ru_infra.tar.gz # Создаем временную директорию mkdir -p OO_temp cd OO_temp # Скачиваем MD5-суммы файлов wget -c $MD5SUM_LINK # Присваиваем значения MD5-сумм файлов переменным OO_x64_SITE_MD5SUM=`grep $OO_x64_FILE MD5SUM | awk '{print $1}'` OO_i686_SITE_MD5SUM=`grep $OO_i686_FILE MD5SUM | awk '{print $1}'` # Определяем платформу i686 или x64, скачиваем нужный пакет, сверяем MD5-сумму файла. if [ "`uname -m`" = "x86_64" ]; then until [ "'$OO_x64_SITE_MD5SUM'" = "'$OO_x64_FILE_MD5SUM'" ] do wget -c $OO_x64_DOWNLOAD_LINK OO_x64_FILE_MD5SUM=`md5sum OOo_3.3.0_Linux_x86-64_install-deb_ru_infra.tar.gz | awk '{print $1}'` done else if [ "`uname -m`" = "i686" ]; then until [ "'$OO_i686_SITE_MD5SUM'" = "'$OO_i686_FILE_MD5SUM'" ] do wget -c $OO_i686_DOWNLOAD_LINK OO_i686_FILE_MD5SUM=`md5sum OOo_3.3.0_Linux_x86_install-deb_ru_infra.tar.gz | awk '{print $1}'` done else zenity --error \ --text="Не удалось определить платформу! Платформа должна быть i686 или x86_x64." exit 0 fi fi # Распаковка архива под требуемую платформу if [ "`uname -m`" = "x86_64" ]; then tar -xvf $OO_x64_FILE else if [ "`uname -m`" = "i686" ]; then tar -xvf $OO_i686_FILE else zenity --error \ --text="Не удалось найти пакет! Платформа должна быть i686 или x86_x64." exit 0 fi fi # Устанавливаем Java # Проверка на установленную sun-java6-jre сделана по просьбе пользователя sanb # у кого она стоит тем openjdk-6-jre ставить не надо. if [ "`dpkg -s sun-java6-jre | grep "Status: install ok installed"`" != "Status: install ok installed" ]; then gksudo "apt-get install -y openjdk-6-jre" else echo "sun-java6-jre - детектед" fi # Удаляем OpenOffice версии 3.2.1 от от компании "Инфра-Ресурс" установленный ранее. gksudo "apt-get purge -y openoffice.org-ure openoffice.org-debian-menus ooobasis3.2-core01 ooobasis3.2-core02 ooobasis3.2-core03 ooobasis3.2-core04 ooobasis3.2-core05 ooobasis3.2-core06 ooobasis3.2-core07 ooobasis3.2-draw ooobasis3.2-extension-mediawiki-publisher ooobasis3.2-extension-pdf-import ooobasis3.2-extension-pfw ooobasis3.2-extension-presentation-minimizer ooobasis3.2-extension-presenter-screen ooobasis3.2-extension-report-builder ooobasis3.2-gnome-integration ooobasis3.2-graphicfilter ooobasis3.2-images ooobasis3.2-impress ooobasis3.2-javafilter ooobasis3.2-math ooobasis3.2-onlineupdate ooobasis3.2-ooofonts ooobasis3.2-ooolinguistic ooobasis3.2-pyuno ooobasis3.2-ru ooobasis3.2-testtool ooobasis3.2-writer ooobasis3.2-xsltfilter openoffice.org3 ooobasis3.2-base ooobasis3.2-binfilter ooobasis3.2-calc ooobasis3.2-ru-base ooobasis3.2-ru-binfilter ooobasis3.2-ru-calc ooobasis3.2-ru-draw ooobasis3.2-ru-help ooobasis3.2-ru-impress ooobasis3.2-ru-math ooobasis3.2-ru-res ooobasis3.2-ru-writer openoffice.org3-base openoffice.org3-calc openoffice.org3-dict-de-de openoffice.org3-dict-en openoffice.org3-dict-ru openoffice.org3-dict-uk openoffice.org3-draw openoffice.org3-impress openoffice.org3-math openoffice.org3-ru openoffice.org3-writer" # Подчищаем оставшиеся файлы - не требуется так как сборки совместимы между собой #gksudo "rm -rf /opt/openoffice.org3" # Устанавливаем OpenOffice.org Pro от компании "Инфра-Ресурс". gksudo "dpkg -R -i ru/DEBS/" # Перезапуск gnome-panel - чтобы офис появился в главном меню pkill gnome-panel # Удаляем временные файлы. rm -rf ru } #---------------------------------------------------------------- install_OO_load() { # Пишем весь процесс установки в log файл npipe=/tmp/$$.tmp trap "rm -f $npipe" EXIT mknod $npipe p tee <$npipe OOo_3.3.0_install.log & exec 1>&- exec 1>$npipe 2>&1 # Заносим в log файл билд ОС echo Установленная версия ОС cat /etc/issue.net # Clean tmp file rm test.sh # Определяем переменные MD5SUM_LINK=http://download.i-rs.ru/pub/openoffice/3.3.0/ru/MD5SUM MD5SUM_FILE=MD5SUM OO_x64_DOWNLOAD_LINK=http://download.i-rs.ru/pub/openoffice/3.3.0/ru/OOo_3.3.0_Linux_x86-64_install-deb_ru_infra.tar.gz OO_i686_DOWNLOAD_LINK=http://download.i-rs.ru/pub/openoffice/3.3.0/ru/OOo_3.3.0_Linux_x86_install-deb_ru_infra.tar.gz OO_x64_FILE=OOo_3.3.0_Linux_x86-64_install-deb_ru_infra.tar.gz OO_i686_FILE=OOo_3.3.0_Linux_x86_install-deb_ru_infra.tar.gz # Создаем временную директорию mkdir -p OO_temp cd OO_temp # Скачиваем MD5-суммы файлов wget -c $MD5SUM_LINK # Присваиваем значения MD5-сумм файлов переменным OO_x64_SITE_MD5SUM=`grep $OO_x64_FILE MD5SUM | awk '{print $1}'` OO_i686_SITE_MD5SUM=`grep $OO_i686_FILE MD5SUM | awk '{print $1}'` # Определяем платформу i686 или x64, скачиваем нужный пакет, сверяем MD5-сумму файла. if [ "`uname -m`" = "x86_64" ]; then until [ "'$OO_x64_SITE_MD5SUM'" = "'$OO_x64_FILE_MD5SUM'" ] do wget -c $OO_x64_DOWNLOAD_LINK OO_x64_FILE_MD5SUM=`md5sum OOo_3.3.0_Linux_x86-64_install-deb_ru_infra.tar.gz | awk '{print $1}'` done else if [ "`uname -m`" = "i686" ]; then until [ "'$OO_i686_SITE_MD5SUM'" = "'$OO_i686_FILE_MD5SUM'" ] do wget -c $OO_i686_DOWNLOAD_LINK OO_i686_FILE_MD5SUM=`md5sum OOo_3.3.0_Linux_x86_install-deb_ru_infra.tar.gz | awk '{print $1}'` done else zenity --error \ --text="Не удалось определить платформу! Платформа должна быть i686 или x86_x64." fi fi # Распаковка архива под требуемую платформу if [ "`uname -m`" = "x86_64" ]; then tar -xvf $OO_x64_FILE else if [ "`uname -m`" = "i686" ]; then tar -xvf $OO_i686_FILE else zenity --error \ --text="Не удалось найти пакет! Платформа должна быть i686 или x86_x64." fi fi # Устанавливаем Java # Проверка на установленную sun-java6-jre сделана по просьбе пользователя sanb # у кого она стоит тем openjdk-6-jre ставить не надо. if [ "`dpkg -s sun-java6-jre | grep "Status: install ok installed"`" != "Status: install ok installed" ]; then gksudo "apt-get install -y openjdk-6-jre" else echo "sun-java6-jre - детектед" fi # Удаляем ванильную сборку OpenOffice версии 3.2 gksudo "apt-get purge -y openoffice.org-core openoffice.org-l10n-en-gb openoffice.org-l10n-en-za openoffice.org-common ure uno-libs3 openoffice.org-l10n-common openoffice.org-style-human" # Удаляем конфигурационные файлы OpenOffice версии 3.2.0 в домашнем каталоге пользователя. rm -rf ~/.openoffice.org # Устанавливаем OpenOffice.org Pro от компании "Инфра-Ресурс". gksudo "dpkg -R -i ru/DEBS/" # Перезапуск gnome-panel - чтобы офис появился в главном меню pkill gnome-panel # Удаляем временные файлы. rm -rf ru } #---------------------------------------------------------------- #--------- Программа ----------------------------------------- start # Clean tmp file rm OO_help.txt try_internet_connection case $GUI in 1) oo_select ; set $todo ;; esac while test "$1" != "" do PACKAGE=$1 case $1 in -v) set -x;; update_OO_3.2.1_pro) update_OO_load;; install_OO_3.3.0_pro) install_OO_load;; esac shift done end