[devel] Q: unmets closure

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Ср Дек 10 06:55:05 MSK 2008


On Wed, Dec 10, 2008 at 06:29:13AM +0300, Денис Смирнов wrote:
> AT> Дальше дифф, из которого видно, что asterisk1.6-httpd не устанавливается
> AT> на x86_64, но устанавливается (выбывает из списка cannot-install) на i586.
> 
> Думаю причина проста -- этот пакет noarch, и собрался только на x86. Что
> видно сейчас только из лога сборки (и это _очень_ плохо) :(

При сборке из girar будет строгая синхронизация двух архитектур (с
семантикой транзакции): либо всё собралось, и noarch пакеты должны быть
идентичны, и не должно быть новых анметов, и тогда всё проходит; либо,
в противном случае, ничего не проходит (скорее всего, задание придётся
удалять, пакет исправлять и открывать новое задание).

> AT>   asterisk1.6-httpd: Depends: asterisk1.6 (= 1.6.0-alt4.beta9) but it is not installable
> 
> Собираются из одного пакета, но httpd noarch -- поэтому он вообще для
> x86_64 доступен.
> 
> AT> Похоже на правду: на x86_64 apt не может разрешить зависимости,
> AT> а на i586 зависимости разрешаются.  Правда, на следующем этапе
> AT> уже rpm обнаруживает файловый конфликт.  Так что проверка
> AT> 'cannot install' не является исчерпывающей.
> 
> А вот это -- очень грустно.
> Нужен тест именно на installability а не только на "присутствие всех
> requires".

Есть цена проверки.

1) Полная проверка потребует фактической установки всех пакетов
в хешере (по отдельности в "чистый" чрут) -- сейчас это нереально
по времени.

2) Частичная проверка 'cannot install' дает гарантию, что apt может
разрешить все зависимости, но не даёт гарантии, что все %post-скрипты
правильно отработают, и даже не дает гарантии, что ещё раньше rpm не
обнаружит файловых конфликтов.  Но, с другой стороны, она дает гарантию
не только "присутствия всех requires", но и отсутствия промежуточных
конфликтов на уровне зависимостей.

Подумай: пакет C треубет A и B, а A и B в свою очередь конфликтуют.
Все requires присутствуют, анметов нет, однако пакет C установить
нельзя.

Цена проверки -- перегенерация репозитария + 8-9 минут на разрешение
зависимостей для каждого пакета в репозитарии.

3) Проверка анметов.  Цена проверки -- перегенерация репозитария
(удаление старых пакетов + добавление новых пакетов + genbasedir).
Это где-то 2-3 минуты в удачном случае и 7-8 минут в неудачном случае.
Удачный/неудачный случай зависит от буферного кеша, потому что при
перегенерации репоизатария идёт сканирование всех rpm пакетов (но не
полное чтение rpm пакетов с диска, а только их хедеров -- это в среднем
первые два блока по 4K).
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 197 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20081210/dec33d57/attachment-0001.bin>


Подробная информация о списке рассылки Devel