Скрипт обновления ПО FreeBSD
Автор Охальников Олег
03:11:2010 г.
Простенький скрипт последовательно выполняющий следующие операции:
1) чистка портов,
2) обновление дерева портов,
3) обновление INDEX.db,
4) обновление базы данных пакетов,
5) поиск пакетов требующих обновления,
6) само обновление с помощью утилиты portupgrade (нужно установить, если её нет в системе).
#!/bin/sh
#########################################
# Created: Ohalnikov Oleg #
# Date: 2010-06-03 #
#########################################
portsclean -CDD;
csup -g -L 2 /etc/ports-supfile;
portsdb -Uu;
pkgdb -F;
pkg_version -v |grep "need";
echo ""
echo "Обновить -> (y/n)"
read a
if [ $a = "y" ] || [ $a = "Y" ]; then
echo "Обновляемся..."
portupgrade -arR
else if [ $a = "n" ] || [ $a = "N" ]; then
echo "Выход..."
exit
fi
fi
Переписал скрипт на Perl. Создаем файл ports.pl , делаем его исполняемым. Содержание скрипта:
#!/usr/bin/perl
#----------------------------------------
# Created: Ohalnikov Oleg
# Date: 2010-11-25
# Support: http://unixa.ru
#----------------------------------------
system "(portsclean -CDD; csup -g -L 2 /usr/local/etc/ports-supfile; pkgdb -F; pkg_version -v |grep \"need\")";
print "Обновляемся?\n";
print "Да > \"y\", Нет > \"anykey\"\n";
$x=<STDIN>;
chomp ($x);
if ($x eq "y") {
system "(portupgrade -arR)";
} else {
print "Выход...\n";
}
Выполняем
# ./ports.pl
Охальников Олег aka H@wk!
Просмотров: 1538 1 Написал(а) H@wk! , в 21:48 16.02.2011 C # pkg_version -vIL= соглашусь, быстро ищет, но не то что надо: --- mc-4.7.5 > succeeds index (index has 4.7.4_3) multitail-5.2.7 > succeeds index (index has 5.2.6) mysql-client-5.1.55 > succeeds index (index has 5.1.54_1) mysql-server-5.1.55 > succeeds index (index has 5.1.54_1) phpMyAdmin-3.3.9.1 > succeeds index (index has 3.3.9) portaudit-0.5.17 > succeeds index (index has 0.5.15) --- Поиск с помощью pkg_version -v | grep "need" --- bash-completion-1.2_2,1 < needs updating (port has 1.3,1) libecap-0.0.3 < needs updating (port has 0.1.0) phpMyAdmin-3.3.9.1 < needs updating (port has 3.3.9.2) squid-3.1.10 < needs updating (port has 3.1.11) --- По первой команде, надо еще индекс обновлять, иначе результат будет вообще далекий от истины. Генерирование индекса очень длительный процесс. Применительно к данному примеру, можно использовать команду: # portversion -vFl '<' пошустрее будет, но не намного. На счет обновлений, portupgrade - не разу не подводила. Скрипт не подразумевает, что нужно делать только так , поэтому можно переделывать как угодно и как удобно. По поводу скорости работы, опыт показывает, что лучше медленно, но верно.
2 Написал(а)
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
, в 01:02 16.02.2011 зачем использовать portupgrade? уж лучше portmaster - не такой тяжелый. так же вместо pkg_version -v я бы посоветовал читать только заголовки: pkg_version -vIL= так быстрее.