On 2007.03.26 at 11:26:23 +0300, Alexander Vlasov wrote:

> > > А вот любую сборку в живой системе делать нельзя.
> > 
> > Почему нельзя? Система от этого не пострадает (fakeroot позаботиться).
> > Пакет будет работоспособен на всех системах, куда подключены те же
> > репозитории. У pbuilder-а есть то преимущество, что он проверит, не
> > забыл ли ты чего в Build-Depends, но это не очень существенно. Куда
> > существенней, не забыл ли ты чего в Depends.
> 
> Собственно поэтому.
> 1) не на всех машинах набор репозиториев одинаков. То есть стандартные
> везде есть, но пакет собирается как раз ради нестандартных

Если ты собираешь пакет для себя, то у тебя, на всех машинах, которые ты
администрируешь, набор репозиториев одинаков.
Если ты собираешься нестандартный репозиторий публиковать, то это не
твои проблемы. Напиши на соответствующей страничке  что "пакеты в данном
репозитории могут зависеть от пакетов из таких-то и таких-то
репозиториев"

Разве что ты собираешься эти пакеты продавать. Тогда ты чем-то кому-то
обязан, но см. ответ на следующий пункт.

> 2) depends тоже можно потерять. К сожалению, не все зависимости
> определяются shlib:depends, иногда что-то специфическое надо
> шелл-скриптам обвязки.

Сборка пакета в чистой системе тут не поможет никак. Отловить подобного
рода глюки можно только УСТАНОВКОЙ пакета на чистую систему. И
желательно, ещё и полным функциональным тестированием оного пакета
(а с этим сложности. В Debian, в отличие от например CPAN,
инфраструктуры для автоматизированного тестирования пакетов пока нет).

Мне попадались вообще экзотические ситуации. Например, авторы upstream
софта открывают некую библиотеку посредством dlopen("something.so").
А в Debian something.so есть только в пакете libsomething-dev. А в
пакете libsomething1 (от которого по хорошему счету и должен зависеть
собранный пакет) имеется libsomething.so.1.

И чем тебе pbuilder в этом случае поможет? Он-то libsomething-dev
поставит.


> 3) и кстати sybase openclient у меня вполне мило игнорировался --
> жаловался на can't parse library format (пишу по памяти), хотя file на
> библиотеки говорит ELF 32-bit LSB shared object, Intel 80386, version 1
> (SYSV), not stripped

Так это, objdump-ом туда надо смотреть или хотя бы nm.

> > А вот при отладке софтины куда удобнее сборку делать на живой системе.
> > Получается намного быстрее, можно поменять один-два файла и пересобрать
> > только их и бинарник и так далее.
> > Перед помещением пакета в репозиторий, конечно, надо будет пересобрать
> > начиная с debian/rules clean. 
> 
> Да, я пожалуй жестковато сформулировал. 
> Стоило сказать "сборку _пакета_ в живой системе не надо делать".

Не согласен категорически. Нужно стремиться, чтобы живая система ничем
не отличалась (в смылсе вещей, могущих повлиять на сборку)  от поставленной
с нуля с тем же списком пакетов из тех же репозиториев (что, кстати,
хорошо не только для сборки. Упорощается клонирование системы, для
восстановления в случае аварии не надо /usr бэкапить etc).

А вот ТЕСТИРОВАТЬ пакет на эталонной системе надо обязательно.
Нарисовать что-ли аналогичный pdebuild-у скриптик ptester...


> -- 
> Alexander Vlasov
> ZULU-UANIC
> JID: zulu <at> jabber.kiev.ua


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Ответить