Пересборка пакета

Материал из Слакваря

Перейти к: навигация, поиск
Эта статья находится в процессе написания.

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

Содержание

Постановка задачи

В Slackware 13 консольный браузер links-2.2 собран без поддержки консоли в utf-8. А в Arch Linux есть патч, добавляющий такую поддержку: http://aur.archlinux.org/packages/links-utf8/links-utf8.tar.gz.

Соберём для Slackware links с поддержкой utf8.

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

Подготовка

Дабы поддерживать порядок на диске, создадим под нашу задачу отдельный каталог:

# mkdir -p ~/bld/links ; cd ~/bld/links

На установочном DVD или на CD дисках -source- имеются исходные тексты программ, включённых в дистрибутив, и сценариев сборки пакетов. Скопируем относящееся к links:

# mount /dev/cdrom /mnt/cdrom
# cp -r /mnt/cdrom/source/n/links/* ./

Если дисков нет, загрузим желаемое с одного из зеркал Slackware в сети Интернет, не забудем сделать links.SlackBuild исполняемым:

# wget ftp://mirror.yandex.ru/slackware/slackware-13.0/source/n/links/*
# chmod a+x *.SlackBuild

Загрузим и распакуем патч:

# wget http://aur.archlinux.org/packages/links-utf8/links-utf8.tar.gz
# tar xf links-utf8.tar.gz 
# mv links-utf8/* ./
# rm -r links-utf8 links-utf8.tar.gz

Патчи бывают довольно большими, хранить их в сжатом виде неплохая идея:

# gzip links-2.2-utf8.diff

Адаптация SlackBuild

Подсмотрим в документации (в нашем случае кроме файла PKGBUILD и самого патча ничего нет), есть ли какие-либо особенности применения патча:

patch -i ../${pkgname%-*}-${pkgver}-utf8.diff -p1 || return 1
cd Unicode && LANG=C ./gen && cd .. || return 1
cd intl && ./gen-intl && cd .. || return 1
cd graphics && ./gen && cd .. || return 1

и внесём соответствующие изменения в links.SlackBuild, добавив до вызова configure:

zcat $CWD/links-$VERSION-utf8.diff.gz | patch -p1 || exit 1
cd Unicode && LANG=C ./gen && cd .. || exit 1
cd intl && ./gen-intl && cd .. || exit 1
cd graphics && ./gen && cd .. || exit 1

Заодно исправим переменные (необязательно):

  • NUMJOBS сообразно имеющимся вычислительным мощностям (см. man make, опция -j)
  • BUILD, например, на 1utf8, чтобы различать дистрибутивный и исправленный пакет.

Сборка пакета

Соберём новый пакет:

# ./links.SlackBuild

либо, с указанием переменных в командной строке:

# NUMJOBS=2 BUILD=1utf8 ./links.SlackBuild

Если при сборке были ошибки, устраняем их и выполняем сборку заново.

Приберём за собой ненужное:

# rm -rf PKGBUILD /tmp/package-links /tmp/links-2.2

Установка

Теперь, когда пакет собран, устанавливаем его. Например, так:

# upgradepkg --install-new --reinstall /tmp/links-2.2-*.t?z
  • --install-new на случай, если links не был установлен,
  • --reinstall на случай, если имя устанавливаемого пакета совпадает с именем уже установленного.
Личные инструменты