ArchLinux: ускоряем работу pacman с помощью pacman-cage

arch logoНе так давно, из обсуждения на ЛОРе, узнал о том что помимо pacman-optimize, который просто немного оптимизирует расположение базы данных (туева хуча мелких файлов) с пакетами на диске, существует и другая утилита — «ускоритель» pacman-cage.

Что же делает pacman-cage?
Просто загоняет все файлы базы данных (/var/lib/pacman) в loop-fs. И всё!
Но этого более чем достаточно — скорость поиска по базе, да и вообще всех операций чтения записи в базу очень значительно ускоряются.

Устанавливаем из AUR пакет pacman-cage. После чего от рута запускаем pacman-cage что создаст файл /var/lib/pacman.db и примонтирует базу в каталог /var/lib/pacman (и сделает бэкап — я решил немного поэксперементировать и бэкап пригодился) и добавляем pacmandb в rc.conf в демоны — всё, теперь демон монтирует loop-файл при старте и отмонтирует при остановке. Так что вы даже не заметите что он работает...

Стоит учесть что файлы из /var/lib/pacman переносятся в loop-файл /var/lib/pacman.db, т.е. при его отмонтировании у вас не только удалятся информация о том что находится в репозиториях но и о том какие пакеты установлены у вас (вот тут бэкап и пригодился).

PS. Существует pacman-cage ижно с 2006 года — но я, к своему горю, о нём не знал. А знать это не помешает каждому арчеводу (и почему pacman-cage ещё не в репах?). Правда с такого «ускорителя» не было бы толку если бы pacman перевели на sqlite, а не использовали уйму текстовых файлов разбросанных по директориям (такая же «проблема» и у debian) — насколько я помню sqlite для pacman уже предлагали (и не просто предлагали, а присылали патч), но что-то не срослось...

PPS. На днях этот бложик перешагнул двухлетний рубеж (напрашиваюсь на поздравления).
rootty 10-09-2010
Гратс)
kolebas 10-09-2010
С юбилеем!Всегда приятно Вас читать.
bosha 10-09-2010
Мои поздравления с двух летием :)

Проблема с кучей текстовых файлов не только у debian. В gentoo фактически тоже самое (там, правда, eix спасает). Вроде как в rpm'based дистрибутивах тоже. Вообще странно что такую важную вещь как пакетный менеджер почти нигде не совершенствуется толком.. Разве что в gentoo...
val-amart 10-09-2010
поздравляю!

эм, не подкинешь линков на обсуждение патча с свьюлайт для пакмана? может, если чего допилить, его и примут?
GiNeR 10-09-2010
Думаю, что pacman не переводят на БД следуя принципу KISS. Нужно ускорить его таким образом, чтобы не потерять простоту.
GeniyZ 10-09-2010
Может разработчики считают, что кто-то завязывается на эти самые файлы и поэтому не желают от них отказываться. В таком случае поможет только FUSE.
muhas 10-09-2010
Спасибо всем за поздравления!

@bosha у многих такая проблема :( в арче она не так заметна как в том же дебиане(из-за того что пакман по сравнению с апт-гет реактивен) - просто его привел как что-то вроде антипода. а пакетные менеджеры совершенствуются - только даже в том же арче дельты да sha384, sha512 никем не юзаются...

@val-amart не найти что-то, помню было - а где не найти, пост с пятницы лежит всё не хотел публиковать пока не найду про патч и обсуждения - да что-то не нашел и решил так опубликовать =)

@GeniyZ кстати, было бы забавно - база в sqlite но через fuse системой видится как каталоги-файлы.
bend3r 10-09-2010
поздравляю!
kovtunos 10-09-2010
Поздравляю с двухлетием! Всегда интересно читать твой блог! И за статью спасибо, пойду оптимизировать.
muhas 10-09-2010
вновь прибывшим спасибо!

@kovtunos только аккуратнее - а то я поэксперементировал аж бэкап пригодился =)
bosha 10-09-2010
@muhas ну вообще в debian based дистрах есть своеобразный костыль под названием apt-cache. С ним тоже довольно шустро поиск по базе идёт. В арче может совершенствуется (не слежу за ним почти), а вот всякие apt и иже подобные - нет. А жаль, есть ещё много вещей которые можно было бы сделать..
muhas 10-09-2010
ну по скорости дебьяновго apt/aptitude до pacman к сожалению как до луны несмотря на костыли, кстати pacman-cage не только ускоряет поиск по пакетам и запись в базу но и сравнение в момент что обновить - у меня получилось что скорость этого момента увеличилась на глаз раз в 5-7(этот момент у меня стал практически незаметным)
kovtunos 10-09-2010
@muhas Спасибо за предостережение. Пока что полет нормальный. Пакман быстрее стал ворочаться
случайный свидетель 10-09-2010
А смысл ускорять прогу, которая раз-два в день запускается? Ну потратит она на чтение базы не 5 секунд, а полсекунды, и стоит ради этого костыли строить?
muhas 10-09-2010
раз два в день? у меня раз-два в неделю =)
если есть возможность что бы что-то работало быстрее без особых затрат ресурсов - то почему бы этой возможностью не воспользоваться. повесил pacmandb в демоны и всё - работает, есть не просит, но зато ускоряет pacman
amigo 10-09-2010
> напрашиваюсь на поздравления

Поздравляю. Успехов в начинаниях и продолжениях :)
300bod 10-09-2010
ура! спасибо, отличный блог.
muhas 10-09-2010
@amigo, @300bod спасибо
coldtea 10-09-2010
Мои поздравления! :) Вопрос касательно сабжа, pacman-cage оптимизирует работу clyde ?
muhas 10-09-2010
@coldtea cпасибо за поздравления... Да оптимизирует, вообще всё что с базой работает становится шустрее при использовании такого loop-образа