Re: как правильно собирать source packages ?
On 2002.09.25 at 19:17:32 +0400, Denis Dzyubenko wrote:
> Приветствую!
>
> Недавно в этом листе Alexander Kotelnikov <sacha@debian.org> сказал что
> пакеты с исходными тестами нужно собирать используя debuild или
> dpkg-buildpackage. Но в FAQ (/usr/share/doc/debian/FAQ/ch-pkg_basics.html)
> написано:
>
> 6.14 How do I build binary packages from a source package?
> You will need all of foo_*.dsc, foo_*.tar.gz and foo_*.diff.gz to compile the
> source (note: there is no .diff.gz for a Debian native package).
>
> Once you have them, if you have the dpkg-dev package installed,
> the following command:
>
> dpkg-source -x foo_version-revision.dsc will extract the package into a
> directory called foo-version.
>
> If you want just to compile the package, you may cd into
> foo-version directory and issue the command
>
> debian/rules build to build the program, then
>
> debian/rules binary as root, to build the package, and then
>
> dpkg -i ../foo_version-revision_arch.deb to install the newly-built
> package.
>
>
> Как идеологически правильнее собирать такие пакеты?
Данный текст описывает последовательность действий, которую необходимо
выполнить. Но идеологически правильно не выполнять ее самому, а
воспользоваться высокоуровневым интерфейсом (dpkg-buildpackage или
debuild) который ее выполнит для тебя.
Заметим, что в норме dpkg-buildpackage и debuild не выполняют сборки
пакета от рута. Используется fakeroot, который позволяет записать
в tar архив файлы пакета так, как будто они принадлежат руту.
Это очень полезная фича так как часто бывает, что из-за ошибки в rules
какие-то файлы пытаются поставиться не туда, откуда они будут запакованы
в пакет, а туда, куда они должны попасть после установки. Если делать
build от рута, они туда поставятся, и у тебя на машине пакет будет
работать, а на других - нет (если, конечно, установка этих файлов не
развалит нафиг всю систему).
А под fakeroot писаться они на диск будут от обычного юзера, и попытку
поставиться в системные каталоги обломят.
Так что ошибку ты заметишь сразу.
С тех пор, как была разработана эта схема в debian появился пакет,
который позволяет патчить uid-ы в таровском архиве уже после его сборки,
но по-моему к системе пакетирования его никто не прикручивал.
Тем более что дебиановская система пакетирования, в отличие от rpm,
полагается по части расстановки прав при инсталляции на upstream
Makefile.
--
Victor Wagner vitus@ice.ru
Chief Technical Officer Office:7-(095)-748-53-88
Communiware.Net Home: 7-(095)-135-46-61
http://www.communiware.net http://www.ice.ru/~vitus
Reply to: