pacman тупит

вот уже несколько месяцев замечаю, что пакман стал сильно тупить при обращении к базе …
не засекал, но кажется, что несколько минут проходит, пока он всё там у себя просчитает …
это происходит и при поиске, и при обновлении

раньше он вроде так не тормозил
есть такое…
но скоро новая версия, всё полетит!
такие дела.
sudo pacman-optimize /var/lib/pacman
» не?
cucullus
есть такое…
но скоро новая версия, всё полетит!
а откуда такая информация?

SmiGes
sudo pacman-optimize /var/lib/pacman
» не?
попробую … пробовал pacman-cage, но чё-то yaourt стал ругаться
Храню базу пакмана в tmpfs (в оперативке). Никаких тормозов при поиске.
При загрузке загружаю в tmpfs? При выключении скидываю на винт.
SunStroke
Храню базу пакмана в tmpfs (в оперативке). Никаких тормозов при поиске.
При загрузке загружаю в tmpfs? При выключении скидываю на винт.
А если неожиданно пропадет эл.питание? Прощай база, здравствуй гугл?
Кстати у себя заметил, что pacman при работающем rtorrentr тупит сильнее.
vadik
А если неожиданно пропадет эл.питание? Прощай база, здравствуй гугл?
Ну зачем же сразу “прощай”? :)

Во-первых, на винте лежит та же папка с базой, но версии “до монтирования во время загрузки”.
Во-вторых, во время выключения, перед тем как скинуть базу из tmpfs на диск, делается ее архив в файл.

Так что, в аварийном случае у вас останется либо “старая” (условно) база в папке на винте, либо “прошлый” архив в файле. Выбирайте на любой вкус (с) :).

Проверено на личном опыте, и не раз. Максимум теряются изменения в базе со времени последней загрузки. В этом случае делаю pacman -Syuf и все пучком.

PS. От пользователя ничего делать не требуется. Все делается в rc.local и rc.local.shutdown.
SunStroke, можно ссылку на мануал? (для ленивых )) )
vadik
можно ссылку на мануал? (для ленивых )) )
Постараюсь изложить от себя максимально поясняя. Источник вдохновения затерян где-то во времени :)

Фрагменты /etc/rc.local (с подробными комментариями):
# Подключаем сервисные функции,
# чтобы вывод на экран при загрузке/выключении
# был в фирменном арчевском стиле
. /etc/rc.conf
. /etc/rc.d/functions
################################
# Mount pacman database to tmpfs
################################
# Проверяем наличие папки /var/lib/pacman. Если нет, создаем
[ -d /var/lib/pacman ] || mkdir /var/lib/pacman
# Выводим сообщение о начале процесса
stat_busy "Mounting pacman database to tmpfs"
# Проверяем, не смонтирована ли уже папка. Если смонтирована, выходим
mounted=$(grep -c /var/lib/pacman /proc/mounts)
if [ $mounted -gt 0 ] ; then
	stat_done
	exit 0
fi
# Проверяем, есть ли архивный файл с базой
if [ -f /var/lib/pacman.tar.gz ] ; then
	# Монтируем папку /var/lib/pacman в tmpfs и распаковываем туда архив
	mount -t tmpfs tmpfs -o nodev,nosuid,size=100m /var/lib/pacman && \
	tar -C / -xzf /var/lib/pacman.tar.gz
fi
# Выводим сообщение об окончании процесса
stat_done
################################
Фрагменты /etc/rc.local.shutdown (с подробными комментариями):
# Подключаем сервисные функции,
# чтобы вывод на экран при загрузке/выключении
# был в фирменном арчевском стиле
. /etc/rc.conf
. /etc/rc.d/functions
##########################################
# Flush pacman database to disk from tmpfs
##########################################
# Проверяем наличие папки /var/lib/pacman. Если нет, создаем
[ -d /var/lib/pacman ] || mkdir /var/lib/pacman
# Выводим сообщение о начале процесса
stat_busy "Flushing pacman database to disk"
# Проверяем, не размонтирована ли папка. Если размонтирована, выходим
mounted=$(grep -c /var/lib/pacman /proc/mounts)
if [ $mounted = 0 ] ; then
	stat_done
	exit 0
fi
# Делаем "прошлый" архив "позапрошлым" (аналог logrotate :) )
mv -f /var/lib/pacman.tar.gz /var/lib/pacman.tar.gz.1 && \
# Архивируем базу из tmpfs в файл на диск
tar -C / -czf /var/lib/pacman.tar.gz var/lib/pacman/ && \
# Размонтируем папку с базой из tmpfs
umount /var/lib/pacman && \
# Удаляем папку со старой базой
rm -rf /var/lib/pacman && \
# Разворачиваем текущую базу из файла в папку (чтобы было как полагается)
tar -C / -xzf /var/lib/pacman.tar.gz && \
# Выводим сообщение об окончании процесса
stat_done
##########################################

А ТЕПЕРЬ ВАЖНЫЕ ПРИМЕЧАНИЯ:

1. Сделайте первый раз вручную архив базы в файл /var/lib/pacman.tar.gz (понадобится если все навернется, а также для начала работы алгоритма).

2. Удалите из моих листингов строки с комментариями (и пустые строки) рядом со строками кода в которых есть && \ - там задано последовательное выполнение с синтаксисом продолжения строки. У меня этих комментариев нет, просто разжевал для понятности.

3. Размер tmpfs под базу у меня задан в 100Мб. Используется по данным df -h половина. Можете сначала поставить 200Мб для страховки, потом посмотрите и скорее всего можно будет смело уменьшить до 100Мб.

4. Если что-то непонятно, либо вчитывайтесь до просветления перед тем как приступить, либо спросите. Первый раз я так по невнимательности запорол базу. Архивов не было сделано - пришлось восстанавливать. Все восстановил, но с потерей цепочки зависимостей (по другому никак) - все пакеты стали числиться установленными явно. Не понравилось - пришлось переставить систему.

PS. Ну и ест-но я не отвечаю, если вы там что-то угробите. Могу лишь сказать, что у меня так работает уже несколько месяцев и все вообщем-то отлажено, ИМХО.

PPS. Ну и для информации:
[[email protected] lib]$ ls -l /var/lib
...
drwxr-xr-x 4 root root     180 Янв 18 22:36 pacman
-rw-r--r-- 1 root root 2764746 Янв 16 23:47 pacman.tar.gz
-rw-r--r-- 1 root root 2763493 Янв 15 19:15 pacman.tar.gz.1
...
[[email protected] lib]$ df -h
Файловая система      Разм  Исп  Дост  Исп% Точка монтирования
...
tmpfs                 100M   53M   48M  53% /var/lib/pacman
...
PPPS. Сорри за такую простыню. Можно было бы покороче, но менее понятно.
 
Зарегистрироваться или войдите чтобы оставить сообщение.