2.11. Сборка пакетов по исходным текстам
Проблема
Установить готовый пакет не удается из-за того, что он несовместим с вашей системой на двоичном уровне. А может, вы просто предпочитаете компилировать приложения в своей системе или хотите сначала отредактировать исходный код, а затем построить пакет.
Решение
Постройте новую программу из пакета RPM с исходными текстами (SRPM, Source RPM). Загрузите SRPM (в данном примере tuxpaint-2002.10.20-l.src.rpm) в каталог по вашему усмотрению. Проследите за тем, чтобы он подходил для вашей поставки Linux.
Запустите программу установки пакета:
# rpm -ivh tuxpaint-2002.10.20-l.src.rpm
Команда помещает исходные тексты в каталог /usr/src/SOURCES, а файл spec — в каталог /usr/src/SPECS:
# ls /usr/src/SOURCES
tuxpaint-2002.09.29.tar.gz tuxpaint-Makefile.patch tuxpaint-stamps-2002.09.29.tar.gz
tuxpaint.desktop tuxpaint-opt.patch
$ ls /usr/src/SPECS
tuxpaint.spec
Далее построите файл spec:
# rpmbuild -bb tuxpaint.spec
Новый пакет RPM создается в каталоге /usr/src/RPMS/i386:
# ls /usr/src/RPMS/i386
tuxpaint-2002.10.20-1.i386.rpm
Теперь у вас имеется новый пакет RPM с программой Tuxpaint, откомпилированный для вашей системы.
Комментарий
В вашей системе исходные тексты могут храниться в другом каталоге. В Fedora 1, как и в некоторых ранних версиях, используется каталог /usr/src/redhat/RPMS/. В других поставках используется каталог /usr/src/RPM/RPMS. Разберитесь, и вы найдёте нужный каталог.
Построение пакетов по исходным текстам не избавляет от «кошмара RPM». Оно всего лишь гарантирует двоичную совместимость с системными библиотеками и оптимизацию RPM для архитектуры вашей системы. Соблюдение зависимостей придется обеспечивать вручную, а это далеко не так просто, как кажется.
Обратите внимание: rpmbuild и rpm — два отдельных пакета.
См. также
rpmbuild(8), rpm(8); RPM.org (http://rpm.org/); Maximum PRM (http://www.rpm.org/max-rpm/index.html).