Вот навелосипедил скрипт, отмечающий все пакеты, что не в world, зависимостями, удаляющий лишнее и ставящий недостающее. Перед использованием выполнить:
# mkdir /var/lib/pacworld
# pacman -Qe > /var/lib/pacworld/world #выполнять каждый раз после явной установки для поддержки актуальности world
#!/bin/sh
PACWRAPPER=pacaur #заменить на pacman/yaourt/... по вкусу
if [ -d /tmp/pacworld-$USER ]; then mkdir -p /tmp/pacworld-$USER; fi
echo Marking all packages not in 'world' as dependencies...
$PACWRAPPER -Q | awk '{ print $1 }' > /tmp/pacworld-$USER/all.tmp
while read pkg; do
if ( ! grep -x "$pkg" /var/lib/pacworld/world > /dev/null ); then {
$PACWRAPPER -D --asdeps $pkg > /dev/null
} fi
done < /tmp/pacworld-$USER/all.tmp
echo Calling for $PACWRAPPER to uninstall unneeded packages...
$PACWRAPPER -Qdt | awk '{ print $1 }' > /tmp/pacworld-$USER/unused.tmp
while read pkg; do
#if ( ! grep -x "$pkg" /var/lib/pacworld/world > /dev/null ); then {
$PACWRAPPER -Rdd --noconfirm $pkg
#} fi
done < /tmp/pacworld-$USER/unused.tmp
echo Calling for $PACWRAPPER to install needed packages...
while read pkg; do
if ( ! grep -x "$pkg" /tmp/pacworld-$USER/all.tmp > /dev/null ); then {
$PACWRAPPER -S --needed --noconfirm $pkg
} fi
done < /var/lib/pacworld/world
echo Marking packages from 'world' as explicit...
while read pkg; do
$PACWRAPPER -D --asexplicit $pkg > /dev/null
done < /var/lib/pacworld/world
rm -rf /tmp/pacworld-$USER
Работает медленно. Неплохо бы ускорить прямым ковырянием в базах пакмана (не уверен, что поможет) и написать обертку, обновляющую world (до ускорения работы не имеет смысла).