On 2002.09.25 at 19:17:32 +0400, Denis Dzyubenko wrote:

> Приветствую!
> 
> Недавно в этом листе Alexander Kotelnikov <[EMAIL PROTECTED]> сказал что 
> пакеты с исходными тестами нужно собирать используя 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                   [EMAIL PROTECTED]
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

Ответить