LINUX.ORG.RU

Скрипт на установку java

 , ,


0

1

Доброго времени суток. 3 дня на линуксе, имеется задача: есть jarник JavaFX, все работает. Создал .desctop ярлык, написал postinst preinst скрипты. Так вот, preinst ставит java 8. Текст такой:

#!/bin/bash

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
java -version

if [ "$1" = "configure" ] && [ -x "`which update-menus 2>/dev/null`" ] ; then
update-menus
fi

Если просто запустить из терминала $ sh preinst - все номрально ставит. Если собрать деб пакет, то в конце update:

Hit http://ppa.launchpad.net trusty/main Translation-en

Hit http://ppa.launchpad.net trusty/main amd64 Packages

Hit http://ppa.launchpad.net trusty/main i386 Packages

Hit http://ppa.launchpad.net trusty/main Translation-en

E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)

E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?

А вместо install: E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)

E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?

Версия java естественно не определилась.

ЧЯДНТ?

Ответ на: комментарий от anonymous

Ну, первоначально оно было в postinst... Но по ссылке говорится, что apt-get вообще не хорошо в скриптах выполнять. Не очень понял тогда: что делать? И как правильно, если быть точнее.

Akutenshi ()
Ответ на: комментарий от Akutenshi

Я не совсем понял, что он предлагает переместить в etc/cron.d: пакет для установки? Я так понимаю через sudo?

Akutenshi ()

Разве Oracle разрешает устанавливать их сборку (не openjdk) откуда-то кроме их сайта? Разве это не нарушение лицензии?

stevejobs ★★★★☆ ()
Ответ на: комментарий от stevejobs

Не уверен, но о всех руководствах указывается этот репозиторий. Иного выхода поставить 8 java я не нашел. По дефолту ставится 7я или openjdk. Но уточню этот вопрос...

Впрочем, проблему это не отменяет. Как в postinst или preinst запустить скрипт?

Akutenshi ()
Ответ на: комментарий от stevejobs

А, скорее всего можно. При установке пишется лиценщионное соглашение и пользователь подтверждает свое согласие. Мой скрипт просто автоматизирует получение за пользователя

Akutenshi ()
Ответ на: комментарий от stevejobs

там это всё опакечено для разных версий бубунты и дебьяна. и соглашение вылезает после установки.

SevikL ★★★★★ ()
Ответ на: комментарий от stevejobs

«Можно ли распространять Java вместе с разработанным мной программным обеспечением?

Да, программное обеспечение Java можно распространять вместе с разработанным вами программным обеспечением при условии соблюдения положений и условий лицензионного соглашения о распространении двоичного кода Java. Можно ли распространять комплект для разработчиков Java (JDK) на одном компакт-диске с выполняемой средой Java (JRE)?

Да, при условии соблюдения лицензионного соглашения о распространении двоичного кода JDK.»

Резюмируя все выше написанное : все законно ^_^

Akutenshi ()

Вобщем, есть несколько решений и вопросы, которые они ставят: 1) Гугл по cron объяснил что это, но так же, как я понял, эта штука не может выполнить 1 раз через n минут от вызова нужный скрипт. Или я плохо смотрел?. 2) Гугл так же выдает at. Проблема рекурсивная, я должен поставить at (а он не дефолтный), чтобы поставить java8. 3) Взять собранный пакет, не мучаться, дописать скрипт install.sh, который ставит java, потом распаковывает пакет. Все это вместе tar.gz. Насколько плохой такой вариант дистрибьюции? 4) Изменить ярлык, чтобы он вызывал не jarник напрямую, а скрипт ,который проверяет JAVA_HOME и если не установлено, ставит, после, энивей, запускает приложение. Проблема в том, что я так пробовал и ярлык в applications не видно, если нету java, не уверен, правда, в причинах.

Что лучше и есть ли более аккуратный вариант?

Akutenshi ()
Ответ на: комментарий от Deleted

На всякий случай, судя по первым строчкам: именно Debian Wheezy или Debian-based систем? Я собираю под второе, если вообще конкретно, elementaryOS. Посмотрю сейчас подробнее

Akutenshi ()
Ответ на: комментарий от Deleted

это конечно Ъ, но обсуждаемая репа удобнее. и в сквиз умеет и 8-9 жаба есть

SevikL ★★★★★ ()
Ответ на: комментарий от Akutenshi

А судя по всему, оно так. Более того, поддержка только до 7 java, что не подходит (я думал переписать под 7, но благодаря разработчикам javaFX и моим кривым костылям и рукам, придется пеерписывать не мало, поэтому был выбран путь инсталляции из ppa:webupd8team/java) Но спасибо

Akutenshi ()
Ответ на: комментарий от deadNightTiger

Пойду в гугл с этим, слово такое слышал, но это было у человека с Arch-ем. Когда он собирал пакет, эти зависимости сами доустанавливались pacman-ом (?).

Я же этим не интересовался, т.к. по запросу создания deb пакеты мен вылезали исходники, что мне не подходит. Опирался на статью на хабре «собираем deb пакет подробный howto». Есть подозрение, что если я поставлю в зависимости java, то он скачает openjdk, что не подходит, или java 7, что тоже не. Т.е. энивей добавлять при установке надо вышеуказанный репозиторий.

Надеюсь, нигде не ошибся

*ушел в гугл читать*

Akutenshi ()
Ответ на: комментарий от SevikL

таки в Ъ есть любая жаба, хто такой сквиз - не знаю

Deleted ()
Ответ на: комментарий от Akutenshi

Более того, поддержка только до 7 java,

Где вы это блин читаете, у меня в тестинге установлена 8 жава с помощью этой хреновины и все работает.

Deleted ()

Вобщем, было сделано через

(sleep 3 && sh /bin/usr/<myJavaApp>/installJava8.sh) &
в конце postinst. Немного странно для мнея, почему пантеон брыкается добавлять сразу иконку, до этого, но это уже другая тема для разговора. Попробую еще решение через java-package, но позже, еще надо для win аналогичное сделать. По итогам java-package можно считать тему исчерпанной.

Akutenshi ()
Ответ на: комментарий от Akutenshi

В postinst ставить что-то ещё из deb-пакетов? Ужасное решение, не надо так.

pod ★★ ()
Ответ на: комментарий от anonymous

Да, более того не рабоичй, т.к. когда вызывается пользовательское соглашение происходит Abort. Переделал так: В папке с jar распакованным лежит installJava8.sh и run.sh, последний чекает java -version на предмет чего-нибудь полезного, если таки 1.8, то запускаем, если нет, то запускаем installJava8.sh. Проблема, правда, в том, что пользователь (включая меня) не видит как-то этой установки и у меня ощущение, что отследить установилось или нет - нету возможности. gnome-terminal -e command мне не нравится привязкой к конкретному виду терминала - раз ,два, оно у меня не заработало впрочем, тоже, терминал открылся-закрылся. Но тут скорее руки кривые, но я не понял в чем. Сейчас правда пришла мысль в .desctop прописать Terminal=true и попробовать.

Ну и если все будет совсем плохо - при отсутствии java просто писать пользователю, что введи sh /usr/bin... здесь же и дождитесь завершения установки.

Думаю, как-то так.

P.S. Мой английский далек от прекрасного, но java-package я не осилил, я ошибаюсь, или он подразумевает именно дистрибьюция jre, а прогрмма отдельно идет..? Т.е. пакует только java, а не мое приложение. Я в этом как-то запутался и отложил этот вариант

Akutenshi ()
Ответ на: комментарий от Akutenshi

Preinst - проверка на версию java. Если нет 8, сообщение об ошибке. Навроде «Установите Java 8. Для этого сделайте блаблабла». + Java 8 зависимость у пакета.

Вариант 2: зависимость от java-package. Минус в том, что пользователь должен сам выполнить не совсем тривиальную установку. Плюс - пакет из официальных реп.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.