[devel] %update_desktopdb vs %update_menus

Igor Vlasenko =?iso-8859-1?q?vlasenko_=CE=C1_imath=2Ekiev=2Eua?=
Сб Апр 5 20:59:12 MSD 2008


On Sat, Apr 05, 2008 at 06:46:14PM +0300, Michael Shigorin wrote:
> Создавать прецедент массового объезда того, что может быть
> исправлено в одной точке -- это по-индусски.

код, который добавляет %update_desktopdb, я писал 5 минут,
за 5 минут могу написать и код, который будет удалять 
%update_desktopdb :) 
И работают эти коды 1мин/1000пакетов.

Вопрос в другом. 
Я обоснованно боюсь граблей, связанных с "одной точкой". 

Напомню что это заблуждение, что 
%update_desktopdb - якобы регистратор десктоп файлов, 
который якобы следует писать вместе с %update_menus.

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

%update_desktopdb - регистратор mime-обработчиков.
Его вызов имеет смысл только для таких программ, 
которые перечислили явно mime-типы.

Например, freeciv-client (пример Димы) mime-типов не 
обрабатывает, следовательно, %update_desktopdb
там вписан по ошибке.

Вызывать огульно update-desktop-database чревато.
Представьте себе установку дистрибутива. Она и так
занимает Х минут, ставится множество пакетов, 
вызываюих в %post /usr/bin/update-menus. 
Одиночный /usr/bin/update-menus отрабатывает несколько секунд.
Но при массовой установке пакетов множественные
/usr/bin/update-menus оптимизируются: при живом
процессе update-menus другие /usr/bin/update-menus только 
оповещают его, что добавлено новое меню и умирают.
В результате при установке 100 пакетов 
/usr/bin/update-menus отрабатывет не 100 раз, а только 1 раз.

Я смотрел в исходники update-desktop-database, 
похоже, он никак не оптимизирует свою работу.
Я не говорю, что после добавления такой 
"оптимизации единой точки доступа" 
дистрибутив станет устанавливаться пару часов,
но думаю, что даром такая "оптимизация" не пройдет.

-- 

Dr. Igor Vlasenko
--------------------
Topology Department
Institute of Math
Kiev, Ukraine




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