ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: "Денис Смирнов" <mithraen@altlinux.ru>
To: ALT Devel discussion list <devel@lists.altlinux.org>
Subject: Re: [devel] [sisyphus -> devel] Стабильный Сизиф
Date: Sun, 18 Jun 2006 16:36:50 +0400
Message-ID: <20060618123650.GA19756@mithraen.dimline.ru> (raw)
In-Reply-To: <20060617123313.GG25291@localhost.localdomain>

On Sat, Jun 17, 2006 at 04:33:13PM +0400, Алексей Турбин wrote:

>> Сизиф -- репозитория для разработчиков. Это я беру за аксиому. Он должен
>> быть максимально удобен для разработчиков и мантейнеров, и мнение всех
>> остальных в контексте Сизифа учитываться не должно.
AT> С такими аксиомами мы далеко не уедем.
AT> Это вообще не аксиома в более точном смысле.
AT> Я предлагаю обсуждать более алгоритмические идеи.

Нам нужен репозиторий для разработчиков. Sisyphus по факту выполняет эту
задачу. Так как всех мантейнеров сажать на зарплату никто не собирается,
им должно быть удобно. Иначе они просто уйдут.

>> Для разработчиков удобно иногда совершать действия, которые приводят к
>> появлению множества unmet'ов. Значит в сизифе наличие unmet'ов не
>> рекомендовано, но выносить в orphaned неустанавливаемый пакет можно не
>> ранее чем через 2 месяца (то бишь 8 недель),
AT> Ты рассматриваешь простейший вариант, когда имеется непосредственный
AT> unmet, в котором виноват сам этот пакет, содержащий unmet.  Существуют
AT> другие варианты, когда пакет нельзя установить из-за unmet'ов в других
AT> пакетах "вниз по дереву" (или "вверх"?).

Обрати внимание на слова "не ранее". Ранее нельзя выносить даже виновных.

>> Вывод -- Sisyphus это репозиторий где целостность _рекомендована_, но _не
>> гарантируется_.
AT> Это не дает ничего нового.

Это описание того что есть сегодня.

AT> Я задаюсь вопросом: как блокировать unmet'ы на входе (в incominger'е)?
AT> Допустим, пришёл пакет, после которого количество unmet'ов увеличивается.
AT> По логике вещей такому пакету надо дать reject.  Но следом за ним идёт
AT> другой пакет, после которого количество unmet'ов опять становится на
AT> место.  Эти два пакета могут образовать "транзакцию".  Но если и после
AT> двух этих пакетов количество unmet'ов станет более высоким, тогда уже
AT> нелегко определить, какой именно из этих пакетов виноват.  Тогда
AT> остается зарубить всю транзакцию.

При этом ещё важен порядок поступления пакетов внутри транзакции. Потому
как часто важно с какой версией библиотеки некое приложение собралось. Не
проходит. У нас все равно должен быть единый репозиторий, где unmet'ы
полностью вывести нельзя, и в котором и собираются все пакеты.

AT> В общем случае ситуация может быть ещё сложнее: пакет разрешает один
AT> старый unmet и добавляет один новый.  Хороший это пакет или плохой?

Мое мнение -- это не важно. Для репозитория который используют
разработчики это не имеет значения. Я выложил новую версию библиотеки,
которую я поддерживаю, значит все должны с этим смириться. Или положить
эту же библиотеку под другим именем другой версии. Это -- безусловный
факт, и наличие unmet'ов этот процесс тормозить не должно.

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

>> Нам нужен второй репозиторий. В этот второй репозитория будут копироваться
>> группы пакетов (от одного и более) из Сизифа таким образом, чтобы в этом
>> репозитории не образовывалось unmet'ов. Никогда.  Пакеты переносятся сразу
>> и исходные, и собраные из них _в контексте Сизифа_ бинарные.
AT> А пересобираемость в этом репозитарии важна?

Нет.

AT> И откуда уверенность, что процесс сходится?  Другими словами, откуда
AT> уверенность, что в этот репозитарий через некоторое время хоть что-то
AT> можно будет перенести?

Как минимум от того, что мы усердно боремся с циклическими зависимостями,
которые, по словам ldv@ есть зло.

AT> И вообще, как определить "группы пакетов (от одного и более) из Сизифа",
AT> после копирования которых в репозитарии не будет unmet'ов?   Это что
AT> NP-полная задача?  Hint: при копировании пакета A или пакета B в
AT> репозитарий unmet'ов не появляется, а при копировании A и B одновременно
AT> unmet появляется.  Может такое быть?
AT> Это остается только вручную всё делать, но вручную никто не будет.

Такая ситуация может быть, и мне кажется что нам надо искать не "лучшее"
решение, а просто приемлимое. То есть алгоритм бухнет в репозиторий любой
из этих двух пакетов (в отдельной транзакции), а второй не бухнет.

>> Этот репозиторий может быть в любой момент использован кем угодно для
>> построения своих решений, потому как его целостность _гарантирована_.
AT> Полную гарантию может дать только страховой полис.

И хорошо продуманые алгоритмы с тестами на результат :)

>> Тем самым мы не создавая никакх проблем мантейнерам облегчаем жизнь тем,
>> кто хочет жить на девелоперских срезах.
AT> Я же говорю, не надо выдавать желаемое за реализуемое.
AT> Попробуй нарисовать скрипт, импотенция сразу подступит к горлу.

Скриптом не напишу, логики шибко много. Это может написать либо тот, кто
умеет пользоваться libapt, либо кто имеет силы реализовать самостоятельно
всю логику проверки наличия unmet'ов в новом репозитории, не создавая его
физически.

А логика, которую я предлагаю, простая:

1. циклически проходимся по всему списку пакетов, которые есть в sisyphus
но их нет в этом репозитории, и пытаемся перенести пакеты поштучно.
Проходимся до тех пор, пока не окажется что не можем перевести ни один.

2. строим ассоциативных массив, в котором ключ это provides из sisyphus, а данные это список пакетов его предоставляющих.

3. опять проходимся по списку пакетов, пытаясь перенести пакет, вместе с
пакетами, которые ему требуются.

Есть идеи как это можно ещё оптимизировать, да и обрабатывать некоторые
сложные случаи. Для меня сложна пока задача, как быстро определить будет
ли новый репозиторий содержать unmet'ы, не создавая руками этот
репозиторий и не натравливая на него apt.

Вынесение пакета из репозитория обрабатывается тоже просто -- если
транзакция порождает unmet'ы для пакета, которого уже нет в sisyphus, то
эта транзакция является допустимой, и в ней же мы выносим этот пакет.

-- 
С уважением, Денис

http://freesource.info
----------------------------------------------------------------------------
Настоящие демоны могут так fork'аться, что их потом без pid-файла не
найти.
		-- ldv in devel@



  reply	other threads:[~2006-06-18 12:36 UTC|newest]

Thread overview: 129+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-06-15  9:48 [devel] " Fr. Br. George
2006-06-15 10:22 ` [devel] [sisyphus -> devel] " Fr. Br. George
2006-06-15 10:30   ` Valery V. Inozemtsev
2006-06-15 10:41   ` Led
2006-06-15 11:03     ` Anton Farygin
2006-06-15 11:50       ` Led
2006-06-15 12:01         ` Anton Farygin
2006-06-16 22:17         ` Alexey Tourbin
2006-06-17 11:20           ` Денис Смирнов
2006-06-17 11:27             ` Sergey Bolshakov
2006-06-18 12:44               ` Денис Смирнов
2006-06-17 12:33             ` Alexey Tourbin
2006-06-18 12:36               ` Денис Смирнов [this message]
2006-06-19  8:44                 ` Michael Shigorin
2006-06-19 11:54                   ` Денис Смирнов
2006-06-28  5:47               ` [devel] debian query language (was: Стабильный Сизиф) Michael Shigorin
2006-06-28  6:05                 ` Michael Shigorin
2006-06-28  6:27                   ` Alexey Tourbin
2006-06-19  8:33             ` [devel] [sisyphus -> devel] Стабильный Сизиф Michael Shigorin
2006-06-19 11:49               ` Денис Смирнов
2006-06-19  8:31           ` Michael Shigorin
2006-06-19  8:54             ` Alexey I. Froloff
2006-06-19  9:20               ` Michael Shigorin
2006-06-19  9:34                 ` Alexey I. Froloff
2006-06-19 14:10                   ` Michael Shigorin
2006-06-19  9:55           ` Led
2006-06-19 10:12           ` Led
2006-06-19 12:12             ` Alexey Tourbin
2006-06-19 12:26               ` Led
2006-06-19 13:03                 ` Alexey Tourbin
2006-06-19 13:44                   ` Led
2006-06-19 15:18                     ` Alexey Tourbin
2006-06-20 16:11                       ` Денис Смирнов
2006-06-21  2:40                         ` Alexey Tourbin
2006-06-21  7:38                           ` Денис Смирнов
2006-06-19 13:45                   ` Alexey I. Froloff
2006-06-19 15:26                     ` Alexey Tourbin
2006-06-19 15:38                       ` Alexey Tourbin
2006-06-19 12:56               ` Michael Shigorin
2006-06-19 13:47                 ` Alexey I. Froloff
2006-06-19 13:59                   ` Led
2006-06-19 14:09                     ` Alexey I. Froloff
2006-06-19 14:15                       ` Led
2006-06-19 14:22                         ` Alexey I. Froloff
2006-06-19 14:27                           ` Led
2006-06-15 11:07     ` Sergey V Turchin
2006-06-15 12:42     ` Epiphanov Sergei
2006-06-15 12:58       ` Anton Farygin
2006-06-15 12:58         ` Epiphanov Sergei
2006-06-15 13:00       ` Sergey V Turchin
2006-06-15 13:03         ` Led
2006-06-19  8:49       ` Michael Shigorin
2006-06-15 16:40     ` Fr. Br. George
2006-06-15 16:57       ` Led
2006-06-15 17:02         ` Fr. Br. George
2006-06-15 17:08           ` Led
2006-06-19  8:45             ` Michael Shigorin
2006-06-16 10:29           ` Денис Смирнов
2006-06-16 12:02             ` [devel] cups Dmitry V. Levin
2006-06-16 13:14             ` [devel] [sisyphus -> devel] Стабильный Сизиф Stanislav Ievlev
2006-06-16 13:24               ` Led
2006-06-16 14:38               ` Sergey V Turchin
2006-06-19  8:46                 ` Michael Shigorin
2006-06-19  9:51                   ` [devel] [sisyphus -> devel] Стабильный Сизиф [JT] Slava Semushin
2006-06-16 14:55               ` [devel] [sisyphus -> devel] Стабильный Сизиф Dmitry V. Levin
2006-06-16 13:51             ` Fr. Br. George
2006-06-16 14:20               ` Денис Смирнов
2006-06-16 15:46                 ` Fr. Br. George
2006-06-19 10:36                   ` Stanislav Ievlev
2006-06-15 12:04   ` Damir Shayhutdinov
2006-06-15 12:17     ` Andrii Dobrovol`s`kii
2006-06-15 12:24       ` Damir Shayhutdinov
2006-06-15 12:44         ` Epiphanov Sergei
2006-06-15 12:45         ` [devel] " Andrii Dobrovol`s`kii
2006-06-15 12:54           ` Led
2006-06-15 13:06           ` Damir Shayhutdinov
2006-06-15 14:59           ` Alexey Tourbin
2006-06-15 14:58         ` [devel] [sisyphus -> devel] " Alexey Tourbin
2006-06-19  9:25         ` [devel] Daedalus (was: [sisyphus -> devel] Стабильный Сизиф) Michael Shigorin
2006-06-15 12:49     ` [devel] [sisyphus -> devel] Стабильный Сизиф Grigory Batalov
2006-06-15 12:58       ` Damir Shayhutdinov
2006-06-15 17:17         ` Fr. Br. George
2006-06-15 17:24           ` Led
2006-06-15 12:58       ` Anton Farygin
2006-06-15 16:44     ` Fr. Br. George
2006-06-15 16:50       ` Led
2006-06-15 17:00         ` Fr. Br. George
2006-06-15 17:16           ` Led
2006-06-15 17:25             ` Fr. Br. George
2006-06-16 10:31               ` Денис Смирнов
2006-06-16 10:44                 ` Led
2006-06-16 14:18                   ` Денис Смирнов
2006-06-16 15:00                     ` Led
2006-06-16 15:17                       ` Денис Смирнов
2006-06-16 15:22                         ` Led
2006-06-19  9:09           ` Michael Shigorin
2006-06-16  3:14       ` [devel] Стабильный пакет > " Slava Semushin
2006-06-16  9:18         ` Led
2006-06-16 12:07           ` Dmitry V. Levin
2006-06-16 12:13             ` Led
2006-06-16 12:21               ` Dmitry V. Levin
2006-06-15 20:29     ` [devel] [sisyphus -> devel] " Alexey Rusakov
2006-06-15 20:46       ` Damir Shayhutdinov
2006-06-15 20:48         ` [devel] [sisyphus -> devel] [JT] " Pavlov Konstantin
2006-06-16  7:09         ` [devel] [sisyphus -> devel] " Anton Farygin
2006-06-16  7:16           ` Damir Shayhutdinov
2006-06-16  7:38             ` [devel] [sisyphus -> devel] Стабильный Сизиф -> nautilus Anton Farygin
2006-06-16  7:44               ` Anton Farygin
2006-06-16 10:32                 ` Nick S. Grechukh
2006-06-16 10:44                   ` Anton Farygin
2006-06-18 21:31                 ` Alexey Rusakov
2006-06-19  6:48                   ` Epiphanov Sergei
2006-06-19  7:34                   ` Anton Farygin
2006-06-20  6:45                     ` Alexey Rusakov
2006-06-19  9:13         ` [devel] [sisyphus -> devel] Стабильный Сизиф Michael Shigorin
2006-06-19  9:03     ` Michael Shigorin
2006-06-20 15:59       ` Денис Смирнов
2006-06-21  8:42         ` Michael Shigorin
2006-06-21 16:49           ` Денис Смирнов
2006-06-22 10:48           ` Fr. Br. George
2006-06-22 13:08             ` Michael Shigorin
2006-06-22 13:44               ` Igor Zubkov
2006-06-22 14:52                 ` [devel] [JT] " Michael Shigorin
2006-06-22 14:39               ` [devel] " Fr. Br. George
2006-06-22 15:07                 ` [devel] [JT] " Michael Shigorin
2006-06-28 14:37                   ` Fr. Br. George
2006-06-28 19:20                     ` [devel] [OT] (не)серверные ОС Michael Shigorin
2006-06-29  7:00                       ` [devel] [OT] ( не ) серверные ОС Epiphanov Sergei
2006-06-19  8:22 ` [devel] Стабильный Сизиф Michael Shigorin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060618123650.GA19756@mithraen.dimline.ru \
    --to=mithraen@altlinux.ru \
    --cc=devel@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git