Re: как правильно соби рать source packages ?

2002-09-26 Пенетрантность Victor Wagner
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



Re: как правильно соби рать source packages ?

2002-09-26 Пенетрантность Victor Wagner
On 2002.09.25 at 22:41:26 +0400, Peter Novodvorsky wrote:

 Привет.
 
 Denis Dzyubenko [EMAIL PROTECTED] writes:
 
  Приветствую!
 
  Недавно в этом листе 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).
 
 Это бага и она уже была помещена в Debian BTS. Котельников всё
 правильно сказал.
 

Неправда. Он сказал правильно, но не все. Для того чтобы правильно
написать rules, нужно знать что на самом-то деле будут выполнены те
операции, которые описаны в FAQ. Я в своем предыдущем письме еще и
попытался объяснить, почему использование высокоуровневых оберток,
рекомендованных Котельниковым предпочтительнее. 
-- 
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