pacman тупит

кто б еще придумал для этого способа с tmpfs фичу, чтоб после отработки пакмана в случае изменения базы, она сжималась и копировалась на винт в фоне
mechanical
кто б еще придумал для этого способа с tmpfs фичу, чтоб после отработки пакмана в случае изменения базы, она сжималась и копировалась на винт в фоне
Такое тоже возможно.
Используется взаимодействие с демоном gamin (средством мониторинга изменений файловой системы).
Испытаю на себе. Если все получится, как задумано, выложу новый вариант скрипта.
угу точно, забыл совсем, спасибо, теперь спокойно в демоны добавлю
Работа на ошибками. :)
Обнаружил некритичную ошибку в логике работы скрипта.

Суть в следующем:
Если вы использовали скрипт какое-то время. Затем на какое-то время отключили его и сделали, чтобы все было “классически”. Затем стали опять использовать, то происходит следующее - база в папке пакмана изменилась, а архив базы, созданный скриптом, остался старый.

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

В принципе, если вы используете скрипт постоянно, то такой проблемы не случится (архив всегда будет свежий). В остальных случаях вам нужно будет использовать другой вариант скрипта:
#!/bin/bash
# sourcing our current rc.conf requires this to be a bash script
. /etc/rc.conf
. /etc/rc.d/functions
tmpfs_size=100m
pacman_archive=/var/lib/pacman.tar.gz
# Проверяем наличие папки и если нет, создаем
[ -d /var/lib/pacman ] || mkdir /var/lib/pacman
# Проверяем смонтирована ли уже папка
mounted=$(grep -c /var/lib/pacman /proc/mounts)
case "$1" in
   stop)
      stat_busy "Flushing pacman database to disk"
      # Если уже размонтирована, выходим
      if [ $mounted = 0 ] ; then
         stat_fail
      else
         mv -f $pacman_archive /var/lib/pacman.tar.gz.1 && \
         tar -C / -czf $pacman_archive var/lib/pacman/ && \
         umount /var/lib/pacman && \
         rm -rf /var/lib/pacman && \
         tar -C / -xzf $pacman_archive && \
         rm_daemon pacman-tmpfs
         stat_done      
      fi
      ;;
   start)
      stat_busy "Mounting pacman database to tmpfs"
      # Если уже смонтирована, выходим
      if [ $mounted -gt 0 ] ; then
         stat_fail
      else
         tar -C / -czf $pacman_archive var/lib/pacman/ && \
         mount -t tmpfs tmpfs -o nodev,nosuid,size=$tmpfs_size /var/lib/pacman && \
         tar -C / -xzf $pacman_archive && \
         add_daemon pacman-tmpfs
         stat_done            
      fi
      ;;
   restart)
      $0 stop
      sleep 10
      $0 start
      ;;   
   *)
      echo "usage: $0 {start|stop|restart}"
esac
В нем убрана проверка на наличие архива во время инициализации. В предыдущем варианте это позволяло исключить затратную и при постоянном использовании скрипта ненужную операцию создания архива по команде start. Поэтому, если вы, то пользуетесь скриптом, то нет, вам лучше использовать именно эту версию.
SunStroke, предлагаю один из вариантов, как сделать первый скрипт более быстрым и более правильным.
В каталоге /var/lib/pacman находятся индексы репозиториев имя_репозитория.db.tar.gz, можно при первом запуске скрипта посчитать контрольные суммы этих файлов и добавить эти суммы, например, в архив /var/lib/pacman.tar.gz. При всех последующих запусках просто проверять md5 файлов из /var/lib/pacman и сравнивать их с md5-суммами одноименных индексов в архиве. При несовпадении - обновлять архив (можно даже не полностью).
vadik
предлагаю один из вариантов, как сделать первый скрипт более быстрым
UPD. Удалил прежние свои размышления в этом посте (показалось много бреда). Сорри. :)

Итак, первое что приходит на ум при вопросе оптимизации, это делать как можно больше операций в оперативке. Без использования винта. Понятно, что умная дисковая подсистема может закэшировать процесс работы и потом все скинуть на диск. Но это не гарантировано. К тому же, думаю, что напрямую работать в оперативке все равно быстрее.

Вообщем есть над чем подумать/потрудиться. :)

Ну и плюс, как обещал выше попробую прикрутить мониторинг изменения базы в памяти и автоматическое создание архива на диске. Тогда становятся не страшны аварийные выключения питания - вероятность того что в архиве будет актуальная база (и она будет соответствовать состоянию системы) приблизится к 100 процентам. Хотя это и сейчас не вызывает больших неудобств - pacman -Syuf после аварии с питанием приводит базу (и систему, если ставились обновления) в норму.
а таки новый пакман шустрее
Ага, просто реактивный
бывает, помогает просто:
pacman -Syy
 
Зарегистрироваться или войдите чтобы оставить сообщение.