Суббота, 23.11.2024, 01:58
Приветствую Вас Гость

[http://lexus.at.ua/] *nixoid's home

Меню сайта
Поиск
Кредитная карта
Заполнить on-line заявку на получение кредитной карты банка Тинькофф.

Главная » Статьи » Linux. » lexus o Linux

Устаревшие пакеты в современной системе.


   Передовой системой gentoo считается по праву, как и другие source-based. Мы сами собираем программы, в отличии от пользователей бинарных дистрибутивов, и все новинки к нам попадают быстрее. Но бывает и так, что нужна программа устаревшей версии. Или такая программа, которая была в портэжах, побыла - да "сплыла".


   Выведеные из официального дерева пакеты (или их версии), можно взять из старых архивов портажей, что я и делал. Но со временем таких пакетов стало много... Проблемы начинаются тогда, когда несколько раз частично обновляешь систему (причиной было почти полное отсутствие интернета). Копятся сборочные скрипты из разных архивов, а ведь дистрибутив постоянно развивается! Более новые файлы .ebuild используют уже другие функции в сборке (я имею ввиду функции описанные в файлах /usr/portage/eclass/*), а пересобирать старые пакеты всё равно прийдётся: это "обеспечит" revdep-rebuild, или python-updater :)

   Выход: распаковывать файлы.eclass вместе со сборочными скриптами, в отдельный для каждого архива каталог, и прописывать этот каталог как оверлей в /etc/make.conf. При сборке пакета из такого "оверлея" emerge будет использовать функции из совместимых со сборочным скриптом файлов.eclass и проблем не будет (если их небыло ранее)). Изобретать принципиально новый "велосипед" для поддержания порядка я не стал, а взял за основу принцип используемый в app-portage/layman:

  1. создал для всей коллекции раритетов каталог /usr/local/old_portage
  2. создал файл /usr/local/old_portage/make.conf (по аналогичному файлу layman'а)
  3. в файл /etc/make.conf вписал строку: source /usr/local/old_portage/make.conf
  4. чтобы уж совсем не перетрудиться написал простейший скрипт для распаковки архивов, с созданием нужных каталогов и внесением записей в конфиг: 

Code


#!/bin/bash
# lexus <l6xus@jabber.ru> on ira-station GNU/Linux 2009-09-29
# part_port-0.01.sh
PORTSKLAD="/usr/local/portsklad"
TARGET="/usr/local/old_portage"
PORTFILE="${1}"; [[ "${PORTFILE:$((${#PORTFILE} - 8)):8}" = ".tar.bz2" ]] || exit 1 && shift
PORTDATE="${PORTFILE:$((${#PORTFILE} - 16)):8}"
PAKG="portage/${1}"
new_portdate() {
  mkdir -p "${TARGET}/${PORTDATE}/portage/profiles" && echo "gentoo_legacy-${PORTDATE}" > "${TARGET}/${PORTDATE}"/portage/profiles/repo_name
  [[ -f "${TARGET}/make.conf" ]] || cat > "${TARGET}/make.conf" << EOF
#${HOSTNAME}:${TARGET}/make.conf список устаревших портэжей для включения в систему (по датам)
PORTDIR_OVERLAY="
\$PORTDIR_OVERLAY
"
EOF
  sed -i "/^PORTDIR_OVERLAY=\"/a${TARGET}\/${PORTDATE}\/portage" ${TARGET}/make.conf
  export PAKG="${PAKG} portage/eclass"
}

[[ -d "${TARGET}/${PORTDATE}" ]] || new_portdate
#cd ${TARGET}/${PORTDATE}

tar -xvjpf ${PORTFILE} -C ${TARGET}/${PORTDATE} ${PAKG}

Скрипт планирую доработать и "научить" распаковывать сразу несколько пакетов (приведённый здесь распаковывает только один пакет), но пока мне лень его переписывать, т.к. в целом я им доволен 8-)

   Теперь если мне нужно было, например, установить sys-devel/gcc-4.2.3 содержавшийся в архиве от 20080327 я распаковывал архив коммандой part-port.sh portage-20080327.tar.bz2 и было мне счастье =)

Конфиг моей "коллекции раритетов" файл /usr/local/old_portage/make.conf :

Code
#ira-station:/usr/local/old_portage/make.conf список устаревших портэжей для включения в систему (по датам) 
PORTDIR_OVERLAY="
/usr/local/old_portage/20080706/portage
/usr/local/old_portage/20081014/portage
/usr/local/old_portage/20080530/portage
/usr/local/old_portage/20081123/portage
/usr/local/old_portage/20080327/portage
/usr/local/old_portage/20081222/portage
/usr/local/old_portage/20080628/portage
$PORTDIR_OVERLAY
"

Примечание: эта статья не дописана; я буду редактировать и дополнять её. Использовать осторожно и с пониманием!


Источник: http://lexus.at.ua/
Категория: lexus o Linux | Добавил: lexus (03.10.2009) | Автор: Алексей W
Просмотров: 1218 | Комментарии: 1 | Рейтинг: 3.0/1
Всего комментариев: 1
1 Suevonne  
0
Oh yeah, fubaluos stuff there you!

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Категории
lexus o Linux [4]
Всё (что не поленюсь записать) буду выкладывать здесь :)
Руководства [4]
Учебники, советы и пр.
Обзоры [1]
Дистрибутивы, софт.
Впечатления [3]
Отзывы, впечатления, эмоции...
Наш опрос
В стакане находится вещество, объём которого равен 50% от вместимости стакана. Вы считаете, что ...
Всего ответов: 167
Статистика

Сегодня здесь были:
Гость
vk.com/formodel22