Мы — долго запрягаем, быстро ездим, и сильно тормозим.
|
|||||||||||||||||||
www.lissyara.su
—> статьи
—> FreeBSD
|
|
скачаем архив дерева портов, это будет быстрее чем обновлять через cvsup, ищем ближайщый ftp провайдера/города/страны
качаем:
|
перед скачиваем нужно обратить внимание чтобы архив был создан не позже чем 1-2 дня назад (желательно), некоторые ftp редко синхронизируются!
|
можно не большой скрипт который быстрее разархивирует:
|
(если perl не стоит, то скорее всего он будет из мира, по-моему путь #!/usr/local/bin/perl )
PS вообще-то, portsnap лучше, чем архив качать и еще есть rsyns
2. Обновление и исправление базы данных портов.
бэкап базы пакетов:
|
можно заархивировать каталоги /etc/ /usr/local/etc программа может затереть конфиг (осторожно с символическими ссылками чтобы не удалить случайно важную информацию)
|
-a all, -F исправлять не спрашивая, считается безопасный метод
если база сбита, то на крайняк можно pkgdb -fu
3. Редактирование /etc/make.conf (оптимизация, etc).
по-моему: в FreeBSD 7.2, FreeBSD 8.0 CURRENT) в CFLAGS присутствует скрытый дефект: -ffast-math, который оборачиваектся для нас -funsafe-math-optimizations -fno-math-errno http://www.freebsd.org/cgi/query-pr.cgi?pr=137869
будьте внимательны
ee /etc/make.conf
|
4. Простое обновление.
если portupgrade не стоит, то поставить:
(потянет ruby)
|
в headbook'е написано:
|
в других источниках сразу, рекомендуют:
|
чтобы пройтись вдоль всех зависимостей
5. Полезные опции portupgrade.
полезные опции в portupgrade:
-W не чистить порт после обновления;
-w не чистить порт перед обновлением;
-F для того что скачать все исходники сразу, если проблемы с интернетом: portupgrade -aFrR
опции -f устанавливает дальше все зависимости, если даже где-то ошибка, то пытается продолжить дальше...;
-l /var/log/pport.log - записывает последнюю ошибку;
-L %s::%s создает файл в текущем каталоге, в котором записывает весь вывод установленных портов.
2 полезные команды make:
1) cd /usr/ports/deve/icu && make run-depends-list покажет зависимости данного порта,
2) make all-depends-list - все зависимости и зависимости тех портов которые зависят от порта
есть один важный недостаток, бывает версия порта называется не совсем корректно, например cairo-1.8.6_1,1 и portupgrade может всегда писать что порт устаревший
6. Простой скрипт.
portupgrade -arR часто тоже может выдаст ошибку!!
есть вариант написать скрипт, который обновит те порты который устаревшие в месте с зависимостями:
|
при этом может быть очень часто что что-то пропустит из-за подзависимоти каких-то скорее всего, цикл идет в 2 этапов if ( !$nn > 2 )
если порты запутанные, можно написать чтобы обновляло и новую версия как не корректную if ( $st =~ '<' || $st =~ '>') {
Важное примечание: при обновлении Desktop лучше сначала попробовать portupgrade -aRr, так как опция -R (portupgrade -Rf $all[0] для скрипта ниже) (ее lissyara рекламировал) будет устанавливать все зависимости по новому, если нужно обновить, к примеру, 4 программы evince/firefox3/xfce4, то они потянут около 20-60 зависимостей каждая (не считал), и одно и тоже portupgrade будет собирать (но имейте ввиду что эта опция -R надежная), более "мягче" есть вариант в данном случае поставить portupgrade -rf ports_old, при этом будут собираться только "ближайшие" зависимости, самый жесткий вариант portupgrade -Rrf ports_old скорее всего лучше использовать в редких случаях, например, если не хочет компилироваться /devel/icu, так же можно просто -f.
перед кажой установленной программой желательно пересмотреть еще раз список устаревших портов, чтобы не компилировать одно и тоже лишный раз, так как с опциями -R или -r многое уже может быть обновленно, portversion быстро смотрит какие версии установлены...
7. Скрипт обновления, усовершенствованный (Рекомендуемый).
вот маленький скрипт для этого + еще реализовал запись в лог файл, чтобы было видно какой порт обновляется и сколько время прошло:
|
8. Скрипт автоматического обновления (экспериментально).
дальше я написал простейший скрипт для автоматического обновления, который обновит дерево портов и порты через cron, отправит на email какие порты он обновил, и какие были устаревшие, можно поставить раз в неделю в cron
нужно заменить email адрес на тот который будет отсылаться Вам, и проверить работоспособность ftp с которого архив порта скачать
|
пример как можно написать что-то подобное portupgrade:
|
9. Исправление некоторых проблем.
если обновилось php, то нужно обновить его библиотеки:
|
для perl часто тоже может понадобиться:
|
так же есть скрипт perl-after-upgrade
Java (jdk*) прийдеться руками ставить
очистить порты и каталог distfile:
|
размещено: 2009-07-05,
последнее обновление: 2010-05-15,
автор: ProFTP
DoMeN, 2009-09-02 в 23:27:56
Интересный подход.
ooZe, 2009-10-01 в 10:38:52
Насчет скрипта для распаковки тарбола портов, думаю лучше подойдет тот, что идет на диске с фряхой:
if [ "`id -u`" != "0" ]; then
  echo "Sorry, this must be done as root."
  exit 1
fi
echo "Extracting ports tarball into ${DESTDIR}/usr"
cat ports.tar.gz | tar --unlink -xpzf - -C ${DESTDIR}/usr
exit 0
ooZe, 2009-10-01 в 10:47:06
fixed:
#!/bin/sh
if [ "`id -u`" != "0" ]; then
  echo "Sorry, this must be done as root."
  exit 1
fi
echo "Extracting ports tarball into /usr"
cat ports.tar.gz | tar --unlink -xpzf - -C /usr
exit 0
Raxxell, 2010-12-22 в 16:47:34
Вы уж меня извените, но у меня выходит вот это.
# wget 'ftp://ftp2.ru.freebsd.org/pub/FreeBSD/ports/ports/ports.tar.gz'
wget: Command not found.
#
Somnambual, 2011-05-07 в 16:16:14
portupgrade у меня нет в - /usr/ports/sysutils/portupgrade а есть в - /usr/ports/ports-mgmt/portupgrade
Raxxell напишите fetch вместо wget ну или поставьте wget, хотя смысла особого нет
Nadz Goldman, 2013-03-01 в 15:27:39
Вся статья - баг и плагиат. Автора сжечь. В статье очень много фатальных ошибок.
Оригинал лежит на опеннете.
_Pro_FTPd, 2013-03-02 в 13:12:00
посмотрите дату создания, я фрибсд давно не обновлял с той даты
тогда обновлял все работа супер!
Обратите внимание:
7. Скрипт обновления, усовершенствованный (Рекомендуемый).
п.7 не дописанный эксперементальный, чтобы вы сами дописали :) это то как идеально...
все остальное работало!
_Pro_FTPd, 2013-03-02 в 18:14:08
т.е. наоборот
8. Скрипт автоматического обновления (экспериментально).
_Pro_FTPd, 2013-03-02 в 18:14:09
т.е. наоборот
8. Скрипт автоматического обновления (экспериментально).
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
Комментарии пользователей [9 шт.]