LINUX.ORG.RU

Скрипт для работы аналога гентушного world в Arch

 , ,


0

3

Вот навелосипедил скрипт, отмечающий все пакеты, что не в 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 (до ускорения работы не имеет смысла).

★★★

Ответ на: комментарий от mkv1313

jollheef, joy4eg
Сделал — потому что мне так удобнее чистить мусор.
Выложил — чтобы узнать ваше мнение.

batekman ★★★
() автор топика
Ответ на: комментарий от x3al

Спасибо, я бы не догадался. Но с файлом нагляднее. Велосипед ужасен — да, но буду улучшать на досуге.

batekman ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.