A.6.1. Введение
Portsnap — система для защищенного распространения дерева
портов FreeBSD. Примерно раз в час генерируется »снэпшот» дерева портов, который
затем архивируется и подписывается электронной подписью. Полученные файлы затем
распространяются при помощи HTTP.
Подобно CVSup, portsnap
использует активную (pull) модель
обновлений: упакованное и подписанное дерево помещается на веб-сервер, откуда его
должны забирать клиенты. Пользователь должен либо запустить portsnap(8) вручную, чтобы
получить обновления, либо настроить периодическое задание при помощи cron(8).
По техническим причинам Portsnap не обновляет основное
(»живое») дерево портов в каталоге /usr/ports/, а работает
со сжатой копией дерева в каталоге /var/db/portsnap/.
Впоследствии эта копия используется для обновления основного дерева.
Примеры
Обновление одного порта: portmaster fooport-1.23 portmaster fooport portmaster foo/fooport
Использование пакетов собранных на официальном сайте через переменную среды PACKAGESITE: Для этого в файл /root/.cshrc прописываем строку примерно такого вида(все зависит от вашей версии): setenv PACKAGESITE http://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-8-stable/Latest/ все теперь можно использовать ключи "-P", "-PP", "--packages-build" и пакеты будут браться с сервера ftp.freebsd.org: portmaster --packages-build fooport-1.23
Использование пакета если такой имеется: portmaster --packages fooport-1.23
Создайте порт локально, но использовать пакеты для удовлетворения зависимостей, после сборки удалить зависимости установленные зависимости: portmaster --packages-build --delete-build-only fooport-1.23 Обновление системы с использованием только пакетов, доступные локально: portmaster -PP --local-packagedir= -a Обновление всех портов, которые нуждаются в обновлении: portmaster -a Обновление всех портов, которые нуждаются в обновлении, и удалить устаревшие distfiles файлы после обновления: portmaster -aD portmaster --clean-distfiles Более сложные задачи (см. подробнее описание вариантов выше): portmaster -r fooport-1.23 portmaster -o emulators/linux_base-fc4 linux_base-8-8.0_15 portmaster -x cvsup -f -a portmaster -a -x gstreamer -x linux Только напечатать порты, у которых есть доступные обновления: portmaster -L | \ egrep -B1 '(ew|ort) version|Aborting|installed|dependencies| \ IGNORE|marked|Reason:|MOVED|deleted' | grep -v '^--' Использование portmaster что бы сделать полную переустановку всех установленных портов: 1. portmaster --list-origins > ~/installed-port-list 2. Обновите дерево портов 3. portmaster -ty --clean-distfiles 4. portmaster --check-port-dbdir 5. portmaster -Faf 6. pkg_delete '*' 7. rm -rf /usr/local/lib/compat/pkg 8. Сохраните все файлы из /usr/local которые вы хотите потом восстановить, например файлы конфигураций в /usr/local/etc 9. В ручную проверьте /usr/local и /var/db/pkg и убедитесь что они пусты 10. Переустановите portmaster 11. portmaster `cat ~/installed-port-list` Вы, вероятно, хотите использовать опцию "-D" для установки, а затем выполнить --clean-distfiles снова. Возможно будет полезна опция --force-config при установке новых портов. Так же вы можете использовать portmaster -a -f -D, чтобы сделать "на месте" обновление установленных портов. Если этот процесс прерван по какой-либо причине, вы можете использовать portmaster -a -f -D -R, чтобы избежать установку портов, уже обновленных (установленных) на предыдущем шаге. Однако первый метод (удалить все и переустановить), предпочтен.
This entry was posted on Вторник, 29 марта, 2011 at 17:12 and is filed under FreeBSD. You can follow any responses to this entry through the RSS 2.0 feed.
You can , or trackback from your own site.
Обновление портов
Основные настройки сделали. Теперь подготовим нашу систему к установке софта. обновим дерево портов с помощью утилиты portsnap. При первом запуске используем команду:
# portsnap fetch extract
Утилита скачает и распакует порты в папку /usr/ports. Последующее обновление будет производиться командой:
# portsnap fetch update
Добавим ее в cron для регулярного обновления портов раз в сутки. Для этого идем в /var/cron/tabs и создаем там файл root.
# touch /var/cron/tabs/root
Файл должен быть следующего содержания:
SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin 0 3 * * * portsnap cron
Обращаю внимание, что команда в планировщике записана не так, как мы запускали из консоли. Это сделано специально, чтобы не грузить сервера обновлений по крону в одно и то же время
Для обновления через планировщик используется специальная команда porsnap cron, которая делает небольшой случайный разброс по времени для обновления, чтобы все клиенты обновлялись в разное время, а не строго по часам.
На этом наша настройка системы закончена, переходим к следующей части, в которой займемся настройкой непосредственно компонентов web-сервера.
Использование pkg_which
(или ) используется для определения, какому приложению принадлежит файл. Вот простой пример, иллюстрирующий различие между встроенной командой и :
% which pkgdb/usr/local/sbin/pkgdb
используется для того, чтобы показать путь к приложению. скажет мне, какому приложению принадлежит файл:
% pkg_which pkgdb portupgrade-20030723
Эта команда эквивалентна предыдущей команде :
% pkgdb pkgdb portupgrade-20030723
% ls /usr/local/bin | grep yaf tryaffix* yaf-cdda* yaf-mpgplay* yaf-splay* yaf-tplay* yaf-vorbis* yaf-yuv*
Если вы похожи на меня, то эти имена файлов ничего вам не говорят. Давайте посмотрим, какому приложению они принадлежат:
% pkg_which *yaf* ispell-3.2.06_3 kdemultimedia-3.1.3 kdemultimedia-3.1.3 kdemultimedia-3.1.3 kdemultimedia-3.1.3 kdemultimedia-3.1.3 kdemultimedia-3.1.3
содержит несколько полезных ключей. Один из них — ключ , или «начало». Скажем, вы не помните, откуда из дерева портов происходит . Попробуйте это:
% pkg_which -o kdemultimedia-3.1.3 multimedia/kdemultimedia3
Вывод показывает, что каталог, из которого было построено приложение — .
Ключ также может оказаться полезным. Если я хочу
узнать какие приложения у меня установлены:
% pkg_which -v kde* kde-config: kdelibs-3.1.3 kdebugdialog: kdebase-3.1.3 kded: kdelibs-3.1.3 kdeeject: kdebase-3.1.3 kdeinit: kdelibs-3.1.3 kdeinit_shutdown: kdelibs-3.1.3 kdeinit_wrapper: kdelibs-3.1.3 kdepasswd: kdeutils-3.1.3 kdeprintfax: kdebase-3.1.3 kdesktop: kdebase-3.1.3 kdesktop_lock: kdebase-3.1.3 kdessh: kdeutils-3.1.3 kdesu: kdebase-3.1.3 kdesu_stub: kdelibs-3.1.3 kdesud: kdebase-3.1.3 kdevdlg2ui: kdevelop-2.1.5 kdevelop: kdevelop-2.1.5
Красивый, информативный вывод. Каждая строка показывает имя приложения и следующее за ней через имя порта, который установил это приложение. Кстати, похоже на этой машине установлен KDE версии 3.1.3.
Прежде чем двигаться дальше, подведём итоги. Итак, шаги, нужные для поддержания ваших программ в актуальном состоянии, будут следующими:
- Запустите для синхронизации дерева портов.
- Запустите для обновления .
- Используйте для определения приложений, требующих обновления.
- Используйте для апгрейда этих приложений.
Особенности:
-a Проверка всех портов и обновление по мере необходимости.
--show-work Показывать какие из зависимых портов не установленные (подразумевает "-t" )
-o <new port dir in /usr/ports> <installed port> replace the installed port with a port from a different origin -o <new port dir in /usr/ports> <installed port> заменить существующий порт другим портом (обычно перейти на новую версию)
-r имя/glob каталога порта в /var/db/pkg восстановить указанный порт, и все порты, которые зависят от его
-R используется с -r или -f опциями, чтобы пропустить порты, обновленные ранее. Когда использующийся с "-r" это также предотвратит восстанавление родительского порта, если это, и все его зависимости
-l список всех установленных портов по категориям
-L список всех установленных портов по категориям, и поиск обновлений
--list-origins список директорий относительно /usr/ports. Этот список предназначен для передачи в portmaster либо на другой машине или для перестановки всех портов. См. примеры ниже.
-F только скачать дистрибутивы (distfiles)
-n отвечать "нет" на все вопросы пользователю
-y отвечать "да" на все вопросы пользователю
-e имя/glob для каталога порта в /var/db/pkg удаляют порт, используя pkg_delete, и дополнительно удаляют весь distfiles. Вызов "-s" после удаления порта удаляет и все зависимости которые более не требуются.
-s удалить неиспользуемые более порты зависимостей
--clean-distfiles удаляет неиспользуемые distfiles-файлы установленных портов, если используется "-t" то для всех портов, а не только установленных.
-y --clean-distfiles тоже что и выше, но удаляет все distfiles-файлы без предупреждения
--clean-packages предложит удалить устаревшие пакеты. Опция --index-only требуется, если не дерево портов доступно.
"-y --clean-packages" делает то же самое, что и выше, но удаляет все устаревшие файлы без предупреждения.
--check-depends cross-check и обновления информации зависимостей для всех портов
--check-port-dbdir Проверит устаревшие записи в /var/db/ports
-h|--help Показать помощь
--version Показать номер версии
Воспользуйтесь преимуществом Simple Port Forwarding при переключении портов
Скажите, что программа как таковая поддерживает несколько языки и таким образом его использование более комфортно для нас. Это селектор в левом нижнем углу, где появляется раскрывающийся список. На этом этапе мы должны знать, что Simple Port Forwarding знает порты, используемые сотнями Приложения которые необходимо открыть для их правильной работы.
Для этого нам просто нужно взглянуть на дополнительное окно, которое открывается рядом с основным. Отсюда у нас есть возможность выбрать, например, программу, для которой мы хотим открыть порты. Мы говорим вам об этом, потому что это будет одна из самых распространенных задач, которые мы выполняем с помощью этой программы. В нем, как мы уже говорили ранее, мы находим раздел, который позволяет нам установить наши IP как исправлено.
Как изменить порты с помощью программы
С другой стороны, в разделе, обозначенном цифрой четыре, мы видим кнопка это тот, который позволяет нам взаимодействовать с портами. Для этого нам нужно только нажать на кнопку Сделать сейчас.
В этот момент на экране появится новое окно, в котором у нас будет возможность выбрать конкретное приложение, с которым мы хотим работать. И дело в том, что Simple Port Forwarding сохраняет необходимую конфигурацию порта для многих программ, которые мы регулярно используем. Таким же образом у нас есть возможность из этого же окна добавить новую конфигурацию для любого другого программного обеспечения. . Что ж, чтобы получить доступ к списку обсуждаемых программ, нам нужно только открыть раскрывающийся список, который мы находим.
Здесь мы видим большое количество Сеть P2P клиенты, которые являются одним из наиболее распространенных типов программного обеспечения, для которого нам необходимо открыть определенные порты.
Изменить порты маршрутизатора вручную
Таким же образом у нас есть возможность создать настраиваемое действие для управления портом с помощью кнопки «Добавить». Это приведет нас к новому окну конфигурации, где нам нужно будет ввести ряд более конкретных параметров, чем в предыдущем случае.
Здесь мы уже можем указать имя для нового задача которые мы собираемся определить, а также указать программе тип соединения или порты, с которыми мы будем иметь дело.
Дополнительные ключи portupgrade
Мы уже убедились, что корректно обновляет все устаревшие приложения. Тем не менее, у есть еще несколько ключей, позволяющих вам выбирать какие приложения апгрейдить, и как это делать.
Опция, которая полезна, если у вас нет постоянного соединения с интернетом . Обычно, когда вы производите апгрейд, идёт в интернет, когда ей требуется файл, а затем тратит время на его сборку. Если вы производите большой апгрейд, например KDE, она может много раз выходить в интернет с перерывами в несколько часов.
Эта команда выходит в Интернет, вытягивает все нужные файлы, но ничего не устанавливает:
% portupgrade -aFrR
Когда вы загрузили необходимые файлы, можно отключаться от интернета и запускать как обычно.
Другой ключ . Этот ключ просто сообщает вам,
что собирается делать . Этот ключ очень полезен, если вы относитесь к нервному, параноидальному типу и хотите заранее знать, что случится с вашим софтом.
Вот пример вывода:
% portupgrade -anrR ---> Session started at: Sun, 17 Aug 2003 22:06:00 -0400 <a page of output snipped> ---> Reporting the results (+:done / -:ignored / *:skipped / !:failed) - lang/ruby16 (ruby-1.6.8.2003.04.19) - net/cvsup-without-gui (cvsup-without-gui-16.1h) + lang/ruby16-shim-ruby18 (ruby-shim-ruby18-1.8.0.p2.2003.04.19) + databases/ruby-bdb1 (ruby-bdb1-0.1.9) - sysutils/portupgrade (portupgrade-20030723) - www/lynx (lynx-2.8.4.1d) ---> Session ended at: Sun, 17 Aug 2003 22:06:02 -0400 (consumed 00:00:02)
Давайте посмотрим на этот вывод. систематически проходит через каждый установленный в системе порт, а затем помещает результат в отчет. Каждая строка отчета показывает заголовок порта, установленную версию, и символ, показывающий, требуется ли апгрейд. В этом частичном отчёте показано два порта, требующих модернизации. Они находятся в строках, начинающихся со знака . Если я сравню отчёт с показаниями , я увижу один результат, записанный по разному:
% portversion -l "<" ruby-bdb1 ruby-shim-ruby18
Если вы очень осторожны, можете использовать ключ , что означает интерактивность. Добавьте его к вашим ключам и будет делать паузу перед апгрейдом приложения или зависимости. Пауза выглядит так:
---> Upgrading 'ruby-bdb1-0.1.9' to 'ruby-bdb1-0.2.1' (databases/ruby/bdb1) OK?
Обратите внимание на ответ «да» в квадратных скобках, этот ответ будет использован по умолчанию. Это значит, что нажимая Enter, вы говорите «Да»
Если вы полагаете, что вы не хотите обновлять этот порт, наберите .
Последний ключ, который я хотела бы упомянуть, это ключ , или лог. Этот ключ неоценим, когда порт отказывается устанавливаться, и вы собираетесь послать кому-либо лог неудачной установки. Для примера, я проапгрейжу один порт и направлю вывод в файл, названный
:
% portupgrade -rR ruby-shim-ruby18 -l logfile
Скорее всего, вы не захотите использовать этот ключ, особенно если у вы много файлов, требующих модернизации. Кому же хочется продираться через огромный лог-файл!
В следующей статье я хочу осветить деинсталляцию портов и чистку файлов, которые уже не используются портами. А еще мы рассмотрим настройку .
Комментарий читателя: в статье неоднократно упоминается файл , содержащий список программ в дереве портов. Он по умолчанию используется утилитами семейства . Однако этот же файл используется и системами обновления портов штатными базовыми средствами — через CVS, CVSup или CTM. Это может привести к конфликтам, поэтому разработчики рекомендуют использовать файл с каким-либо другим именем (см. ).
Dru Lavigne is an instructor at Marketbridge Technologies in Ottawa and the maintainer of the Open Protocol Resource.
Что предлагает нам Simple Port Forwarding после его установки
Чтобы дать нам представление о том, что мы показываем вам здесь, как мы уже упоминали, мы находим бесплатную программу. Это было создано в основном для того, чтобы помочь нам управлять портами, которые являются частью маршрутизатор сам. Конечно, это то, что мы можем выполнить через собственное окно программы. В большинстве случаев это избавляет нас от необходимости доступа к веб-интерфейсу маршрутизатора для открытия портов, как мы упоминали ранее.
Поэтому в случае, если при определенных обстоятельствах или для определенных программ нам нужно легко открывать определенные порты, это хорошее решение. Все это удобно делать из Windows благодаря приложению, о котором мы говорим в этих строках. Программа поддерживает большое количество маршрутизаторов, и первое, что мы делаем, это ищем свой. Если мы не можем найти его, у нас есть возможность запросить его добавление или найти другой совместимый.
Стоит упомянуть, что само приложение способно определять IP-адрес маршрутизатора или даже предлагать нам собственное окно с веб интерфейс для доступа. Также при необходимости вы можете на время преобразовать наш сетевой адрес в статический, либо изменить DNS серверы, которые идут по умолчанию.
Внешние ссылки [ править ]
- Официальная веб-страница портов FreeBSD
- FreshPorts — сайт, отслеживающий обновления портов
- Port-Tags — проект для добавления тегов в коллекцию портов.
- Установка приложений: пакеты и порты из Руководства FreeBSD (Глава 4)
vтеFreeBSD Project | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
FreeBSD |
|
||||||||||
Подсистемы |
|
||||||||||
Люди |
|
||||||||||
Производные |
|
portsnap(8)
При первом запуске программы portsnap(8) выполните команду :
Получив эту команду, portsnap(8) загрузит последнюю моментальную копию коллекции «портов» и извлечет ее содержимое в каталог /usr/ports. Команду следует использовать всего один раз, с целью приведения portsnap(8) в известное состояние.
При последующих обновлениях следует использовать команду :
По этой команде все изменения, произошедшие с момента последнего запуска portsnap(8), будут загружены и установлены в коллекцию «портов».
Если вы планируете регулярно запускать portsnap из cron(1), то вместо команды лучше использовать команду . Это поможет равномерно распределять нагрузку на серверах FreeBSD portsnap. Вот пример записи в файле crontab пользователя root, которая запускает portsnap ежедневно в пять часов утра:
В действительности обновление в этом случае будет производиться в случайно выбранный момент времени, в интервале между пятью и шестью часами утра, что гораздо более эффективно, чем если бы все пользователи portsnap(8) пытались одновременно подключиться к серверу ровно в пять утра.
Фактически это все, что вам требуется знать для работы с программой portsnap(8), предоставляющей отличный способ получения самых последних версий приложений для FreeBSD без использования csup(1) или обновления всего дерева исходного кода. Единственное, что теперь осталось сделать, — это обновить программное обеспечение, чтобы привести его в соответствие с обновленной версией коллекции «портов».
Конфигурирование portsnap
Порядок выполнения обновлений, производимых программой portsnap(8), определяется параметрами настройки в файле /etc/portsnap.conf. Очень немногие изменят конфигурацию portsnap(8), тем не менее ниже перечислены параметры, значения которых вам, скорее всего, захочется изменить. Можно заметить, что конфигурация portsnap(8) выглядит почти так же, как и конфигурация freebsd-update(8). Оба инструмента были написаны одним и тем же человеком, поэтому они используют сходные механизмы для решения сходных задач. Файл /etc/portsnap.conf содержит ключевые слова и значения, которые им присваиваются.
Это имя сервера portsnap. В действительности под именем portsnap.freebsd.org скрывается несколько серверов. Возможно, в будущем Проект FreeBSD объявит о запуске региональных серверов для более равномерного распределения нагрузки, но пока это единственный доступный сервер portsnap.
Параметр — это криптографический ключ сервера portsnap. Сервер portsnap(8) подписывает обновления своей цифровой подписью, чтобы гарантировать их подлинность и целостность. Не изменяйте этот параметр.
Параметр позволяет определить категории программного обеспечения в «портах», которые не должны обновляться. Указанное в этом примере значение параметра предотвращает обновление категорий программного обеспечения поддержки арабского и корейского языков, как это делается в файле refuse, который используется программой csup(1)
Так же как и в случае с программой csup(1), следует проявлять особую осторожность, включая категории в этот список, потому что коллекция «портов» — это единое целое, и при отказе от обновлений крупных частей дерева можно привести систему в противоречивое состояние
Переменные среды
Каталог на который указывает переменная PACKAGES (по умолчанию /usr/ports/packages) будет использоваться для хранения и резервного копирования новых пакетов. При использовании 'make package' с опцией -g, инфраструктура портов сохранит пакеты в ${PACKAGES}/All иначе PKGREPOSITORY. При использовании -b опции portmaster хранит свои резервные пакеты в ${PACKAGES}/portmaster-backup так, чтобы вы могли создать и резервный пакет и пакет недавно установленного порта, даже если у них одинаковая версия в разных папках.
При использовании опции --packages* файлы пакета будут загружены в ${PACKAGES}/portmaster-download. portmaster будет использовать переменные PACKAGESITE и PACKAGEROOT (по умолчанию http://ftp.freebsd.org). portmaster пытается использовать обе эти переменные как же как это делает pkg_add (1).
Переменная UPGRADE_TOOL установленная в положение "portmaster" и переменные UPGRADE_PORT и UPGRADE_PORT_VER устанавливаются в полное имя пакета и версии.(The UPGRADE_TOOL variable is set to "portmaster", and the UPGRADE_PORT and UPGRADE_PORT_VER variables are set to the full package name string and version of the existing package being replaced, if any.)
При использовании опции --index-only переменная PACKAGES должна содержать имя папки в которой у суперпользователя есть права на запись. Другие полезные переменные:
MASTER_SITE_INDEX (по умолчанию http://www.FreeBSD.org/ports/) FETCHINDEX (по умолчанию fetch -am -o) INDEXDIR (по умолчанию $PORTSDIR, или $TMPDIR для --index-only) INDEXFILE (по умолчанию версия FreeBSD)
Если Вы используете нестандартные настройки OPTIONS для создания пакета и хотите использовать опцию --index-only без дерева портов, вы должны генерировать свой собственный INDEX файл так, чтобы зависимости соответствовали.
Если вы хотите настроить свою среду сборки на основе на портов, посмотрите /usr/ports/ports-mgmt/portconf
Для логирования используйте переменную PM_LOG указав в ней полный путь до файла.
По умолчанию portmaster создает резервные пакеты установленных портов прежде, чем он выполнит pkg_delete (1) во время обновления. Если создания пакета не удается это рассматривается как серьезная ошибка и предлагается пользователю. Однако для заданного сценарием использования portmaster это может быть проблемой. В ситуациях, где пользователь АБСОЛЮТНО УВЕРЕН, что не возможность создания резервного пакета не должна приводить к фатальной ошибке, переменная PM_IGNORE_FAILED_BACKUP_PACKAGE может быть определена через rc файл.
Для тех, кто хочет чтобы определенные порты всегда компилировались, а не устанавливались из пакетов, переменная PT_NO_INSTALL_PACKAGE может быть определена в соответствии с make(1), можно установить в /usr/local/etc/ports.conf если используется /usr/ports/ports-mgmt/portconf, или в /etc/make.conf
1.4. Установка FreeBSD с CDROM или через интернет
Проще всего выполнить установку с CDROM. Если у вас есть поддерживаемый привод CDROM и
установочный CD FreeBSD, существует два способа установки с него:
-
Если ваша система поддерживает стандарт “CDBOOT” загрузочных CDROM и
загрузка с CD включена, просто поместите установочный CD FreeBSD в привод и загрузите
систему для начала установки. -
Создайте набор загрузочных дискет FreeBSD из каталога floppies/ дистрибутива FreeBSD. Прочтите с более подробной информацией по созданию
загрузочных дискет под различными операционными системами. Затем просто загрузитесь с
первой дискеты, и вскоре начнется установка FreeBSD.
1.3. Инструкции по созданию дискет
В зависимости от способа установки FreeBSD, вам может потребоваться создание набора
дискет (обычно трех) для начала процесса установки. Этот раздел кратко описывает как
создать эти диски с установочного CDROM или из интернет
Обратите внимание, что в общем
случае установки FreeBSD с CDROM на компьютере, поддерживающем загрузочные CDROM, этот
шаг не требуется и может быть пропущен
Для большинства установок с CDROM или по сети, вам потребуются скопировать образы
дискет boot.flp и kernX.flp из каталога floppies/ (для 1.44MB дискет).
Получить эти образы по сети просто. Загрузите release/floppies/boot.flp и все
release/floppies/kernX.flp с http://www.FreeBSD.org/snapshots/ или с одного из зеркал, перечисленных
в разделе FTP зеркала Руководства или, или на страницах http://mirrorlist.FreeBSD.org/.
Возьмите несколько чистых, только что отформатированных дискет и поместите образ boot.flp на первую, а kernX.flp на остальные. Эти образы не DOS файлы. Вы не можете просто
скопировать их на DOS или UFS дискету как обычные файлы, потребуется размещение образов
на диске с помощью fdimage.exe под DOS (находится в каталоге
tools на CDROM или на FTP зеркалах FreeBSD) или с помощью
команды dd(1) в UNIX.
Например, для создания дискеты с образом ядра под DOS, вам потребуется выполнить
примерно такую команду:
C> fdimage boot.flp a:
Предполагается, что вы скопировали fdimage.exe и boot.flp в отдельный каталог. Для файлов kernX.flp действия будут
аналогичны.
Если вы создаете загрузочную дискету на компьютере UNIX, используйте команду:
# dd if=floppies/boot.flp of=/dev/rfd0
или
# dd if=floppies/boot.flp of=/dev/fd0
или
# dd if=floppies/boot.flp of=/dev/floppy
Как обновить JLS для FreeBSD с 12 до 13?
Мы тоже можем модернизировать Jail. Концепция та же, но вам нужно указать текущую версию следующим образом. Получить имя Jail и базовый каталог:
# jls
Запустим обновление:
# freebsd-update -b /jails/dnscrypt/ --currently-running 12.2-RELEASE -r 13.0-RELEASE upgrade
Работать в системе, смонтированной в jail на основе /jails/dnscrypt/Нам нужно сообщить об этом freebsd-update при использовании команды upgrade или fetch для обновлений Jail. Не обнаруживать текущий выпуск. Требуется только при обновлении.Укажите новую версию, до которой следует обновить:
-b /jails/dnscrypt/ --currently-running 12.2-RELEASE -r 13.0-RELEASE upgrade
Затем запуск последующих команд обновления и установки jails может быть выполнен обычным образом с помощью -b:
Установка обновления jail
# freebsd-update -b /jails/dnscrypt/ install
Перегрузка или рестарт jail
# /etc/rc.d/jail restart # freebsd-update -b /jails/dnscrypt/ install # jls
Запишите идентификатор jail и получите доступ в оболочку
# jexec 2 sh
Обновите весь пакет внутри jail
# pkg-static install -f pkg # pkg bootstrap -f # pkg update # pkg upgrade
Выход из jail
# exit
Пересборка восходящих зависимостей
Программа portmaster автоматически обновляет программы, от которых зависит программа, требующая обновления, но от нее можно также потребовать пересобрать все программы, которые зависят от обновляемой программы. Это запросто может вызвать пересборку большого числа «портов», особенно когда речь заходит о критически важных библиотеках. Используйте ключ , чтобы потребовать от portmaster проверить как нисходящие, так и восходящие зависимости.
Изменение зависимостей
Бывает, что один «порт» нужно заменить другим. Предположим, мне захотелось заменить Emacs 20 на Emacs 21. Программа portmaster может выполнить это самостоятельно, если задать ей ключ . В качестве аргументов этого ключа следует указать новый «порт» и старый, установленный «порт» именно в таком порядке:
Это не совсем типичная ситуация, но после нескольких таких изменений, произошедших в течение последних лет, я рад, что эта возможность есть.
Пропуск «портов»
Иногда отказ от обновления «порта» действительно необходим, даже если при этом возникает рекурсия. Например, когда я выполняю сборку OpenOffice.org, мой ноутбук занят этим целый день. Мне бы не хотелось, чтобы обновление OpenOffice.org происходило в результате обновления другого компонента; я предпочитаю обновлять этот пакет самостоятельно.
portmaster проверяет каждый каталог в базе данных пакета на наличие файла +IGNOREME. Если этот файл присутствует, portmaster не будет обновлять такой пакет в ходе обновления других пакетов.
Теперь, даже если я начну обновлять библиотеку, от которой зависит OpenOffice.org, и прикажу программе portmaster обновить все программы, зависящие от этой библиотеки, portmaster не станет обновлять ООо. В результате подобного обновления зависимостей ООо может выйти из строя, но выбирая этот путь, я иду на риск сознательно.
Другие особенности portmaster
Настоятельно рекомендую прочитать страницу руководства portmaster(8), чтобы ознакомиться с функциями, предлагаемыми этой программой для решения ваших проблем. Вы можете возобновить прерванную сборку; посмотреть, что сделала бы программа portmaster, если бы вы предложили ей обновить систему; сохранить пакеты в вашем репозитарии пакетов и т. д. Если у вас возникли проблемы с обновлением «порта», portmaster наверняка сможет предложить решение.
Уменьшение размера дерева «портов»
С течением времени растет и дерево «портов». Отчасти это хорошо, так как в дереве появляются новые «порты». Отчасти это необходимое зло, так как в дереве сохраняются устаревшие версии программ, которые вы только что обновили. В остальном этот рост было бы желательно предотвратить, так как в системе остаются файлы, которые когда- то были необходимы, а теперь уже не нужны. Например, когда я обновил пакет до версии Fedora Core 4, файлы пакета Fedora Core 3 стали ненужными. Поиск и удаление ненужных файлов позволит сэкономить гигабайты дискового пространства, которое, между прочим, не бесконечно. Хотя portmaster предоставляет возможность удаления ставших ненужными файлов distfiles, тем не менее предварительно стоит выполнить глобальный поиск таких файлов.
Программа portmaster может отыскивать устаревшие файлы distfiles. Если запустить команду , portmaster(8) идентифицирует каждый устаревший файл distfile и предложит удалить его. Если запустить команду , portmaster(8) молча удалит устаревшие файлы distfiles.
Другая распространенная проблема — когда после установки «порта» не выполняется команда . Нередко я хотел бы иметь простой доступ к исходному коду для ознакомления с программой, поэтому не чищу свои «порты». В конечном счете я забываю об этом, а ставшие ненужными файлы продолжают занимать дисковое пространство. Работая над этим разделом, я обнаружил, что забыл удалить временные файлы после последней сборки OpenOffice.org; неудивительно, что у меня на диске так мало свободного места! «Порты» операционной системы FreeBSD легко поддаются массовой чистке; достаточно зайти в каталог /usr/ports и запустить команду . В результате будет выполнен рекурсивный обход дерева «портов» и для каждого из них будет исполнена команда , которая удалит каждый рабочий каталог.
С помощью этих инструментов вы сможете своевременно обновлять свою систему. А теперь перейдем к основам администрирования FreeBSD и посмотрим, что еще можно сделать с операционной системой FreeBSD.
Пропуск «портов»
Иногда отказ от обновления «порта» действительно необходим, даже если при этом возникает рекурсия. Например, когда я выполняю сборку OpenOffice.org, мой ноутбук занят этим целый день. Мне бы не хотелось, чтобы обновление OpenOffice.org происходило в результате обновления другого компонента; я предпочитаю обновлять этот пакет самостоятельно.
portmaster проверяет каждый каталог в базе данных пакета на наличие файла +IGNOREME. Если этот файл присутствует, portmaster не будет обновлять такой пакет в ходе обновления других пакетов.
Теперь, даже если я начну обновлять библиотеку, от которой зависит OpenOffice.org, и прикажу программе portmaster обновить все программы, зависящие от этой библиотеки, portmaster не станет обновлять ООо. В результате подобного обновления зависимостей ООо может выйти из строя, но выбирая этот путь, я иду на риск сознательно.
Ссылки [ править ]
- ^ «О портах FreeBSD» . freebsd.org . Проверено 8 декабря 2019 года .
- ^ «Справочник Портера» . Проект FreeBSD.
- ^ «Журналы и ошибки сборки пакета FreeBSD (указатель на кластер)» . freebsd.org . Проверено 26 марта 2010 года .
- ^ https://lists.freebsd.org/mailman/listinfo/freebsd-pkg-fallout
- ^ https://www.freebsd.org/doc/handbook/pkgng-intro.html
- ^ https://www.freebsd.org/releases/10.0R/relnotes.html
- ^ «Журнал CVS для портов / Mk / bsd.port.mk» . Проект FreeBSD. Архивировано 15 апреля 2013 года . Проверено 5 января 2020 года .
- ^ «Журнал CVS для src / usr.sbin / pkg_install / Makefile» . Проект FreeBSD. Архивировано из оригинального 14 апреля 2013 года . Проверено 26 мая 2018 года .
- ^ Sherrill, Джастин (12 января 2013). «Раннее образование DPorts» . Дайджест DragonFly BSD . Проверено 12 апреля 2014 года .
- ^ Марино, Джон. «ДельтаПортс» . GitHub . Проверено 12 апреля 2014 года .