Привет всем! (Я добавил в копию Лёшу Турбина, ибо ниже следует вопрос про apt)
Довольно часто от пользователей поступало пожелание: выбирая группы пакетов в инсталляторе, видеть в режиме on-line сколько места на диске потребуется. Фишка полезная, однако для её реализации придётся приложить определённое количество усилий. Есть несколько путей, давайте сообща поймём какой лучше. Вообще возможны два пути: 1. Подготовить всё заранее (списки пакетов и их размеры, замкнутые при помощи apt) и потом пользоваться только rpm (естественно предварительно проводя операцию объединения выбранных списков и исключения из них basesystem) Собственно, это практически тоже самое что и установка базовой системы. Есть некоторый список (косвенно используется apt для замыкания его), и rpm "тупо" ставит пакеты по этому списку. 2. Попытаться использовать apt. apt-get использовать невозможно - ибо он слишком медленно считывает свои индексы. Остаются apt-shell и apt-pipe. Бакенд должен работать в интерактивным "apt-shell", постоянно висящем в фоне. apt-shell не шибко готов к такому развороту событий, а потому тоже отпадает. Остался старый добрый apt-pipe. За ним нужен глаз да глаз, надо не забывать про необходимость вычитывание errors (apt-pipe использует единый канал для stdout и stderr). И главное надо хорошенько потом его грохнуть под конец работы, желательно подкрепить это грохание завершающим kill ;) Как теперь можно пробовать работать. Выбрали группы пакетов - apt-pipe сказали install - узнали сколько нужно места на диске. Убрали группу пакетов ... и вот тут очередной "ой". Одно дело убрать одну группу, второе дело - фактически откатить "транзакцию". Есть только один способ - сбросить всё на начало и поставить все оставшиеся выделенными группы. А операции reset в apt-shell/apt-pipe нет. В alterator-packages применялся фокус "давайте грохнем apt-pipe". Сразу понятно что по скорости apt-pipe сразу становится сопоставим с apt-get. Есть в apt-shell операция keep. Можно было бы сделать фокус, когда скормить keep всю пачку выделенных пакетов, но: 1. Передать все пакеты целиком невозможно ибо у apt-pipe ограниченна длина сообщения, при передаче "пачками" скорость "обнуления" сопоставима с 'убиванием' и запуском apt-pipe заново. 2. Не очень понятно на самом деле как keep влияет на алгоритм apt. Ведь keep - это аналог hold, но не сброс состояния на исходное. Отсюда мораль. Надо разбираться с keep и реализовать в apt-shell/apt-pipe новую операцию reset, и желательно делать это правильным образом. Или не париться и мириться с тем что при щелчке по очередному checkbox'у вылетает надпись со словами "пожалуйста подождите, сейчас я всё сделаю.... ", но тогда и apt-pipe не нужен ;) Что скажете? -- Станислав Иевлев. _______________________________________________ devel-conf mailing list [email protected] https://lists.altlinux.org/mailman/listinfo/devel-conf
