Страница 1 из 1

обновление дерева исходных кодов и портов во freebsd

Добавлено: 09 дек 2007, 11:19
flash
Программное обеспечение для FreeBSD постоянно усовершенствуется. И
чтобы идти в ногу со временем, нужно хотя бы раз в месяц обновлять его.
В данной статье мы рассмотрим обновление локального дерева портов и
немного затронем обновление программ при помощи набора портов.

Порт - это один из очень удобных способов установки программного
обеспечения для FreeBSD. Чтобы установить нужную программу достаточно
войти в директорию с нужным портом и дать всего одну команду make
install.

Что же происходит при выполнении make install?

1. Если в каталоге /usr/ports/distfiles не обнаружен устанавливаемый
пакет, то выполняется команда make fetch. Загружается с ftp сервера
исходный tar-архив и копируется в каталог /usr/ports/distfiles.
Проверяются зависимость от других пакетов, нужные скачиваются.

2. Выполняется команда make checksum. Т.е. проверяется подлинность
архива tar.

3. Далее архив расспаковывается в рабочий каталог work (make extract).

4. В исходный код вносятся исправления из каталога files (make patch).

5. Выполняется сценарий конфигурирования make configure.

6. Компилируется исходный код (make build)

7. Копирование файлов в соответствующие каталоги (make install).

После инсталляции порта, запись о нем создается в каталоге /var/db/pkg/.

Ну чтож за дело! Для обновления локального дерева портов нам понадобится
пакет cvsup. Установим его.

# cd /usr/ports/net/cvsup/
# make install


Создадим конфигурацию при помощи псевдо-порта cvsupit

# cd /usr/ports/net/cvsupit/
# make
# make install


На экране должно появится меню псевдо-порта cvsupit. Выберите пункт меню
The 5.0-current branch (.=HEAD). В остальных меню примите все по
умолчанию (не устанавливайте исходники /src) и откажитесь от обновления
CVSup.

В каталоге /etc должен появится файл cvsupfile. Откройте его и
закоментируйте все строки начинающиеся с src. Должно получится примерно
следующее:

*default host=cvsup.ru.FreeBSD.org
*default base=/usr
*default prefix=/usr
*default release=cvs
*default tag=.
*default delete use-rel-suffix
src-all
*default tag=.
ports-all
doc-all

для обновления системы раскоментируйте строку src-all


А теперь самое главное - обновляем порты:

# /usr/local/bin/cvsup -g -L 2 /etc/cvsupfile

Я обновляю дерево портов каждую неделю через cron. Я создал файлик
cvsup_up.sh в /usr/local/sbin/ и поместил в него команду обновления
портов (см. выше). В /etc/crontab добавил следующую строчку

35 23 * * 6 root /usr/local/sbin/cvsup_up.sh

Чтобы посмотреть какие программы мне нужно обновить, я использую команду

# pkg_version -v > /tmp/newport

Для обновления какой-либо программы заходим в нужный порт и
последовательно выполняем следующие команды:

# make clean
# make
# pkg_delete -f имя_пакета
# make install clean

имя_пакета - это название установленного ранее пакета (например cvsup-6.1_3)
Вот мы обновили дерево портов
ports-all
и исходных кодов
src-all
теперь нам нодо пересобрать мир (в том случае если у нас изменилась весия релиза например мы обновили исходники с версии 5,4 до 6,3)
делаем следующие
cd /usr/src/
make buildworld -j4
make buildkernel
make installkernel
/sbin/shutdown -r now
mergemaster -p
cd /usr/src
make installworld
make delete-old
mergemaster
/sbin/shutdown -r now
make delete-old-libs
последнее make delete-old-libs бывает опасно если у вас какие либо пакеты используют старые библиотеки