HOWTO: Установка устаревших пакетов

Иногда по каким-либо причином необходимо установить пакет, который был удален из базы данных портежей.

Пример:

bash-2.05b# ls -l /usr/portage/dev-java/sun-jre-bin/
total 44
-rw-r--r--  1 root root 6903 Ноя 29 12:05 ChangeLog
drwxr-xr-x  2 root root  392 Ноя 30 22:06 files
-rw-r--r--  1 root root  242 Июн  3  2004 metadata.xml
-rw-r--r--  1 root root 5334 Окт 26 11:05 sun-jre-bin-1.4.2.09.ebuild
-rw-r--r--  1 root root 5334 Ноя 29 12:05 sun-jre-bin-1.4.2.10.ebuild
-rw-r--r--  1 root root 5010 Ноя 30 21:46 sun-jre-bin-1.5.0.03.ebuild
-rw-r--r--  1 root root 5540 Окт 18 23:35 sun-jre-bin-1.5.0.05.ebuild
bash-2.05b# ls -l /mnt/cdrom/Java/
total 47449
-rwxr-xr-x  1 root root 16565948 Сен 20 09:35 jre-1_5_0_03-linux-i586.bin
-rwxr-xr-x  1 root root 16022868 Сен 20 10:09 jre-1_5_0_03-linux-i586-rpm.bin
-rw-r--r--  1 root root 15997536 Сен 22 00:03 jre-1_5_0_03-windows-i586-p.exe

Есть диск с JRE 1.5.0.03. Но в портежах есть ебилд только для 1.5.0.05. Deltup отпадает, потому как пакет бинарный, да еще и "has fetch restriction turned on". Что же делать, если мы хотим установить jre, но не хотим лазить по сайту Sun и вытягивать 16 мб трафика?

Репозиторий портежей находится по адресу http://www.gentoo.org/cgi-bin/viewcvs.cgi/ . Структура каталогов совпадает с /usr/portage. Смело шагаем по ссылкам dev-java, sun-jre-bin или в адресной строке вводим http://www.gentoo.org/cgi-bin/viewcvs.cgi/dev-java/sun-jre-bin/

Что мы видим? Искомый sun-jre-bin-1.5.0.03.ebuild (dead)! "(dead)" свидетельствует о том, что данный ебилд более не обновляется. Кликаем по ссылке, и видим список ревизий. Загружаем самую последнюю (ссылка "(download)" в самом верху). Сохраняем в /usr/portage/dev-java/sun-jre-bin. Теперь заходим в подкаталог files (и в вебе, и в локальном дереве портежей). Нам нужен также файлик sun-jre-bin-1.5.0.03 (обратите внимание: файл без расширения, это НЕ ebuild). В этом файле прописаны необходимые для установки пакета переменные окружения.

Далее...

bash-2.05b# emerge =sun-jre-bin-1.5.0.03
Calculating dependencies ...done!
>>> emerge (1 of 1) dev-java/sun-jre-bin-1.5.0.03 to /
!!! No package digest file found: /usr/portage/dev-java/sun-jre-bin/files/digest-sun-jre-bin-1.5.0.03
!!! Type "ebuild foo.ebuild digest" to generate it.

Что мы видим? Самого ebuild'а недостаточно, нужен еще digest. Не проблема -- набираем ebuild наш-пакет-версия.ebuild digest, и только после этого -- emerge =наш-пакет-версия. И все у вас получится.

Только не для sun-jre-bin...

bash-2.05b# ebuild /usr/portage/dev-java/sun-jre-bin/sun-jre-bin-1.5.0.03.ebuild digest
!!! jre-1_5_0_03-linux-amd64.bin not found in /usr/portage/distfiles

!!! dev-java/sun-jre-bin-1.5.0.03 has fetch restriction turned on.
!!! This probably means that this ebuild's files must be downloaded
!!! manually.  See the comments in the ebuild for more information.

 * Please download jre-1_5_0_03-linux-i586.bin from:
 * http://javashoplm.sun.com:80/ECom/docs/Welcome.jsp?StoreId=22&PartDetailId=jre-1.5.0_03-oth-JPR&SiteId=JSC&TransactionId=noreg
 * (Select the Linux or Linux AMD64 Self-extracting (.bin), depending on your arch)
 * and move it to /usr/portage/distfiles

На моем диске нет версии jre для AMD64. Для меня это некритично, Athlon 1000 очень трудно сделать 64-битным :) Но для ebuild ... digest -- фатально.

Первое решение, которое приходит в голову -- скачать digest из того же самого репозитория. Именно так я сначала и попытался сделать, но у меня возникли проблемы с файлом Manifest... Я немного помучался, а потом мне в голову пришло другое решение:
touch /usr/portage/distfiles/jre-1_5_0_03-linux-amd64.bin
После выполнения этой команды я снова запустил ebuild ... digest, а затем emerge. И было мне счастье :)

Надеюсь, кто-нибудь найдет результат моих поисков полезным. Спасибо bit за содействие. Между прочим, речь идет о том самом диске с OOo-2-beta2, который я так и не смог использовать... :(

Сразу делаю

Сразу делаю поправку- ни в коем случае не ложите старый ebuild в /usr/portage!!!, ложите в /usr/local/portage (предварительно создав там аналогичную структуру каталогов (в нашем случае mkdir /usr/local/portage ; mkdir /usr/local/portage/{dev-java,dev-java/sun-jre-bin,dev-java/sun-jre-bin/files}) и не забудте прописать в /etc/make.conf строку PORTDIR_OVERLAY="/usr/local/portage"), иначе потеряете его при следущем обновлении древа portage.
_________________
GNU/Wonderland -- GNU/Страна чудес, страна, в которой вы часто бываете, но, в которую, что примечательно, не надо оформлять визу.

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".