обновление дерева исходных кодов и портов во freebsd
Добавлено: 09 дек 2007, 11:19
Программное обеспечение для 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)
Вот мы обновили дерево портов
делаем следующие
чтобы идти в ногу со временем, нужно хотя бы раз в месяц обновлять его.
В данной статье мы рассмотрим обновление локального дерева портов и
немного затронем обновление программ при помощи набора портов.
Порт - это один из очень удобных способов установки программного
обеспечения для 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
теперь нам нодо пересобрать мир (в том случае если у нас изменилась весия релиза например мы обновили исходники с версии 5,4 до 6,3)src-all
делаем следующие
последнее make delete-old-libs бывает опасно если у вас какие либо пакеты используют старые библиотеки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