Самостоятельная сборка JAVA(TM) 2 SE v.1.4.1 из исходников с sun.com

  Эта статья посвящается тем, кто хочет самостоятельно собрать java под конкретную glibc с конкретным gcc. Это очень важно для работы java в новых дистрибутивах, к примеру таких как RedHat-8.0, ведь не секрет, что бинарные SDK и JRE собраны как правило под glibc-2.2.x компилятором gcc-2.9x, что создает большую проблему при работе java приложений. Так же эта проблема существует при работе java в веб-браузерах. Принимая это все во внимание, мною была предпринята попытка собрать SDK и JRE самому, эта попытка полностью оправдала мои ожидания и теперь я имею полностью работоспособную java под glibc-2.3.х для RedHat-8.0. Хотя уже существует сборка компилятором gcc-3.2 java от BlackDown, но она все же собрана под glibc-2.2.x.

  В начале необходимо скачать бинарную Java(TM) 2 SDK Standard Edition 1.4 или 1.4.1, так как это требуется для сборки java, с родного сайта SUN со страницы http://java.sun.com/j2se/1.4.1/download.html. После этого нужно установить SDK, если вы скачали пакет для rpm установки, то его необходимо распаковать как sh j2sdk*.bin, а затем полученный rpm пакет установить как rpm -i j2sdk*.rpm, обычно установка осуществляется в директорию /usr/java/j2sdk-<версия>-<билд>, ее и будем считать как JAVA_HOME в дальнейшем, так как ее потребуется указать при сборке java. Теперь необходимо скачать исходники самой java, для этого надо быть зарегистрированным пользователем на sun.com, если вы таковым не являетесь, то вам придеться зарегистрироваться, заполнив необходимую форму регистрации, не советую указывать СНГ страну при регистрации, лучше укажите штаты... Исходники берутся со страницы http://wwws.sun.com/software/java2/download.html , только учтите одну не мало важную деталь, жители СНГ не могут скачать эти исходники напрямую, то ли из-за этой поправки "Феника-Веника" :))) или как ее там правильно называют, то ли из-за того, что мы еще находимся потенциально в стане врагов USA, вообщем хрен знает из-за чего конкретно, но скачать по линкам получается, только попасть на страницу с линками не получиться, что бы это обойти, вам потребуется свободные буржуйские proxy сервера, список таких серверов можно получить с http://www.freepublicproxies.com/page1.html , там он почти каждый день обновляется, спасибо добрым людям с #rusunix за подсказку, попасть на страницу с линками для скачивания можно практически отовсюду, я например с Южной Кореи заходил:), а далее обычным wget'ом все замечательно забрал напрямую не используя прокси, как говорится, на всякую хитрую ж..., есть нужный палец.....:))) Вам потребуется скачать 2-а архива, исходники Java 2 SDK 1.4.1 - j2sdk-1_4_1-src-scsl.zip, который весит порядка 50 мегов, и хедеры для mozilla, линк которых находится чуть ниже основных исходников и почему-то назван как Download (Mozilla Binaries), по этому линку находится 2-а архива, один для *nix, а другой для виндов, нужно взять тот, который для *nix - j2sdk-1_4_1-mozilla_headers-unix.zip, весит он порядка 7 мегов. Стадию получения нужных нам пакетов можно считать законченной, теперь переходим к самой главной стадии, это сборка.

  Если вы попытаетесь собрать java по sunовскому описалову, то у вас скорее всего ничего не выйдет, если бы все так было просто, то этой бы статьи не появилось:)... Облазив пол инета в поисках хоть какой-либо информации по поводу сборки java, я натолкнулся на интересный сайт некого Tushar Teredesai http://www.linuxfromscratch.org/~tushar/hints/, на его сайте я нашел необходимые патчи и описание, хоть и не совсем я был согласен с описанием, но нужные полезности я все же извлек, до патчей я почти сам дошел, когда сборка останавливалась с ошибками на не существующие класы, то приходилось делать правки в исходниках, но все же его патчи оказались более проработанными и мне пришлость только малость подкрутить свои, я не стал разбивать патчи на мелкие куски и сделал один большой общий... Все свои необходимые скрипты и патчи для сборки java я поместил в архив под именем java_build.tar.bz2, который вы можете свободно скачать с этого сайта и который весит около 300 кил.

    Сборка для RedHat-8.x или других rpm базирующих дистрибутивов
  В архиве java_build.tar.bz2 есть нужный spec файл, который вы найдете в директории spec под именем j2sdk.spec, внутри его вам нужно будет проверить параметр %define bootstrap /usr/java/j2sdk1.4.1_01, т.е. об чем говорилось выше про JAVA_HOME, если вы установили j2sdk-1_4_1_01-fcs-linux-i586.rpm, то править ничего не нужно. Теперь перемещаете j2sdk.spec в /usr/src/redhat/SPEC, а все из директории source моего архива в /usr/src/redhat/SOURCES, только учтите, что j2sdk-1_4_1-src-scsl.zip и j2sdk-1_4_1-mozilla_headers-unix.zip нулевой длины, вы должны будите их заменить своими скаченными ранее. Далее запускаете rpmbuild -ba j2sdk.spec и ждете окончание сборки. На моем 1Ггц атлоне сборка длилась порядка 3-х часов. В результате сборки вы получите 2-а rpm пакета j2re-1.4.1-1.i386.rpm и j2sdk-1.4.1-1.i386.rpm. Оба ставить не рекомендую, ставте тот, который посчитаете нужным...

    Сборка для Slackware-9 или других tgz базирующих дистрибутивов
  В начале нужно распаковать файл j2sdk-1_4_1-src-scsl.zip, который вы скачали ранее, например в директорию /usr/local/src/java, далее в этой директории создаете директорию mozilla и распаковываете в ней j2sdk-1_4_1-mozilla_headers-unix.zip, т.е. этот архив должен быть распакован в директории /usr/local/src/java/mozilla. Из моего архива, из директории source, копируете патч j2sdk-1.4.1-all_patches.patch.bz2 в /usr/local/src/java, распаковаете его bunzip2 и запускаете как patch -p1 < j2sdk-1.4.1-all_patches.patch, далее из моего архива берете файл buildz, который находится в директории build_script, и копируете его в свой /usr/local/src/java, откройте buildz на редактирование и найдите строчку export ALT_BOOTDIR="/usr/java/j2sdk1.4.1", тут вы должны будете указать свой JAVA_HOME, где установлен ваш SDK. После этой операции может спокойно запускать скрипт buildz и ждать окончание сборки, после удачного окончания сборки вы получите в /usr/local/src/java 2-а пакета j2re-1.4.1-slackware9.tgz и j2sdk-1.4.1-slackware9.tgz, установите один из них в дирикторию /opt/java и запустите скрипт из моего архива в дириктории build_script под именем install_end, а так же положите профайлы j2se.csh и j2se.sh в /etc/profile.d или подправте свой bashrc или что там у вас, на тему JAVA_HOME....

Вот собственно и все! Желаю удачи!



17.03.2003 McMCC ([email protected])