Index: head/ru_RU.KOI8-R/books/handbook/cutting-edge/chapter.xml =================================================================== --- head/ru_RU.KOI8-R/books/handbook/cutting-edge/chapter.xml (revision 47963) +++ head/ru_RU.KOI8-R/books/handbook/cutting-edge/chapter.xml (revision 47964) @@ -1,2238 +1,2239 @@ - - Обновление системы и смена версии + + + + Обновление системы и смена версии &os; + - JimMockРеструктурирование, реорганизацию и частичное обновление - выполнил + + + Jim + Mock + + Реструктурирование, реорганизацию и частичное + обновление выполнил + - JordanHubbardОригинальный текст написали + + + Jordan + Hubbard + + Оригинальный текст написали + - Poul-HenningKamp + + + Poul-Henning + Kamp + + - JohnPolstra + + + John + Polstra + + - NikClayton + + + Nik + Clayton + + - АндрейЗахватовПеревод на русский язык: + + + Андрей + Захватов + + Перевод на русский язык: + - - Краткий обзор Между релизами над &os; ведется постоянная работа. Некоторые отдают предпочтение официально выпущенным версиям, в то время как остальные предпочитают использовать последние разработки. Тем не менее, даже для официальных версий часто выходят обновления, связанные с безопасностью и другими критическими исправлениями. Независимо от используемой версии &os; предоставляет все необходимые инструменты для поддержания системы в актуальном состоянии, а также - позволяет легко перейти на другую версию. Эта глава поможет - вам решить, хотите ли вы отслеживать систему в процессе работы над ней - или останетесь верным одному из выпущенных релизов. Также имеются - простейшие инструменты для поддержания вашей системы в актуальном + позволяет легко перейти на другую версию. Эта глава описывает, + как отслеживать систему в процессе её разработки, а также + основные инструменты для поддержания системы &os; в актуальном состоянии. После чтения этой главы вы будете знать: - Какие программы можно использовать для обновления системы и - Коллекции Портов. - - - - Как поддерживать вашу систему в актуальном состоянии при + Как поддерживать систему &os; в актуальном состоянии при помощи freebsd-update, - CVSup, CVS + Subversion или CTM. Как узнать состояние установленной системы по отношению к известной нетронутой копии. + Как поддерживать установленную документацию в актуальном + состоянии при помощи Subversion + или портов документации. + + + Разницу между двумя ветвями разработки: &os.stable; и &os.current;. - Как перестраивать и переустанавливать базовую систему полностью - при помощи make buildworld (и других). + Как перестраивать и переустанавливать всю базовую + систему. Перед чтением этой главы вы должны: - Полностью настроить своё подключение к сети (). + Правильно настроить сетевое подключение + (). - Знать, как устанавливать дополнительное программное обеспечение - других разработчиков (). + Знать, как устанавливать дополнительное стороннее + программное обеспечение (). - В этой главе для получения и обновления исходных текстов &os; - используется команда cvsup. Для этого вам - нужно установить порт или пакет net/cvsup-without-gui. Начиная с версии - &os; 6.2-RELEASE для этих целей можно воспользоваться командой - &man.csup.1;, которая входит в состав системы. + В этой главе для получения и обновления исходных текстов + &os; используется команда svn. Для этого + нужно сперва установить порт или пакет + devel/subversion. - + - Обновление FreeBSD + + Обновление &os; + - TomRhodesОригинальный текст написал + + + Tom + Rhodes + + Оригинальный текст написал + + - ColinPercivalНа основе заметок, которые предоставил + + + Colin + Percival + + На основе заметок, которые предоставил + - - обновление и смена версии + обновление и смена версии + + freebsd-update обновление и смена версии - Применение обновлений безопасности — важный момент в - сопровождении программного обеспечения, особенно такого как - операционная система. Для &os; этот процесс не был простым в - течение долгого времени. На исходный код нужно было накладывать - патчи, перестраивать код в двоичные файлы, а затем эти двоичные файлы - требовалось переустановить. + Своевременное применение обновлений безопасности и переход + на более новую версию операционной системы — важные + аспекты системного администрирования. &os; включает в себя + программу freebsd-update, которую можно + использовать для решения обеих задач. - Теперь это давно не так, и &os; включает программу с простым - названием freebsd-update. Эта программа - предоставляет две различные функции. Во-первых, она позволяет - применить к базовой системе &os; обновления безопасности и критические - исправления в двоичном виде, без необходимости сборки и установки. - Во-вторых, программа поддерживает обновление системы со сменой - старшего или младшего номера версии. + Эта программа используется для установки распространяемых в + двоичном виде обновлений безопасности и исправлений для &os; + без необходимости ручной компиляции и установки патчей или + нового ядра. Двоичные обновления доступны для всех архитектур + и версий, поддерживаемых группой безопасности. Перечень + поддерживаемых версий и их ожидаемые даты окончания поддержки + указаны на странице http://www.FreeBSD.org/security/. + Эта программа также используется для незначительных + обновлений версии операционной системы, а также для перехода на + другую ветвь выпуска релизов. Перед обновлением следует + ознакомиться с объявлением о выпуске новой версии, так как там + может содержаться важная информация, применимая к версии, на + которую намечен переход. С соответствующими объявлениями можно + ознакомиться по ссылке http://www.FreeBSD.org/releases/. + - Двоичные обновления доступны для всех архитектур и версий, - поддерживаемых группой безопасности; тем не менее, для работы - некоторых из возможностей, таких как смена версии операционной - системы &os;, требуется последняя версия &man.freebsd-update.8; - и по крайней мере &os; 6.3. Перед обновлением до новой версии - следует ознакомиться с объявлением о выпуске текущей версии, так - как там может содержаться важная информация, применимая к версии, - на которую намечен переход. С соответствующими объявлениями можно - ознакомиться, перейдя по следующей ссылке: http://www.FreeBSD.org/releases/. + Если имеется задание crontab, + запускающее &man.freebsd-update.8;, то перед сменой версии + операционной системы его обязательно нужно выключить. - Если имеется задание crontab, запускающее - freebsd-update, то перед началом выполнения - следующих действий его обязательно нужно выключить. + В этом разделе описывается конфигурационный файл + freebsd-update, демонстрируется применение + исправлений безопасности и обновление операционной системы со + сменой младшей или старшей версии, а также обсуждаются некоторые + соображения касаемо смены версии операционной системы. - + Конфигурационный файл - Некоторые пользователи могут пожелать изменить - конфигурационный файл для лучшего контроля над процессом - обновления. Все параметры подробно задокументированы, но - для некоторых из них может понадобиться дополнительное - разъяснение: + Конфигурационный файл freebsd-update + самодостаточен и работает по умолчанию. Некоторые пользователи + могут пожелать отредактировать конфигурационный файл + /etc/freebsd-update.conf для лучшего + контроля над процессом обновления. В комментариях описываются + доступные в этом файле параметры, но для следующих из них может + потребоваться дополнительное разъяснение: # Components of the base system which should be kept updated. -Components src world kernel +Components world kernel - Данный параметр определяет, какие части &os; будут обновлены. - По умолчанию обновляется исходный код (src), вся базовая система - (world) и ядро (kernel). Компоненты те же самые, что и во время - установки; в частности, добавление "world/games" позволяет - обновить игры. Использование "src/bin" позволяет обновить - исходный код в src/bin. + Данный параметр определяет, какие части &os; будут + обновлены. По умолчанию обновляется вся базовая система + (world) и ядро (kernel). Вместо этого можно указать отдельные + компоненты, такие как src/base или + src/sys. Тем не менее, лучшим вариантом + будет оставить всё как есть, поскольку изменение этого перечня + с целью добавления особых пунктов потребует от пользователя + указания подряд всех пунктов. Со временем это может привести + к негативным последствиям из-за возможной рассинхронизации + между исходными текстами и двоичными файлами. - Лучшим вариантом будет оставить всё как есть, поскольку - изменение этого перечня с целью добавления особых пунктов - потребует от пользователя указания подряд всех пунктов, которые - пользователь захочет обновить. Это может привести к негативным - последствиям из-за возможной рассинхронизации между исходными - текстами и двоичными файлами. - # Paths which start with anything matching an entry in an IgnorePaths # statement will be ignored. -IgnorePaths +IgnorePaths /boot/kernel/linker.hints - Добавьте сюда пути к каталогам (например, /bin или /sbin), которые вы хотели бы - оставить нетронутыми в процессе обновления. Этот параметр можно - использовать для предотвращения перезаписывания локальных - изменений программой freebsd-update. + Добавьте сюда пути к каталогам (например, + /bin или /sbin), + которые вы бы хотели оставить нетронутыми в процессе + обновления. Этот параметр можно использовать для + предотвращения перезаписывания локальных изменений + программой freebsd-update. # Paths which start with anything matching an entry in an UpdateIfUnmodified # statement will only be updated if the contents of the file have not been # modified by the user (unless changes are merged; see below). UpdateIfUnmodified /etc/ /var/ /root/ /.cshrc /.profile - Обновлять конфигурационные файлы в указанных каталогах, только - если они не содержат изменений. При наличии каких-либо изменений - со стороны пользователя автоматическое обновление таких файлов - отменяется. Есть другой параметр - KeepModifiedMetadata, который предписывает - команде freebsd-update сохранять изменения во - время процесса слияния. + Этот параметр позволяет обновлять конфигурационные файлы + в указанных каталогах, только если они не содержат изменений. + При наличии каких-либо изменений со стороны пользователя + автоматическое обновление таких файлов отменяется. Есть + другой параметр KeepModifiedMetadata, + который предписывает команде freebsd-update + сохранять изменения в процессе слияния. # When upgrading to a new &os; release, files which match MergeChanges # will have any local changes merged into the version from the new release. -MergeChanges /etc/ /var/named/etc/ +MergeChanges /etc/ /var/named/etc/ /boot/device.hints Список каталогов с конфигурационными файлами, для которых - freebsd-update попытается выполнить слияние. - Процесс слияния файла представляет собой набор изменений - в формате &man.diff.1;, похож на &man.mergemaster.8;, но с - меньшим количеством параметров: результат слияния принимается, - открывается редактор или freebsd-update - прекращает свою работу. В случае сомнений сделайте резервную - копию /etc и просто - согласитесь со всеми изменениями. Для получения подробной - информации по команде mergemaster смотрите + freebsd-update попытается выполнить + слияние. Процесс слияния файла представляет собой + последовательность изменений в формате &man.diff.1;, похожую + на &man.mergemaster.8;, но с меньшим количеством параметров. + Результат слияния принимается, открывается редактор или + freebsd-update прекращает работу. + В случае сомнений сделайте резервную копию + /etc и просто согласитесь со всеми + изменениями. Для получения подробной информации по команде + mergemaster смотрите . # Directory in which to store downloaded updates and temporary # files used by &os; Update. # WorkDir /var/db/freebsd-update Этот каталог предназначен для размещения патчей и временных - файлов. В случае, когда пользователь выполняет обновление со сменой - версии, в этом месте должен иметь по крайней мере гигабайт дискового - пространства. + файлов. В случае, когда пользователь выполняет обновление со + сменой версии, в этом месте нужно иметь по крайней мере гигабайт + свободного дискового пространства. # When upgrading between releases, should the list of Components be # read strictly (StrictComponents yes) or merely as a list of components # which *might* be installed of which &os; Update should figure out # which actually are installed and upgrade those (StrictComponents no)? # StrictComponents no Если выставлено значение yes, то freebsd-update будет исходить из того, что список Components является полным, и не будет пытаться выполнить изменения за пределами этого списка. В действительности freebsd-update попытается обновить все файлы, которые принадлежат списку Components. - + Обновления безопасности - Обновления безопасности хранятся на удалённой машине и могут - быть загружены и установлены с использованием следующей - команды: + Процесс применения обновлений безопасности &os; был + упрощён, что позволяет поддерживать систему в актуальном + состоянии, используя freebsd-update. + Для получения дополнительной информации по бюллетеням + безопасности &os; смотрите . + Обновления безопасности можно загрузить и установить с + использованием следующих команд. Первая команда определяет + наличие незагруженных обновлений и показывает файлы, которые + будут изменены в процессе обновления. Вторая команда + выполняет обновление. + &prompt.root; freebsd-update fetch &prompt.root; freebsd-update install Если были установлены обновления ядра, то после этого - нужно перезагрузить систему. Если все пошло хорошо, система - должна быть с установленными исправлениями, и - freebsd-update можно запускать в качестве ночного - задания &man.cron.8;. Для этого достаточно добавить следующую - запись в /etc/crontab: + нужно перезагрузить систему. Если обновление установилось + для какого-либо работающего в системе двоичного файла, то + следует перезапустить затронутые приложения, чтобы + использовалась исправленная версия двоичного файла. + Можно настроить ежедневную автоматическую проверку + наличия обновлений, добавив следующую запись в + /etc/crontab: + @daily root freebsd-update cron - Эта запись означает, что freebsd-update будет - запускаться ежедневно. В данном случае, в соответствии с аргументом - freebsd-update ограничится - проверкой доступных обновлений. В случае наличия обновлений они - будут автоматически загружены и сохранены на локальном диске. - Пользователю root будет отправлено - соответствующее письмо, так что эти обновления можно будет - установить самостоятельно. + При наличии обновлений они будут автоматически загружены. + Пользователю root + будет отправлено письмо, так что эти обновления можно будет + просмотреть и установить самостоятельно командой + freebsd-update install. На случай, если что-то пошло не так, в freebsd-update предусмотрен механизм возврата последнего набора изменений с использованием следующей команды: - &prompt.root; freebsd-update rollback + &prompt.root; freebsd-update rollback +Uninstalling updates... done. Если после завершения всех действий было изменено ядро или - какой-либо из его модулей, система должна быть перезагружена. - Это позволит &os; загрузить новые двоичные файлы в память. + какой-либо из его модулей, система должна быть перезагружена, + а все затронутые исполняемые файлы нужно перезапустить. + Команда freebsd-update позволяет + автоматически обновлять только ядро + GENERIC. Если используется ядро с + собственной конфигурацией, его понадобится пересобрать и + переустановить после того, как + freebsd-update завершит установку + обновлений. Тем не менее, freebsd-update + обнаружит и обновит ядро GENERIC при + наличии /boot/GENERIC, даже если оно не + является текущим используемым ядром в системе. + - Команда freebsd-update работает только - с ядром GENERIC. Если в - GENERIC присутствуют изменения или - используется собственная конфигурация ядра, - freebsd-update завершится неудачно. + Всегда храните копию ядра GENERIC + в /boot/GENERIC. Оно пригодится при + решении различных проблем, а также при выполнении обновления + со сменой версии. Смотрите для описания + получения копии ядра GENERIC. + + Если конфигурация в + /etc/freebsd-update.conf не изменялась, + freebsd-update вместе с остальными + обновлениями установит обновлённые исходные тексты ядра. + После этого можно обычным способом выполнить перестроение и + переустановку нового ядра с собственной конфигурацией. + + Обновления, получаемые с помощью + freebsd-update, не всегда затрагивают ядро. + Перестроение собственного ядра не является обязательным, если + исходные тексты ядра не были изменены при выполнении + freebsd-update install. Тем не менее, + freebsd-update всегда обновляет + /usr/src/sys/conf/newvers.sh. Текущий + набор изменений, как указано в номере -p + в выводе uname -r, получается из этого + файла. Перестроение собственного ядра, даже если ничего + больше не менялось, позволяет uname + правильно сообщать текущий набор изменений в системе. Это + в частности может помочь при сопровождении множества систем, + поскольку позволяет быстро оценить наличие установленных + обновлений в каждой из них. - + Обновления со сменой старшей и младшей версий - Этот процесс удаляет старые объектные файлы и библиотеки, что - может нарушить работу большинства сторонних приложений. Все - установленные порты рекомендуется либо удалить и переустановить - заново, либо обновить с использованием программы ports-mgmt/portupgrade. Большинство - пользователей предпочтут выполнить тестовое построение, запустив для - этого следующую команду: + Обновление с &os; 9.0 на &os; 9.1, называется + обновлением со сменой младшего номера версии. Смена старшего + номера версии происходит, когда &os; переходит с одной + значительной версии на другую, как, например, при обновлении + с &os; 9.X на &os; 10.X. Оба типа обновлений можно + произвести, указав freebsd-update версию, + на которую нужно перейти. - &prompt.root; portupgrade -af + + Если в системе используется ядро с собственной + конфигурацией, убедитесь перед началом обновления в наличии + копии ядра GENERIC в + /boot/GENERIC. Смотрите для описания + получения копии ядра GENERIC. + - Это позволит убедиться в том, что всё будет переустановлено - правильно. Обратите внимание, что если переменной окружения - BATCH присвоить значение yes, - то на все вопросы в течение этого процесса будет возвращаться - ответ yes, что позволит исключить необходимость - ручного вмешательства в процесс построения. + Следующая команда, будучи запущенной на &os; 9.0, + выполнит обновление до версии &os; 9.1: - Обновления со сменой старшей и младшей версий можно выполнить, - указав значение версии, на которую будет произведен переход, в - качестве аргумента команды freebsd-update. - Так, например, можно выполнить обновление до версии - &os; 6.3: + &prompt.root; freebsd-update -r 9.1-RELEASE upgrade - &prompt.root; freebsd-update -r 6.3-RELEASE upgrade - После своего запуска freebsd-update анализирует содержимое конфигурационного файла и собирает необходимую для проведения обновления информацию о текущей установленной системе. На экран будет выдан перечень компонентов, - которые удалось и не удалось обнаружить установленными. + которые удалось и не удалось обнаружить установленными. Например: Looking up update.FreeBSD.org mirrors... 1 mirrors found. -Fetching metadata signature for 6.3-BETA1 from update1.FreeBSD.org... done. +Fetching metadata signature for 9.0-RELEASE from update1.FreeBSD.org... done. Fetching metadata index... done. Inspecting system... done. The following components of FreeBSD seem to be installed: kernel/smp src/base src/bin src/contrib src/crypto src/etc src/games src/gnu src/include src/krb5 src/lib src/libexec src/release src/rescue src/sbin src/secure src/share src/sys src/tools src/ubin src/usbin world/base world/info world/lib32 world/manpages The following components of FreeBSD do not seem to be installed: kernel/generic world/catpages world/dict world/doc world/games world/proflibs -Does this look reasonable (y/n)? y +Does this look reasonable (y/n)? y Следующим шагом freebsd-update попытается загрузить по сети файлы, необходимые для выполнения обновления. В некоторых случаях может потребоваться ответить на вопросы относительно того, что и как устанавливать. + Если используется ядро с собственной конфигурацией, то + в этом случае появится предупреждение следующего вида: + + WARNING: This system is running a "MYKERNEL" kernel, which is not a +kernel configuration distributed as part of FreeBSD 9.0-RELEASE. +This kernel will not be updated: you MUST update the kernel manually +before running "/usr/sbin/freebsd-update install" + + На этом этапе предупреждение можно проигнорировать. + На промежуточном этапе процесса обновления будет использовано + обновлённое ядро GENERIC. + После того, как все изменения были загружены, они будут применены. Этот процесс может занять определённое время, в зависимости от производительности и текущей загруженности - компьютера. Затем будет выполнено слияние конфигурационных файлов - — эта часть процесса требует от пользователя определённого + компьютера. Затем будет выполнено слияние конфигурационных + файлов. Процесс слияния требует от пользователя определённого вмешательства, так как для файла можно выполнить слияние автоматически, а можно открыть текстовый редактор для слияния вручную. Результат успешного слияния будет показан на экране. - Неудачное или пропущенное слияние вызовет преждевременное завершение - программы. Можно подготовить резервную копию каталога /etc для таких важных файлов как - master.passwd и group и + Неудачное или пропущенное слияние вызовет преждевременное + завершение программы. Можно подготовить резервную копию + каталога /etc для таких важных файлов как + master.passwd и group и выполнить их слияние вручную позднее. - На данном этапе система еще не модифицирована, и все изменения - и слияния происходят в отдельном каталоге. Теперь, когда все - изменения успешно применены, все конфигурационные файлы слиты и - кажется, что процесс должен пройти плавно, пользователь должен - установить изменения. + На данном этапе система еще не модифицирована, и все + изменения и слияния происходят в отдельном каталоге. + Теперь, когда все изменения успешно применены, все + конфигурационные файлы объединены и кажется, что процесс + должен пройти плавно, изменения могут быть установлены на + диск с помощью следующей команды: + + &prompt.root; freebsd-update install - После завершения этого процесса, изменения могут быть - установлены на диск с помощью следующей команды. + В первую очередь изменения будут применены к ядру и его + модулям. При использовании ядра с собственной конфигурацией + укажите для следующей загрузки обновлённое ядро + /boot/GENERIC с помощью + &man.nextboot.8;: - &prompt.root; freebsd-update install + &prompt.root; nextboot -k GENERIC - В первую очередь изменения будут применены к ядру и его модулям. - После этого компьютер должен быть перезагружен. Следующая команда - выполнит перезагрузку компьютера, после чего будет загружено новое - ядро: + + Перед перезагрузкой с ядром GENERIC + убедитесь, что оно содержит все необходимые драйвера для + системы для корректной загрузки и подключения к сети, если + машина обновляется удалённо. В частности, если в ядре + содержится встроенная функциональность, которая обычно + обеспечивается модулями ядра, загрузите эти драйвера с ядром + GENERIC, временно указав их как модули + в /boot/loader.conf. Рекомендуется + отключить несущественные службы, а также любые локальные и + сетевые диски до завершения процесса обновления. + + Теперь компьютер должен быть перезагружен с новым + ядром: + &prompt.root; shutdown -r now После перезагрузки нужно повторно запустить команду freebsd-update. Команда прочитает, на каком этапе она находится, и перейдёт к удалению старых объектных файлов - и совместно используемых библиотек. Чтобы перейти к этому этапу, - выполните следующую команду: + и совместно используемых библиотек. &prompt.root; freebsd-update install Количество этапов установки обновлений может быть два вместо трёх и зависит от того, были ли изменены номера версий каких-либо совместно используемых библиотек. - Теперь понадобится пересобрать и переустановить всё стороннее - программное обеспечение. Это необходимая операция, так как - установленное программное обеспечение может зависеть от библиотек, - которые были удалены в процессе смены версии операционной системы. - Для автоматизации этого процесса можно воспользоваться командой - ports-mgmt/portupgrade. - Начать можно со следующих команд: + На этом процесс завершён. Если было выполнено обновление + со сменой старшего номера версии, переустановите все порты и + пакеты в соответствии с описанием, которое предоставляет . - &prompt.root; portupgrade -f ruby -&prompt.root; rm /var/db/pkg/pkgdb.db -&prompt.root; portupgrade -f ruby18-bdb -&prompt.root; rm /var/db/pkg/pkgdb.db /usr/ports/INDEX-*.db -&prompt.root; portupgrade -af + + Собственная конфигурация ядра в &os; 9.X и более + поздних версиях - После этого завершите процесс обновления последним запуском - freebsd-update. Выполните следующую команду, - чтобы убедиться, что ничего не забыто в процессе обновления: + Перед использованием freebsd-update + убедитесь в наличии копии ядра GENERIC + в /boot/GENERIC. Если ядро с + собственной конфигурацией было собрано единожды, то в + /boot/kernel.old будет находиться ядро + GENERIC. Просто переименуйте этот + каталог в /boot/kernel. - &prompt.root; freebsd-update install + Если ядро с собственной конфигурацией было собрано более + одного раза, получите копию ядра GENERIC, + соответствующую текущей версии операционной системы. При + наличии физического доступа копию ядра + GENERIC можно установить с установочного + носителя: - Перезагрузите компьютер с новой версией &os;. На этом процесс - завершён. + &prompt.root; mount /cdrom +&prompt.root; cd /cdrom/usr/freebsd-dist +&prompt.root; tar -C/ -xvf kernel.txz boot/kernel/kernel + + Иначе, ядро GENERIC можно собрать и + установить из исходных текстов: + + &prompt.root; cd /usr/src +&prompt.root; make kernel __MAKE_CONF=/dev/null SRCCONF=/dev/null + + Чтобы такое ядро было определено как ядро + GENERIC программой + freebsd-update, в файле конфигурации + GENERIC должны отсутствовать изменения. + Также предлагается, что ядро было собрано без использования + каких-либо специальных параметров. + + Загрузка с GENERIC не требуется, + поскольку для freebsd-update достаточно + существования /boot/GENERIC. + + + + Обновление пакетов после смены старшей версии + системы + + После обновления системы со сменой младшей версии + установленные приложения, в целом, продолжают работать без + каких-либо проблем. Различные старшие версии используют + различающиеся двоичные интерфейсы приложений (Application + Binary Interface, ABI), из-за чего + перестаёт работать большинство сторонних приложений. + После обновления системы со сменой старшей версии все + установленные пакеты и порты также нуждаются в обновлении. + Пакеты можно обновить с использованием pkg + upgrade. Для обновления установленных портов + используется ports-mgmt/portmaster. + + Принудительное обновление все установленных пакетов + приведёт к их замене на последние версии из репозитория, + даже если номер версии при этом не увеличивался. Это + требуется из-за смены версии ABI при обновлении на другую + старшую версию &os;. Принудительное обновление можно + выполнить так: + + &prompt.root; pkg-static upgrade -f + + Перестроение всех установленных приложений можно + выполнить этой командой: + + &prompt.root; portmaster -af + + Эта команда будет отображать экран выбора конфигурации + для каждого приложения, в котором доступны параметры + конфигурации, с ожиданием пользовательского ввода. Чтобы + не использовать такое поведение и всегда выбирать параметры + по умолчанию, добавьте ключ в + вышеприведённую команду. + + После завершения процесса обновления программного + обеспечения закончите процесс обновления последним запуском + freebsd-update, для того чтобы убедиться, + что ничто не было пропущено в процессе обновления: + + &prompt.root; freebsd-update install + + Если в качестве временной меры использовалось ядро + GENERIC, то это подходящее время для + построения и установки нового ядра с собственной + конфигурацией в соответствии с инструкциями в . + + Перезагрузите машину с новой версией &os;. На этом + процесс обновления завершён. + - + Сравнение состояния системы - Утилита freebsd-update может быть - использована для проверки состояния установленной версии &os; - относительно известной хорошей копии. Оценивается текущая версия - системных утилит, библиотек и конфигурационных файлов. Для того, - чтобы начать сравнение, выполните следующую команду: + С помощью команды freebsd-update IDS + можно получить состояние установленной версии &os; + относительно известной доверенной копии. Эта команда + проверяет текущую версию системных утилит, библиотек и + конфигурационных файлов, и её можно использовать в качестве + встроенной системы обнаружения вторжений (Intrusion Detection + System, IDS). - &prompt.root; freebsd-update IDS >> outfile.ids - - Не смотря на то, что команда называется - IDS, это ни в коей мере не должно являться - заменой системе обнаружения вторжений, такой как security/snort. Поскольку + Эта команда не является заменой IDS, + такой как security/snort. Поскольку freebsd-update сохраняет свои данные на диске, возможность подмены становится очевидной. И хотя эта возможность может быть уменьшена при использовании настройки kern.securelevel, а также используя для записи данных freebsd-update файловую систему, которая в остальное время смонтирована только на чтение, лучшим решением будет сравнить систему относительно эталона на физически защищенном носителе, таком как DVD или внешний USB диск - с включённой защитой от записи. + с включённой защитой от записи. - Теперь запустится проверка системы, в результате которой будет - выведен список файлов с их контрольными суммами в &man.sha256.1; с - известным значением для файла из релиза и значением для текущего - в системе. Результат выводится слишком быстро для наглядного - сравнения и вскоре заполняет консольный буфер. По этой причине в - данном примере вывод перенаправлен в файл - outfile.ids. + Для того, чтобы начать сравнение, укажите файл для + сохранения результатов: - Эти строки также очень длинные, но зато такой формат вывода - удобен для разбора. Так, для получения списка всех отличающихся - от релиза файлов достаточно выполнить такую команду: + &prompt.root; freebsd-update IDS >> outfile.ids + Запустится проверка системы, результат которой будет + записан в указанный файл в виде списка файлов вместе с их + контрольными суммами в формате SHA256 + — для известных файлов из релиза и текущих в + системе. + + Строки в списке чрезмерно длинные, но зато такой формат + вывода удобен для разбора. Так, для получения списка всех + отличающихся от релиза файлов достаточно выполнить такую + команду: + &prompt.root; cat outfile.ids | awk '{ print $1 }' | more /etc/master.passwd /etc/motd /etc/passwd /etc/pf.conf Вывод специально обрезан, на самом деле файлов намного больше. Некоторые из них изменены в ходе нормальной работы: так, файл /etc/passwd был изменён после заведения - пользователей в системе. В некоторых случаях могут быть и другие - файлы, такие как модули ядра, которые могли измениться вследствие + пользователей в системе. Модули ядра могли измениться вследствие обновления через freebsd-update. Для исключения из проверки конкретных файлов и каталогов укажите их в качестве значения параметра IDSIgnorePaths в /etc/freebsd-update.conf. - - Эта система может использоваться как часть более сложной - процедуры обновления, в отличие от описанного выше способа. - - Portsnap: средство обновления Коллекции Портов - - TomRhodesПредоставил - - - ColinPercivalНа основе заметок, которые предоставил - - - + + Обновление документации - обновление и смена версии - Portsnap + обновление и смена версии + + + + документация обновление и смена версии - Для обновления Коллекции Портов в базовую поставку &os; - включена утилита &man.portsnap.8;. Во время её выполнения - устанавливается соединение с удалённым сервером, проверяется - правильность ключа и загружается новая копия Коллекции Портов. - Ключ используется для проверки целостности загруженных файлов - для исключения возможности подмены на этапе передачи файлов. - Для получения последней версии файлов Коллекции Портов выполните - следующую команду: + Документация является неотъемлемой частью операционной + системы &os;. И хотя актуальная версия документации &os; всегда + доступна на сайте &os; (http://www.freebsd.org/doc/), + может быть удобно иметь под рукой актуальную локальную копию + сайта &os;, руководств, FAQ и статей. - &prompt.root; portsnap fetch -Looking up portsnap.FreeBSD.org mirrors... 3 mirrors found. -Fetching snapshot tag from portsnap1.FreeBSD.org... done. -Fetching snapshot metadata... done. -Updating from Wed Aug 6 18:00:22 EDT 2008 to Sat Aug 30 20:24:11 EDT 2008. -Fetching 3 metadata patches.. done. -Applying metadata patches... done. -Fetching 3 metadata files... done. -Fetching 90 patches.....10....20....30....40....50....60....70....80....90. done. -Applying patches... done. -Fetching 133 new ports or files... done. + В этом разделе описывается, как использовать исходный текст + или Коллекцию Портов &os; для организации актуальной локальной + копии документации &os;. - В данном примере показано, что &man.portsnap.8; обнаружила - и верифицировала несколько патчей относительно текущего содержимого - портов. Здесь также видно, что утилита уже запускалась ранее, - иначе при первом запуске была бы загружена вся коллекция. + За информацией о редактировании и отправке изменений + для документации обращайтесь к &os; Documentation Project + Primer for New Contributors (http://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/). - После того как &man.portsnap.8; успешно завершила операцию - fetch, Коллекция Портов и сопутствующие патчи - находятся на локальной системе и прошли проверку целостности. - Обновлённые файлы можно установить командой: + + Обновление документации из исходного кода - &prompt.root; portsnap extract -/usr/ports/.cvsignore -/usr/ports/CHANGES -/usr/ports/COPYRIGHT -/usr/ports/GIDs -/usr/ports/KNOBS -/usr/ports/LEGAL -/usr/ports/MOVED -/usr/ports/Makefile -/usr/ports/Mk/bsd.apache.mk -/usr/ports/Mk/bsd.autotools.mk -/usr/ports/Mk/bsd.cmake.mk -... + Для перестроения документации &os; из исходного текста + требуется набор инструментов, который не является частью + основной системы &os;. Требуемые инструменты, включая + svn, можно установить из пакета + или порта textproc/docproj, разработанного + в рамках проекта документации &os;. - На этом процесс завершён, и теперь приложения можно - установить или обновить с использованием Коллекции Портов. + После установки используйте svn + для получения копии исходных текстов документации: - Для последовательного запуска обоих процессов выполните - следующую команду: + &prompt.root; svn checkout https://svn.FreeBSD.org/doc/head /usr/doc - &prompt.root; portsnap fetch update - + Первоначальная загрузка исходных текстов документации + может занять некоторое время. Дайте ей завершиться. - - Использование ветви разработки - -CURRENT - -STABLE + Последующие обновления можно получить, выполнив: - Во FreeBSD имеется две ветки разработки: &os.current; и &os.stable;. - Этот раздел описывает каждую из них и объясняет, как синхронизировать - вашу систему с любой из веток. Сначала будет обсуждаться ветка - &os.current;, затем &os.stable;. + &prompt.root; svn update /usr/doc - - Как следовать текущим разработкам во &os; + После того как в /usr/doc была + загружена актуальная копия исходных текстов, всё готово + для обновления установленной документации. - Пока вы читаете этот текст, помните, что &os.current; является - передовым краем работ над &os;. Предполагается, что - пользователи &os.current; технически более грамотны и могут решать - проблемы с системой самостоятельно. Если вы являетесь во &os; - новичком, вам лучше сначала дважды подумать, прежде чем - её устанавливать. + Полное обновление всех доступных языковых версий можно + выполнить, набрав команду: - - Что такое &os.current;? - snapshot + &prompt.root; cd /usr/doc +&prompt.root; make install clean - &os.current; является последними рабочими версиями исходных - текстов &os;. Сюда включаются неоконченные работы, экспериментальные - изменения и промежуточные механизмы, которые могут присутствовать, а - могут и отсутствовать в следующем официальном релизе программного - обеспечения. Хотя многие из разработчиков &os; выполняют компиляцию - из исходных текстов &os.current; ежедневно, случаются периоды, когда - исходные тексты заведомо не могут быть откомпилированы. Такие - проблемы обычно решаются так быстро, как это возможно, но всё-таки - момент, когда вы загрузили исходные тексты &os.current;, может - повлиять на то, содержат они мину замедленного действия или очень - нужную функциональность! - + Для обновления только указанной языковой версии команду + make можно запустить в соответствующем + подкаталоге /usr/doc: - - Кому нужна &os.current;? + &prompt.root; cd /usr/doc/en_US.ISO8859-1 +&prompt.root; make install clean - &os.current; предназначается трём основным заинтересованным - группам: + Альтернативный способ обновления документации заключается + в запуске следующей команды из из /usr/doc + или подкаталога с желаемой языковой версией: - - - Участники проекта &os;, активно работающие над - некоторой частью дерева исходных текстов и для кого работа в - current является абсолютной - необходимостью. - + &prompt.root; make update - - Участники проект &os;, которые являются - активными тестерами. Они тратят свое время на - исправление проблем для того, чтобы &os.current; оставалась, - насколько это возможно, нормально работающей системой. Есть - также люди, которые вносят важные предложения по изменениям и - общему направлению развития &os; и присылают свои патчи, - реализующие эти изменения. - + Используемый при установке формат можно указать через + FORMATS: - - Те, кто просто хотят быть в курсе всех изменений или - используют текущие исходные тексты для ознакомительных целей (к - примеру, для чтения, но не для - использования). Такие люди также иногда высказывают замечания - или предоставляют код. - - - + &prompt.root; cd /usr/doc +&prompt.root; make FORMATS='html html-split' install clean - - Чем &os.current; <emphasis>не</emphasis> является? + Для упрощения процесса частичного обновления документации + и построения только нужных переводов имеется несколько + параметров. Их можно задать как на общесистемном уровне, + указав в /etc/make.conf, так и + непосредственно в команде make. - - - Быстрым способом получить предварительную версию, в - случае, если вы услышали, что здесь появилась некая крутая - возможность, и вы хотите быть первым в вашем микрорайоне, у - кого она есть. Здесь быть первым из тех, кто имеет это - программное обеспечение означает также быть первым из тех, кто - столкнулся с ошибками в нём. - + Данные параметры включают: - - Быстрым способом получения исправлений. Любая версия - &os.current; является в равной мере как источником исправлений - существующих ошибок, так и источником появления новых. - + + + DOC_LANG - Официально поддерживаемой каким бы то ни было - способом. Мы прилагаем все усилия, чтобы помочь тем, кто - изначально принадлежит одной из трех признанных - групп пользователей &os.current;, но у нас просто нет - времени на техническую поддержку. Это не потому, что - мы гадкие и злые люди, которые ни за что не будут помогать другим - (если бы это было так, мы бы не создали &os;). Мы просто не в - силах отвечать на сотни сообщений в день и - работать над FreeBSD! Если бы стоял выбор между тем, отвечать ли - на множество вопросов об экспериментально коде или продолжать - работу над совершенствованием &os;, большинство разработчиков - проголосовало бы за последнее. + Перечень языков и кодировок для построения и + установки, например, + en_US.ISO8859-1 для англоязычной + документации. - - + - - Использование &os.current; + + FORMATS - - Подпишитесь на списки рассылки &a.current.name;-CURRENTиспользование и - &a.svn-src-head.name;. Это не просто хорошая идея, это - необходимость. Если вы не являетесь - участником списка рассылки &a.current.name;, - то вы не увидите замечаний, - высказываемых о текущем состоянии системы и в итоге можете - столкнуться со множеством проблем, которые уже были найдены и - решены другими. Ещё хуже, если вы пропустите важные сообщения, - касающиеся жизнеспособности вашей системы. + Единый формат или набор форматов для построения. + На данный момент поддерживаются html, + html-split, txt, + ps и pdf. + + - Список рассылки &a.svn-src-head.name; позволит вам для каждого - изменения увидеть соответствующую запись в журнале коммитов, - а они порой содержат относящуюся к делу - информацию о возможных побочных эффектах. + + DOCDIR - Чтобы подписаться на эти и другие доступные списки - рассылки, перейдите по ссылке &a.mailman.lists.link; и щёлкните - на списке, к которому вы хотите подключиться. Инструкции по - дальнейшим действиям размещены там же. Если вы заинтересованы - в отслеживании изменений всего дерева исходных текстов, то мы - рекомендуем вам подписаться на &a.svn-src-all.name;. + + Путь для установки документации. По умолчанию + /usr/share/doc. + + - - Загрузите исходные тексты с зеркального сайта &os;. Вы можете - сделать это одним из следующих двух способов: + Для получения других переменных make, + также работающих во &os; в качестве общесистемных, обратитесь + к &man.make.conf.5;. + - - - При помощи программы cvsupcvsup - с sup-файлом - standard-supfile, который можно найти в - каталоге /usr/share/examples/cvsup. Это - наиболее - рекомендуемый метод, так как он позволяет вам загрузить набор - исходных текстов один раз полностью, а затем загружать только - произошедшие изменения. Многие запускают - cvsup при помощи программы - croncron и получают самые свежие исходные - тексты автоматически. Измените примерный файл - supfile выше и отконфигурируйте cvsup-CURRENTСинхронизация при помощи CVSup для вашего окружения. - - Примерный файл standard-supfile - предназначен для отслеживания специальной ветки - безопасности &os;, а не &os.current;. Вам нужно - открыть этот файл на редактирование и заменить в нём - строку: + + + Обновление документации из портов - *default release=cvs tag=RELENG_X_Y + + + + Marc + Fonvieille + + Основную работу выполнил + + + - на следующую: + + обновление и смена версии + - *default release=cvs tag=. + + пакет документации + обновление и смена версии + - Для получения подробной информации по использованию - тегов обратитесь к разделу Руководства Теги CVS. - - + В предыдущем разделе был представлен метод обновления + документации &os; из исходных текстов. В этом разделе + описывается альтернативный метод с использованием Коллекции + Портов, который позволяет: - - - -CURRENT - Синхронизация при помощи CTM - + + + Установить предварительно собранный пакет документации + без необходимости локального построения чего-либо или + установки инструментария документации. + - При помощи CTM. Если у вас очень - плохое подключение (дорогое или предоставляющее доступ только - к электронной почте), то CTM - можно рассматривать как вариант. Однако в нем много - "подводных камней", и его использование может - привести к появлению неправильных файлов. Это привело к - тому, что этот способ используется редко, что, в свою - очередь, увеличивает шанс появления периодов его - неработы. Мы рекомендуем использовать CVSup всем, чья скорость - подключения равна 9600 bps и выше. - - - + + Выполнить построение исходных текстов документации + через инфраструктуру портов, что несколько упрощает этапы + загрузки и построения. + + - - Если вам нужны исходные тексты для компиляции и запуска, а - не просто для ознакомления, то загружайте исходные тексты - ветки &os.current; полностью, а не отдельные - ее части. Причиной является то, что многие части исходных - текстов зависят от других обновлений где-то еще, и попытка - компиляции лишь некоторой части программ в этом случае - гарантированно вызовет проблемы. + Данный метод обновления документации &os; предоставляется + портами и пакетами документации, которые ежемесячно + обновляет &a.doceng;. Они перечислены в Коллекции Портов &os; + в категории docs (http://www.freshports.org/docs/). - Перед тем, как компилировать &os.current;-CURRENTкомпиляция, внимательно - прочтите файл Makefile в каталоге - /usr/src. В процессе обновления вы - по крайней мере раз должны пройти через установку нового ядра и перестроение всех - компонентов системы. Чтение списка рассылки &a.current.name; и - /usr/src/UPDATING позволит вам быть в курсе - всех процедур, которые иногда бывают необходимы в процессе - работы над следующим релизом. - + Порты документации организованы следующим образом: - - Будьте активным подписчиком! Если вы работаете с - &os.current;, мы хотим знать, что вы думаете о ней, особенно - если у вас есть соображения по ее улучшению или исправлению - ошибок. Пожелания, к которым прилагается код, всегда - принимаются с большим энтузиазмом! - - - - + + + Пакет или порт misc/freebsd-doc-en + устанавливает всю англоязычную документацию. + - - Работа с веткой stable во &os; + + Метапакет или порт + misc/freebsd-doc-all устанавливает всю + документацию на всех доступных языках. + - - Что такое &os.stable;? - -STABLE + + Имеются пакеты и порты для каждого перевода, например, + misc/freebsd-doc-hu для венгерской + документации. + + - &os.stable; является нашей веткой разработки, из которой делаются - основные релизы. Изменения в этой ветке происходят с разной - скоростью, и при этом предполагается, что сначала они были выполнены - для &os.current; в целях тестирования. Однако эта ветка - остаётся веткой для разработки, а это значит, - что в любой момент времени исходные тексты &os.stable; могут - оказаться неприменимы для некоторой задачи. Это просто ещё одна - ветка при разработке, а не ресурс для конечных пользователей. - + При использовании двоичных пакетов документация &os; будет + установлена во всех доступных форматах для данного языка. + Например, следующая команда установит последнюю версию пакета + венгерской документации: - - Кому нужна &os.stable;? + &prompt.root; pkg install hu-freebsd-doc - Если вы заинтересованы в отслеживании процесса разработки FreeBSD - или хотите принять в нём участие, особенно в той мере, насколько это - касается выпуска следующего релиза FreeBSD с точкой, то - вам необходимо отслеживать &os.stable;. + + Для пакетов используется другая схема наименования, + которая отличается от названия соответствующего порта: + lang-freebsd-doc, + где lang соответствует + сокращённому языковому коду, такому как + hu для венгерского или + zh_cn для упрощённого китайского. + - Хотя правда то, что исправления, касающиеся безопасности, также - делаются и в ветке &os.stable;, вам не нужно - для этого отслеживать &os.stable;. Каждый бюллетень по безопасности - FreeBSD описывает, как решить проблему для тех релизов, которых он - касается - - Это не совсем так. Мы не можем поддерживать старые релизы - FreeBSD бесконечно долго, хотя мы поддерживаем их многие годы. - Полное описание текущей политики безопасности относительно - старых релизов FreeBSD можно найти по адресу - http://www.FreeBSD.org/ru/security/. - - , а отслеживание ветки разработки в полном объёме только ради - исправлений пробелов в безопасности приводит к появлению большого - количества дополнительных ненужных изменений. + Чтобы указать используемый формат документации, для этого + вместо установки готового пакета нужно собрать порт + самостоятельно. Ниже приводится пример построения и установки + английской документации: - Хотя мы прилагаем все усилия, чтобы ветка &os.stable; всегда - компилировалась и работала, этого нельзя гарантировать. Кроме того, - несмотря на то, что перед включением в &os.stable;, код - разрабатывается в &os.current;, гораздо большее количество людей - работают с &os.stable;, чем с &os.current;. Поэтому неудивительно, - что в &os.stable; иногда - обнаруживаются ошибки и всплывают непредвиденные ситуации, которые не - проявляли себя в &os.current;. + &prompt.root; cd /usr/ports/misc/freebsd-doc-en +&prompt.root; make install clean - По этим причинам мы не рекомендуем слепо - отслеживать &os.stable;, и, что особенно важно, вы не должны - обновлять какие-либо сервера, находящиеся в активной эксплуатации, до - &os.stable; без предварительного тщательного тестирования кода в - вашей среде разработки. + В порте имеется меню конфигурации, в котором можно указать + нужный формат. По умолчанию выбирается + HTML с разделителями, такой как на http://www.FreeBSD.org, + а также PDF. - Если у вас нет возможности сделать это, то мы рекомендуем - работать с самой последним релизом &os; и использовать механизм - обновления бинарных файлов для перехода от релиза к релизу. - + Иначе, при построении порта документации можно указать + параметры make, которые включают в + себя: - - Использование &os.stable; + + + WITH_HTML - - Подпишитесь на список рассылки &a.stable.name;-STABLEиспользование. Это позволит - вам узнавать о зависимостях процесса компиляции, - которые могут появиться в ветке &os.stable; или - любых других проблемах, требующих особого внимания. В этом - списке рассылки разработчики также делают объявления о - спорных исправлениях или добавлениях, - давая пользователям возможность высказать свое мнение о - возможных тонких моментах. + Документ в формате HTML на одной странице. + Сформированная документация сохраняется в файле + article.html или + book.html. + + - Присоединяйтесь к соответствующему списку рассылки - SVN для той ветви, которую вы - используете. Например, если вы используете ветвь 7-STABLE, то - присоединяйтесь к списку &a.svn-src-stable-7.name;. Это - позволит вам просматривать записи в журнале коммитов для - каждого изменения, а они порой содержат относящуюся к делу - информацию о возможных побочных эффектах. + + WITH_PDF - Чтобы подключиться к этим и другим доступным спискам - рассылки, перейдите по ссылке &a.mailman.lists.link; и щёлкните - на списке, к которому вы хотите подключиться. Инструкции по - дальнейшим действиям размещены там же. Если вы заинтересованы - в отслеживании изменений всего дерева исходных текстов, то мы - рекомендуем вам подписаться на &a.svn-src-all.name;. + + Сформированная документация сохраняется в файле + article.pdf или + book.pdf. + + + DOCBASE + - Если вы собираетесь установить новую систему, и хотите, - чтобы она соответствовала ежемесячным стандартным сборкам - ветви &os.stable;, обратитесь к - странице снэпшотов - . Либо вы - можете установить самый последний релиз &os.stable;, загрузив его - с зеркалирующих сайтов, а затем - следовать инструкциям ниже по обновлению исходных текстов вашей - системы до самой последней версии &os.stable;. + Указывает место размещения документации. + По умолчанию + /usr/local/share/doc/freebsd. + + + - Если вы уже работаете с предыдущим релизом &os; и хотите - обновить его из исходных текстов, то вы можете легко это - сделать с зеркального сайта &os;. - Это можно сделать одним из двух способов: + В примере ниже демонстрируется использование переменных + для установки венгерской документации в PDF + в указанный каталог: - - - При помощи программы cvsupcvsup - с sup-файлом - stable-supfile из каталога - /usr/share/examples/cvsup. - Это наиболее рекомендуемый - метод, так как он позволяет вам загрузить набор исходных - текстов один раз полностью, а затем загружать только - произошедшие изменения. Многие запускают - cvsup при помощи программы - croncron и получают самые свежие исходные - тексты автоматически. Измените примерный файл - supfile выше и отконфигурируйте cvsup-STABLEСинхронизация при помощи CVSup для вашего окружения. - + &prompt.root; cd /usr/ports/misc/freebsd-doc-hu +&prompt.root; make -DWITH_PDF DOCBASE=share/doc/freebsd/hu install clean - - При помощи CTM-STABLEсинхронизация при помощи CTM. Если у вас нет - быстрого и недорогого подключения к Интернет, то это как раз - тот метод, которым вы должны воспользоваться. - - - + Пакеты или порты документации обновляются согласно + инструкциям в . Например, следующая + команда выполняет обновление установленной документации на + венгерском языке с помощью + ports-mgmt/portmaster в режиме + использования только готовых пакетов: - - Итак, если вам нужен быстрый доступ к - исходным текстам и нагрузка на каналы связи для вас не - проблема, то используйте cvsup - или ftp. В противном случае воспользуйтесь - CTM. - - - - Перед тем, как компилировать &os.stable;-STABLEкомпиляция, внимательно - прочтите файл Makefile в каталоге - /usr/src. В процессе обновления вы - по крайней мере раз должны пройти через установку нового ядра и перестроение всех - компонентов системы. Чтение списка рассылки &a.stable.name; и - /usr/src/UPDATING - позволит вам быть в курсе всех процедур, - которые иногда бывают необходимы при переходе к следующему - релизу. - - - + &prompt.root; portmaster -PP hu-freebsd-doc - - Синхронизация ваших исходных текстов + + Использование ветви разработки - Имеются различные способы использования Интернет (или почтового) - подключения для того, чтобы иметь самые последние версии исходных - текстов любого проекта &os;, в зависимости от - того, чем вы интересуетесь. Основной сервис, который мы предлагаем, - это Анонимный CVS, CVSup и CTM. + -CURRENT + -STABLE - - Хотя имеется возможностью обновлять только часть дерева исходных - текстов, процедурой, которую мы настоятельно советуем, является обновление всего - дерева и перекомпиляция пользовательских программ (то есть тех, - которые работают в пространстве имен пользователя, например те, что - находятся в каталогах /bin и - /sbin) и ядра. Обновление только части дерева - исходных текстов, только текстов ядра или только текстов - пользовательских программ часто приводит к возникновению проблем. Эти - проблемы могут варьироваться от ошибок компиляции до аварийных - остановов системы или порчи данных. - + Во &os; имеется две ветки разработки: &os.current; и + &os.stable;. - - CVS + В этом разделе даётся объяснение для каждой из них и их + предназначение, а также рассказывается, как синхронизировать + систему с любой из этих веток. - анонимный - + + Использование &os.current; - Анонимный CVS и - CVSup используют модель - pull обновления исходных текстов. В случае - CVSup пользователь (или скрипт программы - cron) вызывают cvsup, а она - работает с каким-либо сервером cvsupd, чтобы - выполнить обновление ваших - файлов. Обновления, которые вы получаете, актуальны с точностью до - минуты, и вы получаете их тогда и только тогда, когда сами захотите. - Вы можете с легкостью ограничить обновления конкретными файлами - или каталогами, которые представляют для вас интерес. Обновления - создаются на лету сервером согласно тому, что у вас есть и что вы - хотите иметь. Анонимный CVS гораздо проще, - чем CVSup в том смысле, что он представляет - собой всего лишь расширение - CVS, позволяющее загрузить изменения - непосредственно с удаленного хранилища CVS. - CVSup может делать это гораздо более - эффективно, однако анонимным CVS легче - пользоваться. + &os.current; является передним краем + разработки &os; и предназначена для пользователей с высокой + технической грамотностью. Менее продвинутым пользователям, + также желающим отслеживать ветку разработки, следует + использовать &os.stable;. - - CTM - - CTM, с другой стороны, не сравнивает - последовательно исходные тексты, имеющиеся у вас, с теми, что - находятся в главном архиве и вообще ни коим образом не касается наших - серверов. Вместо этого несколько раз в день на главной машине CTM - запускается скрипт, находящий изменения в файлах с момента - своего предыдущего запуска; все замеченные изменения сжимаются, - помечаются последовательным номером и кодируются для передачи по - электронной почте (в форме печатаемых символов ASCII). - После получения эти дельта-файлы CTM могут быть - переданы утилите &man.ctm.rmail.1;, которая осуществит автоматическое - декодирование, проверку и применение изменений к пользовательской - копии исходных текстов. Этот процесс гораздо более эффективен, чем - CVSup, и требует меньше ресурсов нашего - сервера, так как он сделан по модели push, а не - pull. + &os.current; обозначает последнюю версию исходных текстов + &os; и включает в себя незавершённые работы, экспериментальные + изменения и переходные механизмы, которые могут отсутствовать + в следующем официальном релизе. Хотя многие разработчики + &os; выполняют компиляцию исходных текстов &os.current; + ежедневно, бывают периоды, когда исходные тексты могут не + компилироваться. Обычно такие проблемы решаются сразу по мере + возможности, но всё же выбор точки синхронизации исходных + текстов является определяющим фактором, содержит ли + &os.current; новую функциональность или же мину замедленного + действия. - Несомненно, есть и минусы. Если вы случайно уничтожили - часть вашего архива, то CVSup обнаружит - и загрузит поврежденную часть. CTM этого - делать не будет, и если вы уничтожили какую-то часть вашего дерева - исходных текстов (и у вас нет архивной копии), то вам нужно будет - начать с самого начала (с последнего базового - дельта-файла), перестроив всё с помощью - CTM, или, используя анонимный - CVS, просто удалить повреждённую часть и - пересинхронизироваться. - + &os.current; предназначена для трёх основных групп: - - Пересборка <quote>world</quote> + + + Члены сообщества &os;, активно работающие над + некоторой частью дерева исходных текстов. + - - Пересборка world - - После того, как вы синхронизировали ваше локальное дерево - исходных текстов с некоторой версией &os; - (&os.stable;, &os.current; и так далее), - то можете использовать эти исходные тексты для перестроения - системы. + + Члены сообщества &os;, которые являются активными + тестерами. Они тратят свое время на исправление проблем, + вносят важные предложения по изменениям и общему развитию + &os;, присылают патчи. + - - Создайте резервную копию + + Пользователи, которые хотят быть в курсе изменений, + используют текущие исходные тексты для ознакомительных + целей либо же иногда высказывают замечания + или предоставляют собственный код. + + - Невозможно переоценить важность создания резервной - копии вашей системы до того, как вы будете - это делать. Хотя перестроение системы (пока вы следуете этим - инструкциям) является простой задачей, вы всегда можете допустить - ошибку, или ошибка может оказаться в исходных текстах, что может - привести к тому, что система перестанет загружаться. + &os.current; не должна использоваться + в качестве быстрого способа получить новые возможности, не + дожидаясь выпуска следующей версии, поскольку предварительная + версия не является полностью проверенной и скорее всего + содержит ошибки. &os.current; не является быстрым способом + получения исправлений, поскольку любое изменение является в + равной мере источником исправления существующих ошибок и + появления новых. &os.current; не является официально + поддерживаемой каким бы то ни было способом. - Обязательно сделайте резервную копию. И держите под рукой - аварийную (fixit) дискету или загрузочный компакт диск. Может быть, - вам никогда не приходилось ими - пользоваться, но, постучав по дереву, всегда лучше подготовиться, чем - потом сожалеть. - + + -CURRENT + использование + - - Подпишитесь на соответствующий список рассылки + Чтобы отслеживать изменения во &os.current;: - список рассылки - Ветки &os.stable; и &os.current; кода по природе своей являются - изменяющимися. В разработке &os; участвуют - люди, и время от времени случаются ошибки. + + + Подпишитесь на списки рассылки &a.current.name; и + &a.svn-src-head.name;. Это + необходимо для того, чтобы получать + сообщения и важные бюллетени относительно текущего + состояния &os.current;. - Иногда эти ошибки достаточно безобидны и приводят к выводу - нового диагностического сообщения. Бывает, что изменение оказывается - катастрофическим, и система не может загрузиться или разрушаются - файловые системы (или что-нибудь ещё хуже). + Список рассылки &a.svn-src-head.name; содержит записи + из журнала коммитов по каждому изменению, а также + сопутствующую информацию о возможных побочных + эффектах. - Если возникают подобные проблемы, в соответствующем списке - рассылки публикуется сообщение heads up, в котором - описывается природа проблемы и затрагиваемые системы. Когда проблема - решается, публикуется сообщение all clear. + Чтобы подписаться на эти списки рассылки, перейдите + по ссылке &a.mailman.lists.link;, щёлкните на нужном + списке и следуйте дальнейшим инструкциям. Для того чтобы + отслеживать изменения всего дерева исходных текстов, а не + только &os.current;, подпишитесь на + &a.svn-src-all.name;. + - Если вы пытаетесь отслеживать &os.stable; или &os.current; и не - читаете &a.stable; или &a.current; соответственно, то - вы напрашиваетесь на неприятности. - + + Загрузите исходные тексты &os.current;. Обычно для + этого используется svn, с + помощью которого можно загрузить исходные тексты -CURRENT + из ветки head с одного из зеркал + Subversion, перечисленных в . - - Не используйте <command>make world</command> + Пользователи с очень медленным или ограниченным + подключением могут рассматривать использование CTM, + который описывается в , однако + этот способ является менее надёжным по сравнению с + рекомендуемым способом синхронизации исходных текстов + посредством svn. + - Множество старой документации рекомендует использование - make world. При этом пропускаются многие - важные шаги, и использование этой команды возможно лишь в том - случае, если вы точно знаете, что делаете. Почти во всех - обстоятельствах make world это неправильный - способ, вместо него необходимо использовать описанную здесь - процедуру. - + + Вследствие больших размеров репозитория некоторые + пользователи для ознакомления или изготовления патчей + выбирают частичную загрузку. Тем не менее, для компиляции + операционной системы из исходных текстов требуется + загрузить &os.current; полностью, + а не только лишь выбранные части. - - Канонический способ обновления вашей системы + Перед началом компиляции &os.current; + + -CURRENT + компиляция + внимательно прочтите файл + /usr/src/Makefile и следуйте + инструкциям в . &a.current; и + /usr/src/UPDATING позволят быть в + курсе прочих процедур, которые иногда бывают необходимы в + процессе перехода к следующему релизу. + - Для обновления вашей системы вы должны прочесть - /usr/src/UPDATING для выяснения шагов, которые - нужно предпринять перед построением системы из вашей версии исходных - текстов, а затем выполнить следующую последовательность - действий: + + Будьте активным участником! Пользователям + &os.current; предлагается высказывать свои соображения по + улучшению или исправлению ошибок. Предложения, к которым + прилагается код, всегда приветствуются! + + + - &prompt.root; cd /usr/src -&prompt.root; make buildworld -&prompt.root; make buildkernel -&prompt.root; make installkernel -&prompt.root; shutdown -r now + + Использование &os.stable; - - Есть несколько редких случаев, когда перед выполнением - buildworld необходимо дополнительно - запустить mergemaster -p. Они описаны в файле - UPDATING. В общем случае вы можете без ущерба - пропустить этот шаг, если не выполняете обновление с одной большой - версии &os; на другую. - + &os.stable; является веткой разработки, из которой + выпускаются основные релизы. Изменения в этой ветке + происходят с меньшей скоростью и в предположении, что они + сперва были проверены во &os.current;. При этом она + остаётся веткой разработки, и в любой + момент времени исходные тексты &os.stable; могут оказаться + не готовы для обычного использования. Это просто другая + ветка разработки, не предназначенная для конечных + пользователей. Пользователям, у которых нет возможности + заниматься тестированием, следует использовать самый + последний выпуск &os;. - После успешного выполнения installkernel - вам необходимо загрузить систему в однопользовательском режиме (то - есть посредством команды boot -s, заданной в - приглашении загрузчика). После этого выполните: + Тем, кто заинтересован процессом разработки &os; или + желает поучаствовать, особенно поскольку от этого зависит + следующий релиз &os;, стоит отслеживать &os.stable;. - &prompt.root; mount -a -t ufs -&prompt.root; mergemaster -p -&prompt.root; cd /usr/src -&prompt.root; make installworld -&prompt.root; mergemaster -&prompt.root; reboot + Хотя ветка &os.stable; должна всегда компилироваться и + работать, это невозможно гарантировать. Поскольку гораздо + больше людей работает с &os.stable;, неудивительно, что в + &os.stable; иногда обнаруживаются ошибки и всплывают + непредвиденные ситуации, которые не проявляли себя в + &os.current;. По этим причинам не рекомендуется слепо + использовать &os.stable;. Особенно важно + не обновлять какие-либо сервера, + находящиеся в эксплуатации, до &os.stable; без тщательного + тестирования кода в среде разработки. - - Прочтите более полное описание + Чтобы отслеживать изменения во &os.stable;: - Описанная выше последовательность является только краткой - выжимкой для того, чтобы помочь вам начать. Вы должны всё же - прочесть последующие разделы для полного понимания каждого шага, - особенно если собираетесь использовать собственную конфигурацию - ядра. - - + + -STABLE + использование + + + + Подпишитесь на список рассылки &a.stable.name;, чтобы + быть в курсе о зависимостях процесса компиляции, которые + могут появиться во &os.stable; или любых других проблемах, + требующих особого внимания. Также в этом списке рассылки + разработчики делают объявления о спорных исправлениях или + добавлениях, давая пользователям возможность высказать + свое мнение о возможных тонких моментах. - - Прочтите <filename>/usr/src/UPDATING</filename> + Подпишитесь на список рассылки + svn, соответствующий + используемой ветви. Например, при использовании 9-STABLE + следует подписаться на &a.svn-src-stable-9.name;. Этот + список рассылки содержит записи из журнала коммитов по + каждому изменению, а также сопутствующую информацию о + возможных побочных эффектах. - Перед тем, как делать что-либо, прочтите - /usr/src/UPDATING (или соответствующий файл - в вашей копии исходных текстов). В этом файле - содержится важная информация о проблемах, с которыми вы можете - столкнуться, или указан порядок, в котором вы должны запускать - определенные команды. Если в файле UPDATING - написано нечто, противоречащее тому, что вы здесь читаете, то - нужно следовать указаниям в UPDATING. + Чтобы подписаться на эти списки рассылки, перейдите + по ссылке &a.mailman.lists.link;, щёлкните на нужном + списке, и следуйте дальнейшим инструкциям. Для того чтобы + отслеживать изменения всего дерева исходных текстов, + подпишитесь на &a.svn-src-all.name;. + - - Чтение UPDATING не заменит подписки на - соответствующий список рассылки, как это и описано выше. Эти два - условия являются дополняющими, а не взаимоисключающими друг - друга. - + + Чтобы установить новую систему &os.stable;, установите + самый последний релиз &os.stable;, загрузив его с зеркалирующих сайтов &os; или + используйте ежемесячную стандартную сборку &os.stable;. + Обратитесь к www.freebsd.org/snapshots + для получения дополнительной информации о снэпшотах. + + Чтобы скомпилировать новую или обновить существующую + систему &os; до &os.stable;, используйте + svn + + Subversion + для загрузки исходных текстов нужной ветки. + Имена веток вида stable/9 перечислены + на странице www.freebsd.org/releng. + При отсутствии надёжного Интернет-соединения можно + воспользоваться CTM (). + + + + Перед началом компиляции или обновления до &os.stable; + + -STABLE + компиляция + внимательно прочтите файл + /usr/src/Makefile и следуйте + инструкциям в . &a.stable; и + /usr/src/UPDATING позволят быть в + курсе прочих процедур, которые иногда бывают необходимы + в процессе перехода к следующему релизу. + + + - - Проверьте содержимое <filename>/etc/make.conf</filename> - - make.conf - + + Синхронизация исходных текстов - Просмотрите файлы /usr/share/examples/etc/make.conf - и /etc/make.conf. Первый содержит некоторые - предопределенные по умолчанию значения – большинство из них - закомментировано. Чтобы воспользоваться ими при перестроении системы - из исходных текстов, добавьте их в файл - /etc/make.conf. Имейте в виду, что все, - добавляемое вами в /etc/make.conf, используется - также каждый раз при запуске команды make, так что - полезно задать здесь значения, подходящие вашей системе. + Имеются различные способы синхронизации с исходными + текстами &os;. В этом разделе сравниваются основные из них, + Subversion и + CTM. - Вероятно стоит скопировать строки - CFLAGS и NO_PROFILE, - расположенные в - /usr/share/examples/etc/make.conf, в файл - /etc/make.conf и раскомментировать их. + + Хотя возможно частичное обновление дерева исходных + текстов, единственной поддерживаемой процедурой обновления + является обновление всего дерева и перекомпиляция всех + программ, работающих в контексте пользователя, например тех, + что находятся в каталогах /bin и + /sbin, а также исходных текстов ядра. + Обновление только части дерева исходных текстов, только ядра + или только программ часто приводит к возникновению проблем от + ошибок компиляции до аварийных остановов системы или потери + данных. + - Посмотрите на другие определения (COPTFLAGS, - NOPORTDOCS и так далее) и решите, нужны ли они - вам. - + + Subversion + - - Обновите файлы в каталоге <filename>/etc</filename> + Subversion для обновления + исходных текстов использует модель pull. + Пользователь или сценарий cron запускают + программу svn, которая обновляет локальную + версию исходных текстов. Subversion + является предпочтительным способом обновления локального дерева + исходных текстов, поскольку обновления являются актуальными с + точностью до минуты и пользователь управляет временем их + загрузки. Загрузку определённых файлов и каталогов легко + ограничить, а запрашиваемые обновления формируются на лету на + стороне сервера. О том, как актуализировать исходные тексты с + использованием Subversion, описано в + . - Каталог /etc содержит значительную часть - информации о конфигурации вашей системы, а также скрипты, работающие - в начале работы системы. Некоторые из этих скриптов меняются от - версии к версии &os;. + + CTM + + CTM не выполняет интерактивное + сравнение имеющихся исходных текстов с находящимися в главном + архиве, и не выполняет их загрузку. + Вместо этого несколько раз в день на главной машине CTM + запускается скрипт, находящий изменения в файлах с момента + своего предыдущего запуска. Все обнаруженные изменения сжимаются, + помечаются последовательным номером и кодируются для передачи по + электронной почте в печатном формате ASCII. + После получения эти дельта-файлы CTM могут быть + переданы утилите ctm.rmail, которая + осуществляет автоматическое декодирование, проверку и применение + изменений к пользовательской копии исходных текстов. Этот + процесс более эффективен по сравнению с используемым в + Subversion и требует меньше ресурсов + сервера, так как он выполнен по модели push, + а не pull. Инструкции по использованию + CTM для синхронизации исходных + текстов даны в . - Некоторые конфигурационные файлы также используются в ежедневной - работе системы. В частности, файл - /etc/group. + Если пользователь случайно уничтожил часть своего архива, + Subversion обнаружит и перестроит + повреждённую часть. CTM этого + не делает, поэтому если пользователь удалил часть дерева + исходных текстов и не имеет архивной копии, то нужно будет + начать с самого начала (с последнего базового + дельта-файла), перестроив всё с помощью + CTM. + - Случалось, что установочная часть make installworld - ожидала существования определённых имен пользователей или групп. При - обновлении существует вероятность, что эти пользователи или группы не - существуют. Это вызывает проблемы при обновлении. В некоторых - случаях make buildworld проверяет наличие этих - пользователей или групп. + + Пересборка мира - Примером этого является добавление пользователя - smmsp. Пользователи столкнулись с прерыванием - процесса установки, когда &man.mtree.8; пыталась - создать /var/spool/clientmqueue. + + Пересборка world + + После того, как локальное дерево исходных текстов было + синхронизировано с некоторой версией &os; (&os.stable; или + &os.current;), его можно использовать для перестроения системы. + Этот процесс известен как перестроение мира. - Выходом является запуск утилиты &man.mergemaster.8; в - режиме, предваряющем построение системы, задаваемым опцией - . Она будет сравнивать только те файлы, которые - необходимы для успешного выполнения целей - buildworld или - installworld. Если ваша старая версия - утилиты mergemaster не поддерживает опцию - , воспользуйтесь новой версией из дерева исходных - текстов при первом запуске: + Перед перестроением мира убедитесь в + выполнении следующих действий: - &prompt.root; cd /usr/src/usr.sbin/mergemaster -&prompt.root; ./mergemaster.sh -p + + <emphasis>Перед</emphasis> тем как приступать к + построению мира - - Если вы параноик, можете поискать файлы, владельцем которых - является та группа, которую вы переименовываете или удаляете: + + Сохраните резервную копию всех важных данных на другую + систему или съёмный носитель, проверьте её целостность и + держите под рукой загрузочный носитель. Невозможно + переоценить важность создания резервной копии системы + до начала перестроения системы. Хотя + перестроение системы является простой задачей, неизбежно + возникают ситуации, при которых ошибки в исходных текстах + приводят к тому, что система перестаёт загружаться. + Возможно, вам никогда не придётся этим воспользоваться, но, + постучав по дереву, всегда лучше подстраховаться. + - &prompt.root; find / -group GID -print + + список рассылки + Проверьте последние сообщения в списке рассылки + &a.stable.name; или &a.current.name; (в зависимости от + отслеживаемой ветки). Будьте в курсе любых известных + проблем, и тех систем, которые они затрагивают. В случае + возникновения подобной проблемы, дождитесь сообщения о + том, что эта проблема решена. После этого повторите + синхронизацию исходных текстов для получения необходимого + исправления. + - выдаст список всех файлов, владельцем которых является группа - GID (задаваемая именем или - численным значением ID). - - + + Прочтите /usr/src/UPDATING для + получения информации о дополнительных шагах, необходимых для + данной версии исходных текстов. В этом файле содержится + важная информация о возможных проблемах и может быть указан + порядок выполнения соответствующих команд. При большинстве + обновлений требуются дополнительные шаги, например, + переименование или удаление определённых файлов перед + установкой нового мира. Эти шаги будут перечислены в конце + файла, где в явном виде описывается текущая рекомендуемая + последовательность действий при обновлении. Если содержимое + UPDATING противоречит каким-либо шагам + в этой главе, руководствуйтесь инструкциями в файле + UPDATING, которые имеют больший + приоритет. + + - - Перейдите в однопользовательский режим - однопользовательский режим + + Не используйте <command>make world</command> - Вам может понадобиться откомпилировать систему в - однопользовательском режиме. Кроме обычного выигрыша в - скорости процесса, переустановка системы затрагивает много важных - системных файлов, все стандартные выполнимые файлы системы, - библиотеки, include-файлы и так далее. Изменение их на работающей - системе (в частности, в которой активно работают пользователи) может - привести к неприятностям. + В некоторой устаревшей документации рекомендуется + использование make world. Эта команда + пропускает некоторые важные шаги, поэтому использовать её + следует лишь в том случае, если вы точно знаете, что делаете. + Почти во всех случаях make world — + это неправильный способ, вместо этого следует использовать + описанную здесь процедуру. + - многопользовательский режим - Другим способом является компиляция системы в многопользовательском - режиме с последующим переходом в однопользовательский режим для - выполнения установки. Если вы хотите поступить именно так, просто - следуйте инструкциям до момента окончания построения. Вы можете - отложить переход в однопользовательский режим до завершения целей - installkernel или - installworld. + + Обзор процесса - Как администратор, вы можете выполнить: + Процесс построения мира подразумевает переход с более + старой версии &os; с использованием исходных текстов более + новой версии, которые были получены согласно инструкциям в + . - &prompt.root; shutdown now + Во &os; термин world обозначает ядро, + исполняемые файлы основой системы, библиотеки, файлы для + программирования и встроенный компилятор. Имеет значение + порядок, при котором эти компоненты собираются и + устанавливаются. - на работающей системе, что переведет ее в однопользовательский - режим. + Например, из-за ошибки в старом компиляторе невозможно + было бы скомпилировать новое ядре. Поскольку новое ядро + должно быть собрано новым компилятором, для этого в свою + очередь необходимо собрать новый компилятор, но устанавливать + его перед сборкой ядра необязательно. - Либо вы можете выполнить перезагрузку и в приглашении загрузчика - выбрать пункт single user. После этого система загрузится в - однопользовательском режиме. В приглашении командного процессора вы - должны запустить: + Новый мир может зависеть от особенностей нового ядра, + поэтому новое ядро должно быть установлено до установки нового + мира. Старый мир может работать неправильно на новом ядре, + поэтому новый мир должен быть установлен сразу после установки + нового ядра. - &prompt.root; fsck -p -&prompt.root; mount -u / -&prompt.root; mount -a -t ufs -&prompt.root; swapon -a + Перед установкой нового мира могут потребоваться изменения + в конфигурации, но некоторые из изменений могут не работать + со старым миром. Следовательно, используются два разных этапа + обновления конфигурации. В основной части процесса обновления + выполняется только замена или добавление файлов. Существующие + файлы при этом не удаляются. Поскольку это может повлечь + проблемы, в /usr/src/UPDATING содержится + информация о том, какие из файлов и на каком шаге нужно + удалить вручную. - Эти команды выполняют проверку файловых систем, повторно монтируют - / в режиме чтения/записи, монтируют все - остальные файловые системы UFS, перечисленные в файле - /etc/fstab и включат подкачку. + Исходя из этих соображений в следующей процедуре описана + рекомендуемая последовательность обновления. - Если часы в вашей CMOS настроены на местное время, а не на GMT - (это имеет место, если команда &man.date.1; выдаёт - неправильные время и зону), то вам может понадобиться запустить - следующую команду: + Хорошей практикой является запись в файл вывода команды + make. Если что-то пошло не так, копию + сообщения об ошибке можно отправить в один из списков + рассылки &os;. - &prompt.root; adjkerntz -i + Проще всего использовать для этого + script с параметром, задающим имя файла + для сохранения всего вывода. Не сохраняйте вывод в + /tmp, так как этот каталог может быть + очищен при следующей перезагрузке. Более подходящим местом + является /var/tmp. Запустите команду + непосредственно перед перестроением мира, а после завершения + процесса наберите exit: - Это обеспечит корректную настройку местного часового пояса - — без этого впоследствии вы можете столкнуться с некоторыми - проблемами. + &prompt.root; script /var/tmp/mw.out +Script started, output file is /var/tmp/mw.out - - - Удалите <filename>/usr/obj</filename> + + Обзор процесса построения мира - При перестроении частей системы они помещаются в каталоги, - которые (по умолчанию) находятся в /usr/obj. - Структура повторяет структуру /usr/src. + Команды для построения мира должны запускаться в + указанном здесь порядке. В этом разделе даётся краткое + описание назначения каждой из команд. - Вы можете ускорить выполнение процесса make buildworld - и, возможно, избавить себя от некоторой головной боли, связанной с - зависимостями, удалив этот каталог. + + Если процесс построения мира уже запускался ранее на + этой системе, то в /usr/obj могла + остаться копия предыдущей сборки. Удалите этот каталог + для ускорения процесса построения нового мира и возможного + сокращений работы по разрешению зависимостей. - На некоторых файлах из /usr/obj могут быть - установлены специальные флаги (обратитесь к &man.chflags.1; за - дополнительной информацией), которые сначала должны быть - сняты. + &prompt.root; chflags -R noschg /usr/obj/* +&prompt.root; rm -rf /usr/obj + - -&prompt.root; cd /usr/obj -&prompt.root; chflags -R noschg * -&prompt.root; rm -rf * - - + + Скомпилируйте новый компилятор и несколько + сопутствующих инструментов и используйте их для + компиляции остальной части мира. Результаты сохраняются + в /usr/obj. - - Перекомпилируйте исходные тексты базовой системы + &prompt.root; cd /usr/src +&prompt.root; make buildworld + - - Сохраните вывод + + Для построения нового ядра используйте компилятор, + расположенный в /usr/obj, чтобы + защититься от ошибок несоответствия между компилятором и + ядром. Это необходимо, так как определённые структуры + данных могут поменяться, и при использовании различных + версий ядра и исходных текстов перестанут работать + ps и top. - Неплохо сохранить вывод, получаемый при работе программы - &man.make.1;, в файл. Если что-то вдруг пойдет не так, вы будете - иметь копию сообщения об ошибке и полную картину того, где она - произошла. Хотя это может и не помочь в определении причин - происходящего, это может помочь другим, если вы опишите вашу - проблему в одном из списков рассылки &os;. + &prompt.root; make buildkernel + - Проще всего это сделать при помощи команды &man.script.1; с - параметром, в котором указано имя файла, в который нужно сохранить - вывод. Вы должны сделать это непосредственно перед тем, как - перестроить систему, а по окончании процесса набрать - exit. + + Установите новое ядро и модули, чтобы их можно было + использовать для загрузки. Если используется + kern.securelevel со значением выше + 1 и на файле ядра + установлен noschg или подобный флаг, + то для этого сперва придётся дополнительно перейти в + однопользовательский режим. В противном случае эту + команду можно без проблем запустить в + многопользовательском режиме. Смотрите страницу + Справочника &man.init.8; для получения информации о + kern.securelevel, а также + &man.chflags.1; для информации об использовании различных + файловых флагов. - -&prompt.root; script /var/tmp/mw.out -Script started, output file is /var/tmp/mw.out -&prompt.root; make world -… compile, compile, compile … -&prompt.root; exit -Script done, … - + &prompt.root; make installkernel + - Если вы делаете это, не сохраняйте - вывод в /tmp. Этот каталог может быть - очищен при следующей перезагрузке. Лучше сохранить его в - /var/tmp (как в предыдущем примере) или в - домашнем каталоге пользователя root. - + + Переведите систему в однопользовательский режим + для минимизации проблем при обновлении уже работающих + исполняемых файлов. Это также уменьшит вероятность + возникновения проблем при работе старого мира на новом + ядре. - - Компиляция базовых компонентов системы + &prompt.root; shutdown now - Вы должны находиться в каталоге - /usr/src: + После перехода в однопользовательский режим, запустите + эти команды, если в системе используется UFS: - &prompt.root; cd /usr/src + &prompt.root; mount -u / +&prompt.root; mount -a -t ufs +&prompt.root; swapon -a - (если, конечно, ваш исходный код не находится в другом месте, в - случае чего вам нужно перейти в соответствующий каталог). + Если используется ZFS, запустите другие две команды. + В данном примере zpool называется + zroot: - make + &prompt.root; zfs set readonly=off zroot +&prompt.root; zfs mount -a + - Для полного перестроения системы используется - команда &man.make.1;. Эта команда читает инструкции из файла - Makefile, описывающего, как должны быть - перестроены программы, которые составляют систему &os;, в каком - порядке они должны быть построены и так далее. + + Дополнительно: Если желаемая картография клавиатуры + отличается от используемой по умолчанию US English, её + можно изменить с помощью &man.kbdmap.1;: - Общий формат командной строки, которую вы будет набирать, - таков: + &prompt.root; kbdmap + - &prompt.root; make -x -DVARIABLE target + + Затем, если часы CMOS установлены + на местное время (это так, если вывод &man.date.1; не + содержит правильное время и часовой пояс), + выполните: - В этом примере - является параметром, который вы передаете в &man.make.1;. - Обратитесь к справочной странице программы &man.make.1;, которая - содержит список возможных параметров. + &prompt.root; adjkerntz -i + - - передает переменную в Makefile. Поведение - Makefile определяется этими переменными. Это - те же самые переменные, которые задаются в - /etc/make.conf, и это — еще один способ - их задания. + + Пересборка мира не включает в себя добавление или + обновление конфигурационных файлов в + /etc, /var, + /usr и некоторых других каталогах. + Следующим шагом является выполнение первоначального + обновления файлов конфигурации в /etc + для подготовки к новому миру. Следующая команда + ограничивается сравнением файлов, необходимых для успешного + выполнения цели installworld. + В частности, на этом шаге могут быть добавлены новые + пользовательские группы, служебные учётные записи и + сценарии автозапуска, которые были добавлены во &os; со + времени последнего обновления. Это необходимо для их + использования при выполнении шага + installworld. Смотрите для получения более подробных + инструкций по этой команде: - &prompt.root; make -DNO_PROFILE=true target + &prompt.root; mergemaster -p + - является другим способом указания того, что библиотеки для - профилирования строить не нужно, и соответствует строке + + Установите новый мир и служебные исполняемые файлы, + находящиеся в /usr/obj. - NO_PROFILE= true # Обход построения библиотек для профилирования + &prompt.root; cd /usr/src +&prompt.root; make installworld + - в файле /etc/make.conf. + + Обновите остальные файлы конфигурации. - target указывает программе - &man.make.1; на то, что вы хотите сделать. Каждый файл - Makefile определяет некоторое количество - различных целей, и ваш выбор цели определяет то, что - будет делаться. + &prompt.root; mergemaster -iF + - Некоторые цели, перечисленные в файле - Makefile, не предназначены для вызова. Просто - они используются в процессе построения для разбиения его на этапы. + + Удалите устаревшие файлы. Это важно, так как в + противном случае они могут вызвать проблемы. - В большинстве случаев вам не нужно передавать никаких - параметров в &man.make.1;, так что ваша команда будет выглядеть - примерно так: + &prompt.root; make delete-old + - -&prompt.root; make target - + + Теперь нужна полная перезагрузка системы для того, + чтобы загрузить новое ядро и мир с использованием новых + конфигурационных файлов. - Замените target на одну или более из - опций сборки. Первой из них всегда должна быть опция - buildworld. + &prompt.root; reboot + - Как указывают на это названия, - buildworld строит полностью новое дерево - в каталоге /usr/obj, а - installworld устанавливает это дерево на - используемой машине. + + Убедитесь, что перед удалением старых версий библиотек + все установленные порты были пересобраны согласно + инструкциям в . По + завершению удалите все старые библиотеки во избежание + конфликтов с их новыми версиями. За подробным описанием + этого шага обратитесь к . - Разделение этих опций весьма полезно по двум причинам. Во-первых, это позволяет - вам безопасно строить систему, зная, что компоненты вашей рабочей - системы затронуты не будут. Построение - самодостаточно. По этой причине вы можете спокойно - запустить buildworld на машине, работающей в - многопользовательском режиме без опаски получить какие-либо проблемы. - Но всё же рекомендуется запускать цель - installworld в однопользовательском - режиме. + &prompt.root; make delete-old-libs + + - Во-вторых, это позволяет вам использовать монтирование по NFS для - обновления многих машин в сети. Если у вас есть три машины, - A, B и C, которые - вы хотите обновить, запустите make buildworld и - make installworld на машине A. - Хосты B и C должны будут - затем смонтировать по NFS каталоги /usr/src - и /usr/obj с машины A, и вы - сможете запустить make installworld для установки - результатов построения на машинах B и - C. + single-user mode - Хотя цель world всё ещё имеется в - наличии, вам настоятельно рекомендуется не пользоваться ею. + Если для системы доступно окно обслуживания, обдумайте + возможность компиляции системы в однопользовательском режиме + вместо использования для этого многопользовательского режима + с переводом в однопользовательский режим для установки. + Переустановка системы затрагивает множество важных системных + файлов, все стандартные системные исполняемые файлы, + библиотеки и заголовочные файлы. Замена этих файлов на + работающей системе (в частности, используемых в данный момент + пользователями) может привести к неприятностям. + - Выполните + + Файлы конфигурации - &prompt.root; make buildworld + + make.conf + - Имеется возможность задавать команде - make параметр , который - приводит к запуску нескольких одновременно работающих процессов. - Наиболее полезно использовать это на многопроцессорных машинах. - Однако, так как процесс компиляции больше всего требователен к - подсистеме ввода/вывода, а не к производительности процессора, это - можно использовать и на машинах с одним процессором. + В процессе построения мира используется несколько файлов + конфигурации. - На типичной машине с одним CPU вы должны запускать: + Makefile, расположенный в + /usr/src, описывает правила и порядок + построения программ, составляющих &os;. - -&prompt.root; make -j4 buildworld - + В &man.make.conf.5; описаны параметры, доступные для + make, а также несколько общих примеров + имеется в + /usr/share/examples/etc/make.conf. + Добавляемые в /etc/make.conf параметры + определяют поведение make при построении + программ. Эти параметры действуют при каждом использовании + make, включая компиляцию приложений из + Коллекции Портов, компиляцию собственных программ на Си и + построение операционной системы &os;. Изменение некоторых + настроек может иметь далекоидущие и порой неожиданные + последствия. Прочтите комментарии в обоих местах и примите + к сведению, что значения по умолчанию были выбраны как + компромисс между производительностью и надёжностью. - &man.make.1; будет иметь до 4 одновременно работающих - процессов. Эмпирические замеры, опубликованные как-то в списке рассылки, - показывают, что в среднем это дает наибольшее увеличение - производительности. + + src.conf + - Если у вас многопроцессорная машина и вы используете ядро с - настройками для SMP, попробуйте использовать значения между 6 и - 10 и посмотрите, как это отразится на скорости работы. - + Поведение при сборке операционной системы из исходных + текстов задаётся в /etc/src.conf. В + отличие от /etc/make.conf, содержимое + /etc/src.conf влияет только на сборку + самой операционной системы &os;. Описание многих параметров, + доступных в этом файле, имеется в &man.src.conf.5;. Будьте + осторожны при выключении на первый взгляд ненужных модулей + ядра или параметров сборки. Иногда между ними имеются + неожиданные или неочевидные взаимозависимости. + - - Время на построение + + Переменные и цели выполнения - - перестроение world + Общий формат использования make: - затраченное время - + &prompt.root; make -x -DVARIABLE target - На время компиляции влияет множество факторов, но на данный - момент современные машины - справляются с построением дерева &os.stable; примерно за 1-2 часа - без дополнительных хитростей и убыстряющих процесс уловок. Дерево - &os.current; строится несколько дольше. - - + В этом примере параметр + передаётся + make. Обратитесь к странице Справочника + &man.make.1; для получения примеров использования имеющихся + параметров. - - Откомпилируйте и установите новое ядро - - ядро - компиляция - + Чтобы передать переменную, укажите её имя с использованием + . + Поведение Makefile зависит от переменных. + Они могут быть заданы в /etc/make.conf + или указаны при использовании make. + Например, эта переменная указывает, что библиотеки для + профилирования собирать не нужно: - Чтобы получить полную отдачу от вашей новой системы, вы должны - перекомпилировать ядро. Это практически необходимость, так как - отдельные структуры в памяти могут меняться, и программы типа - &man.ps.1; и &man.top.1; не будут работать, пока версии ядра и - исходных текстов системы не будут совпадать. + &prompt.root; make -DNO_PROFILE target - Самым простым и надежным способом сделать это является компиляция и - установка ядра на основе GENERIC. Хотя в - GENERIC могут оказаться не все необходимые для - работы вашей системы устройства, в нем имеется все необходимое - для перезагрузки вашей системы обратно в однопользовательский режим. - Это является хорошей проверкой на правильность работы новой системы. - После загрузки с ядром GENERIC и проверки - работоспособности системы вы можете построить новое ядро на основе - вашего обычного конфигурационного файла ядра. + Это соответствует настройке в + /etc/make.conf: - В &os; важно выполнить buildworld перед сборкой - нового ядра. + NO_PROFILE= true # Обход построения библиотек для профилирования - - Если вы хотите построить собственное ядро и уже подготовили файл - конфигурации, просто используйте - KERNCONF=MYKERNEL - следующим образом: + target указывает программе + make на то, что нужно сделать, а + Makefile определяет доступные цели. + Некоторые цели используются в процессе построения для + разбиения его на этапы. - &prompt.root; cd /usr/src -&prompt.root; make buildkernel KERNCONF=MYKERNEL -&prompt.root; make installkernel KERNCONF=MYKERNEL - + Разделение опций удобно по двум причинам. Во-первых, это + позволяет выполнять сборку, не затрагивая компоненты рабочей + системы. По этой причине можно спокойно запустить + buildworld на машине, работающей в + многопользовательском режиме. Но цель + installworld всё же рекомендуется + запускать в однопользовательском режиме. - Заметьте, что, если вы установили - kern.securelevel в значение, превышающее 1, - и установили флаг noschg или - подобный на бинарный файл ядра, то вы будете вынуждены перейти в - однопользовательский режим для того, чтобы воспользоваться - installkernel. В противном случае вы - должны выполнять эти команды без проблем. Обратитесь к справочным - страницам об &man.init.8; для получения подробной информации о - kern.securelevel и &man.chflags.1; для получения - информации о различных флагах файлов. - + Во-вторых, это позволяет использовать монтирование по + NFS для обновления многих машин по сети + согласно описанию в . - - Перезагрузитесь в однопользовательский режим - однопользовательский режим + Параметр приводит к запуску нескольких + одновременно работающих процессов make. + Поскольку процесс компиляции больше всего требователен к + подсистеме ввода/вывода, а не к производительности процессора, + это можно использовать и на машинах с одним процессором. - Для проверки работоспособности ядра вы должны перезагрузить систему - и перейти в однопользовательский режим. Сделайте это, следуя указаниям - в . - + Используйте следующую команду на машине с одним CPU, + чтобы иметь до 4 одновременно работающих процессов. + Опубликованные в списке рассылки практические замеры + показывают, что в среднем это даёт наибольший выигрыш в + производительности. - - Установите новые версии системных программ + &prompt.root; make -j4 buildworld - Если вы компилировали достаточно свежую версию &os;, в которой - имеется команда make buildworld, то для установки - новых версий программ вы должны теперь выполнить команду - installworld. + На многопроцессорной машине попробуйте подобрать значение + между 6 и 10, и + посмотрите, как это отразится на скорости работы. - Запустите + + перестроение мира + тайминги + - &prompt.root; cd /usr/src -&prompt.root; make installworld - - Если при выполнении команды make buildworld вы - задавали значения каких-либо переменных, то при выполнении - make installworld вы должны задать те же самые - переменные. Это не всегда так для остальных параметров; например, - при выполнении installworld никогда не - должен использоваться параметр . + Если при выполнении команды make + buildworld были заданы значения каких-либо + переменных, то при выполнении make + installworld нужно задать те же самые переменные. + При этом нельзя + использовать совместно с + installworld. - Например, если вы выполняли команду: + Например, если выполнялась эта команда: &prompt.root; make -DNO_PROFILE buildworld - то результат её выполнения должен устанавливаться командой + то результат её выполнения должен устанавливаться + командой: &prompt.root; make -DNO_PROFILE installworld - В противном случае будет делаться попытка установить библиотеки - для профилирования, которые не компилировались на этапе выполнения - команды make buildworld. + В противном случае вторая команда попытается установить + библиотеки для профилирования, которые не компилировались на + этапе выполнения команды make + buildworld. - - Обновите файлы, не обновленные по команде - <command>make installworld</command> + + + Объединение файлов конфигурации - При перестроении системы не будут обновляться некоторые каталоги - (в частности, /etc, /var и - /usr) с конфигурационными - файлами. - - Самым простым способом обновить такие файлы является запуск - утилиты &man.mergemaster.8;, хотя можно сделать это и вручную, если вам - так больше нравится. Вне зависимости от выбранного вами способа - обязательно сделайте резервную копию каталога /etc - на случай, если произойдёт что-то непредвиденное. - - - <command>mergemaster</command> - TomRhodesТекст предоставил + + + Tom + Rhodes + + Текст предоставил + - - - mergemaster + + mergemaster + - Утилита &man.mergemaster.8; является скриптом для оболочки Боурна, - которая поможет вам в определении разницы между вашими - конфигурационными файлами в каталоге /etc и - конфигурационными файлами из дерева исходных текстов - /usr/src/etc. Это является рекомендуемым - способом синхронизации системных конфигурационных файлов с теми, что - размещены в дереве исходных текстов. + &os; предоставляет утилиту &man.mergemaster.8;, которая + является скриптом для оболочки Боурна и предназначена для + определения разницы между конфигурационными файлами в каталоге + /etc и конфигурационными файлами из + дерева исходных текстов /usr/src/etc. + Это является рекомендуемым способом синхронизации системных + конфигурационных файлов с теми, что размещены в дереве + исходных текстов. - Для начала просто наберите mergemaster в - приглашении командной строки и посмотрите, что происходит. - mergemaster построит временное окружение для - пользователя root, начиная от /, а затем - заполнит его различными системными конфигурационными файлами. Эти - файлы затем будут сравниваться с теми, что установлены в вашей - системе. В этот момент файлы, которые имеют отличия, будут выданы в - формате &man.diff.1;, где знак будет означать - добавленные или изменённые строки, а знак будет - означать строки, которые были либо полностью удалены, либо заменены - на новые. Обратитесь к страницам справочной системы по команде - &man.diff.1; для получения более полной информации о синтаксисе - команды &man.diff.1; и формате выдачи отличий в файлах. + Перед использованием mergemaster + рекомендуется скопировать имеющийся каталог + /etc в какое-нибудь безопасное место. + задает выполнение рекурсивного копирования, + а сохраняет даты и владельца файлов: - Затем &man.mergemaster.8; выдаст вам каждый файл, в котором есть - изменения, и в этот момент у вас есть возможность либо удалить новый - файл (который будем считать временным), установить временный файл в - его неизменённом виде, объединить временный файл с установленным на - данный момент, либо просмотреть выдачу &man.diff.1; ещё раз. + &prompt.root; cp -Rp /etc /etc.old - Выбор удаления временного файла укажет &man.mergemaster.8; на то, - что мы хотим оставить наш текущий файл без изменений и удалить его - новую версию. Делать это не рекомендуется, если только - у вас нет причин вносить изменения в текущий файл. Вы можете - получить помощь в любое время, набрав ? в - приглашении &man.mergemaster.8;. Если пользователь выбирает пропуск - файла, запрос появится снова после того, как будут обработаны все - остальные файлы. + При запуске mergemaster строит + временное корневое окружение, начиная с + /, и заполняет его различными системными + конфигурационными файлами. Затем эти файлы сравниваются с + текущими установленными в системе. Файлы, которые имеют + отличия, будут выданы в формате &man.diff.1;, где знак + означает добавленные или изменённые строки, + а знак означает строки, которые будут либо + полностью удалены, либо заменены на новый файл. Обратитесь к + страницам справочной системы по команде &man.diff.1; для + получения более полной информации о формате выдачи отличий в + файлах. - Выбор установки немодифицированного временного файла приведёт к - замене текущего файла новым. Для большинства немодифицированных - файлов это является подходящим вариантом. + Затем mergemaster выдаст каждый файл, в + котором есть изменения, с вариантами действий: удалить новый + файл, упоминаемый здесь как временный, установить временный + файл в его неизменённом виде, объединить временный файл с + установленным на данный момент, либо просмотреть результат ещё + раз. - Выбор варианта с объединением файла приведёт к вызову текстового - редактора, содержащего текст обоих файлов. Теперь вы можете - объединить их, просматривая оба файла на экране, и выбирая те части - из обоих, что подходят для окончательного варианта. Когда файлы - сравниваются на экране, то нажатие l выбирает - содержимое слева, а нажатие r выбирает содержимое - справа. В окончательном варианте будет файл, состоящий из обеих - частей, который и будет установлен. Этот вариант используется для - файлов, настройки в которых изменялись пользователем. + Выбор удаления временного файла укажет + mergemaster оставить текущий файл без + изменений и удалить его новую версию. Делать это не + рекомендуется. Чтобы получить помощь в любое время, наберите + ? в приглашении mergemaster. + Если пользователь выбирает пропуск файла, запрос появится + снова, после того как будут обработаны все остальные + файлы. - Выбор повторного просмотра &man.diff.1;-разниц выдаст вам разницы - между файлами, как это делала утилита &man.mergemaster.8; до того, - как запросила вас о выборе. + Выбор установки немодифицированного временного файла + приведёт к замене текущего файла новым. Для большинства + немодифицированных файлов это является подходящим + вариантом. - После того, как утилита &man.mergemaster.8; закончит работу с - системными файлами, она выдаст запрос относительно других параметров. - &man.mergemaster.8; может запросить вас относительно перестроения - файла паролей и завершит запросом на удаление оставшихся - временных файлов. - + Выбор варианта с объединением файла приведёт к вызову + текстового редактора, содержащего текст обоих файлов. Файлы + можно объединить, просматривая оба файла на экране и выбирая + те части из обоих, которые подходят для окончательного + варианта. При сравнении файлов нажатие l + выбирает содержимое слева, нажатие r выбирает + содержимое справа. В окончательном варианте будет файл, + состоящий из обеих частей, который и будет установлен. Этот + вариант обычно используется для файлов, настройки в которых + изменялись пользователем. - - Обновление в ручном режиме + Выбор повторного просмотра результатов выдаст разницу + между файлами. - Однако если вы хотите произвести обновление вручную, то вы не - можете просто скопировать файлы из /usr/src/etc в - /etc и получить работающую систему. Некоторые - из этих файлов сначала нужно установить. Это нужно - потому, что каталог /usr/src/etc - не является копией того, что должен содержать - ваш каталог /etc. Кроме того, есть файлы, - которые должны присутствовать в /etc, но которых - нет в /usr/src/etc. + После того как утилита mergemaster + закончит работу с системными файлами, она выдаст запрос + относительно других параметров. Она может запросить + перестроение файла паролей и завершится запросом на удаление + оставшихся временных файлов. + - Если вы используете &man.mergemaster.8; (как это рекомендуется), - то вы можете перейти сразу к следующему - разделу. + + + Удаление устаревших файлов и библиотек - Вручную проще всего сделать это, установив файлы в новый каталог, - а затем пройтись по ним, отмечая разницу. + + + + Anton + Shterenlikht + + На основе заметок, которые предоставил + + + - - Сделайте резервную копию вашего каталога - <filename>/etc</filename> + + Удаление устаревших файлов и каталогов + - Хотя, в теории, никаких автоматических действий с этим - каталогом не производится, - всегда лучше чувствовать себя уверенным. Так что скопируйте - имеющийся каталог /etc в какое-нибудь - безопасное место. Запустите что-то вроде: + В ходе жизненного цикла разработки &os; файлы с их + содержимым иногда становятся устаревшими. Это может быть + вызвано тем, что функциональность реализуется в другом месте, + сменился номер версии библиотеки или файл был целиком удалён + из системы. Такие устаревшие файлы, библиотеки и каталоги + следует удалять вместе с обновлением системы. Это не даст + захламить систему старыми файлами, которые занимают место на + диске и на архивных носителях. Кроме того, если в старой + библиотеке имеется проблема безопасности или стабильности, + такую систему следует обновить до более новой библиотеки, + чтобы предотвратить крахи, вызванные работой старой версии. + Файлы, каталоги и библиотеки, которые признаны устаревшими, + перечислены в /usr/src/ObsoleteFiles.inc. + Для удаления устаревших файлов в процессе обновления системы + следует пользоваться следующими инструкциями. - &prompt.root; cp -Rp /etc /etc.old + После выполнения make installworld + и последующего mergemaster проверьте + наличие устаревших файлов и библиотек: - задает выполнение рекурсивного копирования, - а сохраняет даты, владельца файлов и тому - подобное. - + &prompt.root; cd /usr/src +&prompt.root; make check-old - Вам нужно создать шаблонную структуру каталогов для установки - нового содержимого /etc и других файлов. - Подходящим местом является /var/tmp/root, и в нём - потребуется разместить некоторое количество подкаталогов. + Если были найдены какие-либо устаревшие файлы, их можно + удалить с помощью следующей команды: - &prompt.root; mkdir /var/tmp/root -&prompt.root; cd /usr/src/etc -&prompt.root; make DESTDIR=/var/tmp/root distrib-dirs distribution + &prompt.root; make delete-old - Эти команды приведут к созданию нужной структуры каталогов и - установке файлов. Множество каталогов, созданных в - /var/tmp/root, будут пустыми и должны быть удалены. - Проще всего сделать это так: + Перед удалением каждого устаревшего файла запрашивается + подтверждение. Используйте + BATCH_DELETE_OLD_FILES, чтобы сократить + этот процесс и позволить системе удалить эти файлы + автоматически: - &prompt.root; cd /var/tmp/root -&prompt.root; find -d . -type d | xargs rmdir 2>/dev/null + &prompt.root; make -DBATCH_DELETE_OLD_FILES delete-old - Эти команды удалят все пустые каталоги. (Стандартный поток - диагностических сообщений перенаправляется в - /dev/null для исключения предупреждений о - непустых каталогах.) + Аналогичного эффекта можно достичь, пропустив эти команды + через yes: - Теперь /var/tmp/root содержит все файлы, - которые должны быть помещены в соответствующие места в - /. Теперь пройдитесь по каждому их этих файлов - и определите, чем они отличаются от имеющихся у вас файлов. + &prompt.root; yes|make delete-old - Заметьте, что некоторые из файлов, которые были установлены в - каталог /var/tmp/root, имеют первым символом - .. На момент написания единственными такими файлами - являлись файлы начальных скриптов командных процессоров в - /var/tmp/root/ и - /var/tmp/root/root/, хотя могут быть и другие - (зависит от того, когда вы это читаете). Обязательно пользуйтесь - командой ls -a, чтобы выявить их. + + Предупреждение - Проще всего сделать это путём сравнения двух файлов при помощи - команды &man.diff.1;: + Удаление устаревших файлов приведёт к нарушению работы + программ, которые всё ещё зависят от этих устаревших файлов. + Это особенно верно для старых библиотек. В большинстве + случаев программы, порты или библиотеки, использующие такую + старую библиотеку, нужно перекомпилировать перед выполнением + make delete-old-libs. + - &prompt.root; diff /etc/shells /var/tmp/root/etc/shells + Программы для проверки наличия зависимостей от совместно + используемых библиотек включают в себя + sysutils/libchk и + sysutils/bsdadminscripts. - Эта команда покажет разницу между вашим файлом - /etc/shells и новым файлом - /var/tmp/root/etc/shells. Используйте это для - определения того, переносить ли сделанные вами изменения или - скопировать поверх вашего старого файла. + Устаревшие совместно используемые библиотеки могут + конфликтовать с более новыми библиотеками, что приводит к + сообщениям следующего вида: - - Называйте новый корневой каталог - (<filename>/var/tmp/root</filename>) по дате, чтобы вы смогли легко - выявить разницу между версиями + /usr/bin/ld: warning: libz.so.4, needed by /usr/local/lib/libtiff.so, may conflict with libz.so.5 +/usr/bin/ld: warning: librpcsvc.so.4, needed by /usr/local/lib/libXext.so, may conflict with librpcsvc.so.5 - Частое перестроение системы означает также и частое обновление - /etc, которое может быть несколько - обременительным. + Для решения этих проблем выясните, какой именно порт + установил данную библиотеку: - Вы можете ускорить этот процесс, сохраняя копию последнего - набора измененных файлов, которые вы перенесли в - /etc. Следующая процедура подаст вам одну - идею о том, как это сделать. + &prompt.root; pkg which /usr/local/lib/libtiff.so + /usr/local/lib/libtiff.so was installed by package tiff-3.9.4 +&prompt.root; pkg which /usr/local/lib/libXext.so + /usr/local/lib/libXext.so was installed by package libXext-1.1.1,1 - - - Выполните перестроение системы обычным образом. Когда вы - вам потребуется обновить /etc и другие - каталоги, дайте целевому каталогу имя на основе текущей даты. - Если вы делаете это 14 февраля 1998 года, то вы можете сделать - следующее: + Затем данный порт нужно удалить, пересобрать и + переустановить. Для автоматизации этого процесса можно + использовать ports-mgmt/portmaster. После + того как все порты пересобраны и более не используют старые + библиотеки, удалите эти старые библиотеки с помощью следующей + команды: - &prompt.root; mkdir /var/tmp/root-19980214 -&prompt.root; cd /usr/src/etc -&prompt.root; make DESTDIR=/var/tmp/root-19980214 \ - distrib-dirs distribution - + &prompt.root; make delete-old-libs - - Перенесите изменение из этого каталога, как это описано - выше. + Если что-то работает неправильно, можно с лёгкостью + перестроить конкретную часть системы. Например, если файл + /etc/magic был случайно удалён в процессе + обновления или переноса /etc, то команда + file перестанет работать. В таком случае + это можно исправить вот так: - Не удаляйте каталог - /var/tmp/root-19980214 после окончания - этого процесса. - - - - Когда вы загрузите самую последнюю версию исходного кода и - перестроите систему, выполните шаг 1. Это даст вам новый - каталог, который может называться - /var/tmp/root-19980221 (если вы ждете - неделю между обновлениями). - - - - Теперь вы можете видеть изменения, которые были сделаны - за прошедшую неделю, выполнив при помощи команды &man.diff.1; - рекурсивное сравнение двух каталогов: - - &prompt.root; cd /var/tmp -&prompt.root; diff -r root-19980214 root-19980221 - - Как правило, здесь содержится гораздо меньше отличий, чем - между каталогами - /var/tmp/root-19980221/etc и - /etc. Так как отличий меньше, то и легче - перенести эти изменения в ваш каталог - /etc. - - - - Теперь вы можете удалить более старый из двух каталогов - /var/tmp/root-*: - - &prompt.root; rm -rf /var/tmp/root-19980214 - - - - Повторяйте этот процесс всякий раз, когда вам нужно - перенести изменения в каталог /etc. - - - - Для автоматической генерации имён каталогов можно - использовать команду &man.date.1;: - - &prompt.root; mkdir /var/tmp/root-`date "+%Y%m%d"` - - - - - - Перезагрузка - - Теперь вы сделали всё. После того, как вы проверили, что всё - на месте, можете перегрузить систему. Простая команда - &man.shutdown.8; должна это сделать: - - &prompt.root; shutdown -r now - - - - Завершение - - Теперь у вас имеется успешно обновлённая система &os;. - Поздравляем! - - Если что-то работает неправильно, можно с лёгкостью перестроить - конкретную часть системы. Например, если вы случайно удалили файл - /etc/magic в процессе обновления или переноса - /etc, то команда &man.file.1; перестанет работать. - В таком случае это можно исправить вот так: - &prompt.root; cd /usr/src/usr.bin/file &prompt.root; make all install - - Вопросы? + + Вопросы общего характера - - - - Нужно ли полностью перестраивать систему при каждом - изменении? - + + + Нужно ли полностью перестраивать систему при каждом + изменении? - - Простого ответа на этот вопрос нет, так как это зависит от - характера изменения. Например, если вы только что выполнили - CVSup, и оказалось, что с момента - последнего его запуска были изменены следующие файлы: + + Это зависит от характера изменения. Например, если + svn показывает, что с момента + последнего запуска были изменены только следующие + файлы: src/games/cribbage/instr.c src/games/sail/pl_main.c src/release/sysinstall/config.c src/release/sysinstall/media.c src/share/mk/bsd.port.mk - то перестраивать всю систему незачем. Вы можете просто - перейти в соответствующий подкаталог и выдать команду - make all install, этого будет достаточно. - Однако, если меняется что-то важное, например, + то перестраивать всю систему возможно незачем. + Вместо этого можно перейти в соответствующие подкаталоги + и выдать команду make all install. + Однако если меняется что-то важное, например, src/lib/libc/stdlib, то вы должны - перестроить всю систему или по крайней мере те ее части, которые - скомпонованы статически. + перестроить всю систему. - В конце концов, выбор за вами. Может быть вам нравится - перестраивать систему, скажем, каждый вечер, а изменения - скачивать ночью. Или вы можете захотеть перестраивать только - те вещи, которые менялись, но быть уверенным, что отслежены все - изменения. - - И, конечно же, всё это зависит от того, как часто вы хотите - делать обновление, и отслеживаете ли вы &os.stable; или + Некоторые пользователи перестраивают систему каждые + две недели, позволяя изменениям накопиться за это время. + Другие перестраивают только те вещи, которые менялись, + и внимательно отслеживают все зависимости. Всё это + зависит от того, как часто пользователь хочет делать + обновление и отслеживает ли он &os.stable; или &os.current;. - - + + - - - Компиляция прерывается с большим количеством ошибок по - сигналу 11сигнал 11 - (или с другим номером сигнала). Что - случилось? - + + Почему прерывается компиляция с большим + количеством ошибок по сигналу 11 + сигнал 11 + + (или с другим номером сигнала)? - + Как правило, это говорит о проблемах с оборудованием. - (Пере)построение системы является эффективным стресс-тестом для - вашего оборудования и частенько выявляет проблемы с памятью. - Обычно это проявляется в виде неожиданных сбоев компилятора - или получения странных программных сигналов. + Построение системы является эффективным стресс-тестом для + оборудования, в особенности памяти. Явным указателем на + это является то, что при перезапуске + make процедура построения + прекращается в различные моменты времени. - Явным указателем на это является то, что при перезапуске - процедуры построения она прекращается в различные моменты - времени. + Для исправления этой ошибки попробуйте заменить + комплектующие машины, начиная с оперативной памяти, + для определения сбоящей компоненты. + + - В этом случае вы мало что можете сделать, разве что - попробовать заменить комплектующие вашей машины для определения - сбоящей компоненты. - - + + Можно ли удалить /usr/obj + после окончания? - - - Могу ли я удалить каталог /usr/obj - после окончания? - + + В этом каталоге содержатся все объектные файлы, + которые создаются во время фазы компиляции. Обычно + одним из первых шагов в процессе make + buildworld является удаление этого каталога, + чтобы начать заново. Сохранение + /usr/obj после окончания имеет мало + смысла, а его удаление освободит приблизительно 2 ГБ + дискового пространства. + + - - Если отвечать коротко, то да. + + Могут ли быть продолжены прерванные процессы + построения? - Каталог /usr/obj содержит все - объектные файлы, которые создаются во время фазы компиляции. - Обычно одним из первых шагов в процессе make buildworld - является удаление этого каталога. В этом случае сохранение - /usr/obj после окончания имеет мало смысла; - вдобавок, он будет занимать большой объём дискового - пространства (на данный момент около 340 МБ). - - Однако если вы точно знаете, что делаете, то можете заставить - процедуру make buildworld пропустить этот шаг. Это - позволит последующие построения выполняться гораздо быстрее, так - как большинство исходных текстов не нужно будет - перекомпилировать. Оборотной стороной медали этого подхода - является вероятность появления некоторых проблем с зависимостями, - что может привести к прерыванию построения по странным причинам. - Это частенько вызывает шум в списках рассылки &os;, когда - кто-либо жалуется на прерывание процесса построения, не обращая - внимания на то, что он пытается срезать углы на - повороте. - - - - - - Могут ли быть продолжены прерванные процессы - построения? - - - + Это зависит от того, насколько далеко зашел процесс - построения перед тем, как вы обнаружили проблему. + построения перед тем, как была обнаружена проблема. + В общем случае процесс make + buildworld строит новые копии необходимых + инструментальных средств и системные библиотеки. Затем + эти средства и библиотеки устанавливаются. Новые + инструментальные средства и библиотеки затем используются + для перестроения самих себя и повторно устанавливаются. + Система в целом теперь перестраивается с новыми + системными файлами. - В общем случае (и это несложное и - быстрое правило) процесс make buildworld строит - новые копии необходимых инструментальных средств (таких, как - &man.gcc.1; и &man.make.1;) и системные библиотеки. Затем эти - средства и библиотеки устанавливаются. Новые инструментальные - средства и библиотеки затем используются для перестроения - самих себя, и повторно устанавливаются. Система в целом - (теперь включая обычные пользовательские программы, такие, - как &man.ls.1; или &man.grep.1;) теперь перестраивается с - новыми системными файлами. + На последней стадии выполнение этих команд является + достаточно безопасным, поскольку они не отменяют работу + предыдущего make buildworld: - Если вы на последнем шаге, и вы знаете это (потому что - просматривали вывод, который сохраняете), то вы можете - (достаточно безболезненно) выполнить команду: - - … исправление проблемы … -&prompt.root; cd /usr/src + &prompt.root; cd /usr/src &prompt.root; make -DNO_CLEAN all - При этом результат предыдущего запуска - make buildworld откатываться не будет. + Если в выводе make buildworld + появляется такое сообщение: - Если вы видите сообщение: - -------------------------------------------------------------- Building everything.. -------------------------------------------------------------- - в выводе команды make buildworld, то делать так - достаточно безопасно. + то делать так вероятно достаточно безопасно. - Если этого сообщения не было, или вы в этом не уверены, то - всегда лучше обезопасить себя, и начать построение с самого - начала. - - + Если такое сообщение не выводится, всегда лучше + подстраховаться и запустить сборку с самого начала. + + - - - Как ускорить процесс построения системы? - + + Можно ли ускорить сборку мира? - - - - Работайте в однопользовательском режиме. - + + Ускорить процесс сборки мира может несколько + действий. Например, весь процесс можно выполнять в + однопользовательском режиме. Однако, это не позволит + пользователям иметь доступ к системе, пока этот процесс + не завершится. - - Разместите каталоги /usr/src и - /usr/obj в отдельных файловых - системах, располагающихся на разных дисках. Если это - возможно, то разместите эти диски на разных дисковых - контроллерах. - + Тщательный подход к проектированию файловой системы + или использование датасетов ZFS позволит почувствовать + разницу. Задумайтесь о размещении + /usr/src и + /usr/obj на различных файловых + системах. По возможности размещайте файловые системы + на различных дисках и дисковых контроллерах. При + монтировании /usr/src используйте + параметр , который отключает + запись информации о времени доступа к файлу. Если + /usr/src не расположен на + собственной файловой системе, подумайте о + перемонтировании /usr с + . - - Ещё лучше разместить эти файловые системы на нескольких - дисках при помощи устройства &man.ccd.4; (драйвер - объединённых дисков). - + Файловая система, на которой располагается + /usr/obj, может быть смонтирована + (или перемонтирована) с параметром . + Это приведёт к тому, что операции записи на диск будут + выполняться асинхронно. Другими словами, запись будет + завершаться немедленно, но данные записываться на диск + несколькими секундами позже. Это позволит объединять + операции записи и приведёт к значительному приросту + производительности. - - Выключите генерацию профилирующего кода (установив - NO_PROFILE=true в файле - /etc/make.conf). Вам это скорее - всего никогда не понадобится. - + Файловую систему с /usr/obj + можно смонтировать с для записи + на диск в асинхронном режиме. В этом случае операции + записи завершаются мгновенно, а сами данные записываются + на диск через несколько секунд. Это позволяет писать + кластеризованно, что может дать значительный прирост + производительности. - - Также в /etc/make.conf установите - значение CFLAGS во что-то типа . Оптимизация выполняется - гораздо медленнее, а разница между и - обычно несущественна. - позволяет компилятору использовать для - связи вместо временных файлов программные каналы, что - уменьшает обращение к диску (за счет оперативной - памяти). - + + Имейте в виду, что эта опция делает вашу файловую + систему менее устойчивой. С этой опцией имеется больше + шансов, что при перезагрузке машины после неожиданного + сбоя при пропадании напряжения файловая система + окажется в невосстановимом состоянии. - - Передайте утилите &man.make.1; параметр - для запуска - параллельно нескольких процессов. Обычно это помогает вне - зависимости от того, сколько процессоров установлено в вашей - машине. - + Если каталог /usr/obj — + это всё, что есть на этой файловой системе, то это не + проблема. Если на той же самой файловой системе + имеются какие-то важные данные, то проверьте давность + ваших резервных копий перед включением этой + опции. + - - Файловая система, на которой располагается каталог - /usr/src, может быть смонтирована (или - перемонтирована) с опцией . При этом - запись на диск информации о времени последнего доступа к - файлам будет отключена. Скорее всего, вам эта информация и - не нужна. + Выключите генерацию профилирующего кода, установив + NO_PROFILE=true в файле + /etc/make.conf. - &prompt.root; mount -u -o noatime /usr/src + Передайте утилите &man.make.1; параметр + + для запуска параллельно нескольких процессов. Обычно + это помогает вне зависимости от того, сколько + процессоров установлено в машине. + + - - В примере предполагается, что - /usr/src располагается на - собственной файловой системе. Если это не так (то - есть он является частью, скажем, - /usr), то вам нужно использовать - точку монтирования той файловой системы, а не - /usr/src. - - + + Что делать, если что-то пошло не так? - - Файловая система, на которой располагается - /usr/obj, может быть смонтирована (или - перемонтирована) с параметром . Это - приведёт к тому, что операции записи на диск будут - выполняться асинхронно. Другими словами, запись будет - завершаться немедленно, но данные записываться на диск - несколькими секундами позже. Это позволит объединять - операции записи и приведёт к значительному приросту - производительности. - - - Имейте в виду, что эта опция делает вашу файловую - систему менее устойчивой. С этой опцией имеется больше - шансов, что при перезагрузке машины после неожиданного - сбоя при пропадании напряжения файловая система окажется - в невосстановимом состоянии. - - Если каталог /usr/obj — это все, - что есть в этой файловой системе, то это не проблема. - Если на той же самой файловой системе имеются какие-то - важные данные, то проверьте давность ваших резервных - копий перед включением этой опции. - - - &prompt.root; mount -u -o async /usr/obj - - - Как и раньше, если каталог - /usr/obj располагается не на - собственной файловой системе, то в примере замените его - на имя соответствующей точки монтирования. - - - - - - - - - Что мне делать, если что-то пошло не так? - - - + Скрупулезно проверьте, чтобы в вашем окружении не было - мешающих остатков от предыдущих построений. Это достаточно - просто. + мешающих остатков от предыдущих построений: &prompt.root; chflags -R noschg /usr/obj/usr &prompt.root; rm -rf /usr/obj/usr &prompt.root; cd /usr/src &prompt.root; make cleandir &prompt.root; make cleandir Да, команду make cleandir действительно нужно выполнять дважды. После этого повторите весь процесс снова, начиная с make buildworld. - Если у вас все еще есть проблемы, пришлите текст ошибки и - выдачу команды uname -a на адрес списка рассылки - &a.questions.name;. Будьте готовы ответить на другие вопросы о + Если у вас всё ещё есть проблемы, пришлите текст + ошибки и вывод команды uname -a в + &a.questions;. Будьте готовы ответить на другие вопросы о конфигурации вашей системы! - - - + + + - Отслеживание исходных текстов для нескольких машин + + Отслеживание исходных текстов для нескольких машин + - MikeMeyerТекст предоставил + + + Mike + Meyer + + Текст предоставил + - - NFS installing multiple machines - Если у вас множество машин, для которых вы хотите отслеживать одно - и то же дерево исходных текстов, то загрузка кода и перестроение системы - полностью выглядит как ненужная трата ресурсов: дискового пространства, - пропускной способности сети и процессорного времени. Так оно и есть, и - решением является выделение одной машины, которая выполняет основной - объём работы, в то время как остальные используют результаты работы - посредством NFS. В этом разделе описывается именно этот метод. + Если нужно отслеживать одно и то же дерево исходных текстов + на множестве машин, то загрузка кода и полное перестроение + системы на каждой из них выглядит как ненужная трата ресурсов: + дискового пространства, пропускной способности сети и + процессорного времени. Решением является выделение одной машины, + которая выполняет основной объём работы, в то время как остальные + используют результаты работы посредством NFS. + В этом разделе описывается именно этот метод. Для получения + информации об использовании NFS обращайтесь в + . - - Подготовка + Первым делом определите набор машин, на которых будет + выполняться единый набор программ, который мы будем называть + набором для построения. Каждая машина + может иметь собственное уникальное ядро, но они будут работать + с одними и теми же программами пользователя. Из этого набора + выберите машину, которая будет являться машиной + построения, на которой будут строиться ядро и + всё окружение. В идеальном случае это быстрая машина с + достаточно незагруженным CPU для выполнения + команд make buildworld и make + buildkernel. - Первым делом определите набор машин, на которых выполняется один - и тот же набор бинарных программ, и мы будем называть его - набором для построения. Каждая машина может иметь - собственное уникальное ядро, но они будут работать с одними и теми же - программами пользователя. Из этого набора выберите машину, которая - будет являться машиной для построения. Она станет - машиной, на которой будут строиться ядро и всё окружение. В идеальном - случае с достаточно незагруженным CPU для выполнения команд - make buildworld и make - buildkernel. Вам также потребуется выбрать машину, - которая будет тестовой для проверки обновлений - программного обеспечения прежде, чем оно будет запущено в промышленную - эксплуатацию. Это должна быть машина, которая - может быть в нерабочем состоянии достаточно долго. Это может быть - машина для построения, но не обязательно. + Выберите тестовую машину, которая + будет выполнять проверку обновлений программного обеспечения, + прежде чем они пойдут в работу. Это должна + быть машина, которая может находиться в нерабочем состоянии + достаточно долго. Это также может быть машина построения, но не + обязательно. - Все машины в этом наборе для построения должны монтировать каталоги - /usr/obj и - /usr/src с одной и той же машины и в одну и ту же - точку монтирования. В идеальном случае они располагаются на разных - дисках машины построения, но они могут также монтироваться по NFS на - этой машине. Если у вас имеется несколько наборов для построения, то - каталог /usr/src должен быть на машине построения, - а по NFS он должен быть смонтирован на остальных. + Всем машинам в этом наборе для построения нужно смонтировать + /usr/obj и /usr/src по + NFS с машины построения. В случае нескольких + наборов для построения каталог /usr/src + должен находиться на одной машине построения и монтироваться на + остальных по NFS. - Наконец, удостоверьтесь в том, что файлы - /etc/make.conf и - /etc/src.conf на всех машинах набора для - построения соответствуют машине построения. Это означает, что машина - построения должна строить все части основного системного набора, - которые будут устанавливаться на каждой машине из набора для - построения. Кроме того, у каждой машины построения должно быть задано - имя ядра посредством переменной KERNCONF в файле - /etc/make.conf, а машина построения должна - перечислить их все в переменной KERNCONF, причём - первым должно быть имя её собственного ядра. Машина построения должна - хранить конфигурационные файлы ядра каждой машины в каталоге - /usr/src/sys/arch/conf, - если на ней будут строиться соответствующие ядра.. - + Удостоверьтесь, что /etc/make.conf и + /etc/src.conf на всех машинах в заданном + наборе для построения согласуются с машиной построения. Это + означает, что машина построения должна строить все те части + базовой системы, которые будут устанавливаться на каждой машине + из набора для построения. Кроме того, у каждой машины + построения должно быть задано имя ядра в переменной + KERNCONF в /etc/make.conf, + и машина построения должна перечислить их все в переменной + KERNCONF, причём первым должно идти имя её + собственного ядра. Машина построения должна хранить + конфигурационные файлы ядра каждой машины в каталоге /usr/src/sys/arch/conf. - - Основные системные компоненты + Постройте ядро и всё окружение на машине построения так, + как это описано в , но ничего + не устанавливайте на самой машине. Вместо этого, установите + собранное ядро на тестовой машине. Для этого смонтируйте + /usr/src и /usr/obj + по NFS. Затем выполните команду + shutdown now для перехода в + однопользовательский режим, для того чтобы установить новое ядро + и всё окружение, после чего выполните команду + mergemaster обычным образом. После этих + действий перезагрузитесь для возврата к обычному режиму работы + в многопользовательском режиме. - Теперь, когда всё это сделано, вы готовы к построению. Постройте - ядро и всё окружение так, как это описано в на машине построения, но ничего не - устанавливайте. После того, как процесс построения завершится, - перейдите к тестовой машине и установите только что построенное ядро. - Если эта машина монтирует каталоги /usr/src и - /usr/obj посредством NFS, то при перезагрузке в - однопользовательский режим вам потребуется задействовать сеть и - смонтировать их. Самым простым способом сделать это является переход - во многопользовательский режим и запуск команды shutdown - now для перехода в однопользовательский режим. После этого - вы можете установить новое ядро и всё окружение, а затем выполнить - команду mergemaster обычным образом. После - выполнения этих действий перезагрузитесь для возвращения к обычному - режиму работы во многопользовательском режиме с этой машиной. + После того, как вы убедитесь в нормальной работе всего на + тестовой машине, проведите эту процедуру для установки нового + программного обеспечения на каждой из оставшихся машин в наборе + для построения. - После того, как вы убедитесь в нормальной работе всего на тестовой - машине, проведите ту же самую процедуру для установки нового - программного обеспечения на каждой из оставшихся машин из набора для - построения. - - - - Порты - - Те же самые идеи могут использоваться и для дерева портов. Первым - критическим шагом является монтирование /usr/ports - с одной и той же машины на всех компьютерах в наборе для построения. - Затем вы можете корректно настроить /etc/make.conf - для использования общего каталога с дистрибутивными файлами. Вы должны - задать переменную DISTDIR так, чтобы она указывала - на общедоступный каталог, доступный тому пользователю, который - отображается в пользователя root для ваших точек - монтирования NFS. Каждая машина - должна задавать WRKDIRPREFIX так, чтобы она - указывала на локальный каталог построения. Наконец, если вы - собираетесь строить и распространять пакеты, то должны задать - переменную PACKAGES так, чтобы она указывала на - каталог, соответствующий DISTDIR. - + Такой же подход можно использовать и для дерева портов. + Сперва нужно смонтировать /usr/ports по + NFS на всех машинах в наборе для построения. + Чтобы настроить /etc/make.conf для + использования общего каталога с дистрибутивными файлами, + задайте переменную DISTDIR так, чтобы она + указывала на общедоступный каталог, доступный для записи тому + пользователю, который отображается в пользователя root для точек монтирования + NFS. Каждая машина должна задавать + WRKDIRPREFIX так, чтобы она указывала на + локальный каталог, если порты будут собираться локально. Если + же пакеты будут распространяться, задайте на машине построения + переменную PACKAGES, чтобы она указывала на + каталог, соответствующий DISTDIR. Index: head/ru_RU.KOI8-R/books/handbook/ports/chapter.xml =================================================================== --- head/ru_RU.KOI8-R/books/handbook/ports/chapter.xml (revision 47963) +++ head/ru_RU.KOI8-R/books/handbook/ports/chapter.xml (revision 47964) @@ -1,1907 +1,1909 @@ Установка приложений: порты и пакеты АндрейЗахватовПеревод на русский язык: Обзор порты пакеты Вместе с &os; в составе базового комплекта системы поставляется богатый набор системный утилит. Однако для выполнения какой-то реальной работы очень скоро возникает необходимость в установке дополнительных приложений сторонних разработчиков. &os; дает две взаимодополняющих технологии для установки программного обеспечения сторонних разработчиков: Коллекция Портов &os; (для установки из исходных кодов) и пакеты (для установки из откомпилированных двоичных файлов). Любая из этих систем может быть использована для установки приложений с локальных носителей или прямо из сети. После чтения этой главы вы будете знать: Как устанавливать бинарные пакеты с программным обеспечением сторонних разработчиков. Как собирать из исходных кодов программное обеспечение сторонних разработчиков при помощи Коллекции Портов. Как удалять ранее установленные пакеты или порты. Как переопределить значения, используемые по умолчанию в Коллекции Портов. Как найти необходимое программное обеспечение. Как обновить установленные приложения. Обзор установки программного обеспечения Стандартная процедура установки программного обеспечения сторонних разработчиков на &unix;-систему выглядит примерно так: Загрузка программного обеспечения, которое может распространяться в форме исходных текстов или двоичных файлов. Распаковка программного обеспечения из дистрибутивного формата (обычно tar-архива, сжатого при помощи &man.compress.1;, &man.gzip.1; или &man.bzip2.1;). Поиск документации в файлах INSTALL, README или в каком-то файле из подкаталога doc/ и её чтение в поиске описания установки программного обеспечения. Если программное обеспечение распространялось в форме исходных текстов, его компиляция. Сюда может быть включено редактирования файла Makefile, запуск скрипта configure и другие работы. Тестирование и установка программного обеспечения. Если вы устанавливаете программный пакет, который не был специально перенесён на &os;, то вам может даже потребоваться редактировать код для того, чтобы он нормально заработал. &os; предоставляет две технологии, которые выполняют эту работу за вас. На момент написания таким образом доступно более &os.numports; сторонних приложений. Каждый пакет содержит уже откомпилированные копии всех команд приложения, а также все конфигурационные файлы и документацию. С файлом пакета можно работать командами управления пакетами &os;, такими как &man.pkg.add.1;, &man.pkg.delete.1;, &man.pkg.info.1; и так далее. Каждый порт &os; является набором файлов, предназначенных для автоматизации процесса компиляции приложения из исходного кода. Файлы, из которых состоит порт, содержат всю необходимую информацию для выполнения автоматической загрузки, извлечения, применения патчей, компиляции и установки приложения. Также система портов может использоваться для генерации пакетов, которые в последствии становятся объектом работы для команд управления пакетами &os;. Как пакеты, так и порты принимают во внимание зависимости. Если при инсталляции приложения при помощи &man.pkg.add.1; или Коллекции Портов будет обнаружено, что необходимая библиотека не была установлена, то первым делом будет выполнена установка библиотеки. Несмотря на то, что обе технологии весьма похожи, и пакеты, и порты имеют свои преимущества. Выберите технологию, которая соответствует вашим требованиям к установке конкретного приложения. Преимущества пакетов Сжатый tar-архив пакета обычно меньше, чем сжатый tar-архив, содержащий исходный код приложения. Пакеты не требуют времени на компиляцию. Для больших приложений, таких как Mozilla, KDE или GNOME, это может быть важно, особенно при работе на медленной системе. Пакеты не требуют понимания процесса компиляции программного обеспечения во &os;. Преимущества портов Пакеты обычно компилируются с консервативными параметрами, потому что они должны работать на максимальном количестве систем. При установке из порта становится возможным изменение опций компиляции. Некоторые приложения имеют опции времени компиляции, позволяющие определять необходимые функциональные возможности. К примеру, Apache может быть настроен с широким набором различных опций. В некоторых случаях для одного и того же приложения будут иметься несколько пакетов с разными предварительными настройками. Например, Ghostscript доступен как пакет ghostscript и как пакет ghostscript-nox11 — в зависимости от того, установлен ли сервер X11. Создание нескольких пакетов одного приложения быстро становится бессмысленным, если приложение имеет более одного-двух параметров компиляции. Условия лицензирования некоторого программного обеспечения запрещают распространение в двоичном виде. Оно должно распространяться в виде исходного кода и компилироваться конечным пользователем. Некоторые пользователи не доверяют дистрибутивам в двоичном виде или предпочитают прочесть исходный код и попытаться найти потенциальные проблемы. Если у вас есть собственные патчи, вам нужен исходный код для того, чтобы их применять. Чтобы отслеживать обновления портов, подпишитесь на &a.ports; и &a.ports-bugs;. Перед установкой любого приложения необходимо зайти на http://vuxml.freebsd.org/, где находится информация по вопросам безопасности приложений, или установить ports-mgmt/portaudit. После установки наберите portaudit -F -a для проверки всех установленных приложений на наличие известных уязвимостей. В оставшейся части главы будет рассказано, как использовать пакеты и порты для установки и управления программным обеспечением сторонних разработчиков во &os;. Поиск программного обеспечения Список имеющихся для &os; приложений постоянно растет. Существует несколько способов найти то, что нужно: На сайте &os; по адресу http://www.FreeBSD.org/ports/ поддерживается обновляемый список всех имеющихся приложений для &os;, в котором можно выполнять поиск. Поиск порта можно выполнить либо по имени приложения, либо по названию категории. FreshPorts Dan Langille поддерживает сайт FreshPorts, на котором есть удобный поиск, а также на нём отслеживаются изменения в приложениях из Коллекции Портов. Зарегистрированным пользователям доступна возможность создавать собственные списки наблюдаемых портов и автоматически получать оповещения об их обновлениях по электронной почте. Freecode Если вы не знаете названия нужного вам приложения, попытайтесь воспользоваться сайтом типа Freecode (http://www.freecode.com/) для поиска приложения, а затем возвратитесь на сайт &os;, чтобы проверить, есть ли порт для этого приложения. Если вам необходимо определить, в какой категории находится порт, наберите whereis file, где file - программа, которую вы хотите установить: &prompt.root; whereis lsof lsof: /usr/ports/sysutils/lsof Как вариант, можно воспользоваться &man.echo.1;: &prompt.root; echo /usr/ports/*/*lsof* /usr/ports/sysutils/lsof Учтите, что в выводе также будут присутствовать совпадающие с шаблоном имена файлов, сохраненные в /usr/ports/distfiles. Ещё одним способом поиска программного обеспечения является использование встроенной возможности поиска в Коллекции Портов. Чтобы ею воспользоваться, зайдите в /usr/ports и выполните команду make search name=program-name, где program-name – это название программы, которую вы хотите найти. Например, если вы ищете lsof: &prompt.root; cd /usr/ports &prompt.root; make search name=lsof Port: lsof-4.56.4 Path: /usr/ports/sysutils/lsof Info: Lists information about open files (similar to fstat(1)) Maint: obrien@FreeBSD.org Index: sysutils B-deps: R-deps: Команда make search выполняет поиск в файле с индексной информацией. Если получено сообщение, что требуется файл INDEX, запустите make fetchindex для загрузки актуального индексного файла. После загрузки файла INDEX команда make search сможет выполнить запрошенный поиск. Строка Path: указывает, где находится порт. Чтобы получить лаконичный вывод, задайте цель quicksearch: &prompt.root; cd /usr/ports &prompt.root; make quicksearch name=lsof Port: lsof-4.87.a,7 Path: /usr/ports/sysutils/lsof Info: Lists information about open files (similar to fstat(1)) Для выполнения более глубокого поиска используйте make search key=string или make quicksearch key=string, где string представляет собой некоторый текст, относящийся к искомому порту. Текст ищется в комментариях, описаниях или зависимостях. Этот способ можно использовать для поиска портов, связанных с некоторой темой, когда название программы неизвестно. В обоих случаях (search и quicksearch) строка поиска нечувствительна к регистру. Поиск LSOF приводит к тому же самому результату, что и поиск lsof. Использование бинарных пакетов ChernLeeТекст предоставил Во &os; есть несколько утилит для управления пакетами: Для установки, удаления и получения перечня установленных пакетов на работающей системе может быть запущена утилита sysinstall. Обратитесь к за более детальной информацией. Утилиты командной строки для управления пакетами, которые являются темой данного раздела. Установка пакета пакеты установка pkg_add Для установки бинарного пакета &os; из локального файла или с сервера в сети используйте &man.pkg.add.1;. Загрузка пакета вручную и его локальная установка &prompt.root; ftp -a ftp2.FreeBSD.org Connected to ftp2.FreeBSD.org. 220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready. 331 Guest login ok, send your email address as password. 230- 230- This machine is in Vienna, VA, USA, hosted by Verio. 230- Questions? E-mail freebsd@vienna.verio.net. 230- 230- 230 Guest login ok, access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd /pub/FreeBSD/ports/packages/sysutils/ 250 CWD command successful. ftp> get lsof-4.56.4.tgz local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz 200 PORT command successful. 150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes). 100% |**************************************************| 92375 00:00 ETA 226 Transfer complete. 92375 bytes received in 5.60 seconds (16.11 KB/s) ftp> exit &prompt.root; pkg_add lsof-4.56.4.tgz Если у вас нет источника пакетов, например, такого как набор CD-ROM дисков с &os;, то добавьте опцию для &man.pkg.add.1;. Утилита автоматически определит правильный формат объектных файлов и релиз, а затем загрузит и установит пакет с сервера FTP без какого-либо дополнительного взаимодействия с пользователем. pkg_add &prompt.root; pkg_add -r lsof Чтобы задействовать альтернативное зеркало пакетов &os;, укажите его адрес в переменной окружения PACKAGESITE. Для загрузки файлов утилита &man.pkg.add.1; использует &man.fetch.3;. Последняя учитывает значения различных переменных окружения, включая FTP_PASSIVE_MODE, FTP_PROXY и FTP_PASSWORD. Если вы находитесь за сетевым экраном, или для работы с FTP/HTTP вам необходимо использовать прокси, то определите соответствующие переменные. Обратитесь к справочной странице по &man.fetch.3; для получения полного списка переменных. Заметьте, что в примере выше вместо lsof-4.56.4 используется lsof. В случае загрузки из сети номер версии в имени пакета должен быть опущен. Если вы используете &os.current; или &os.stable;, то утилита &man.pkg.add.1; загрузит последнюю версию устанавливаемой программы. Если же вы используете версию -RELEASE, то &man.pkg.add.1; установит версию пакета, который был собран для конкретного релиза. Это поведение возможно изменить переопределив значение PACKAGESITE. Например, в системе &os; 8.1-RELEASE &man.pkg.add.1; по умолчанию попытается скачать пакеты с ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.1-release/Latest/. Чтобы обязать &man.pkg.add.1; загружать пакеты для &os; 8-STABLE, присвойте PACKAGESITE значение ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8-stable/Latest/. Файлы пакетов распространяются в форматах .tgz и .tbz. Пакеты находятся по адресу ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages или в каталоге /packages дистрибутива &os; на DVD. Структура каталогов с пакетами подобна тому, как организовано дерево /usr/ports. Каждая категория имеет собственный каталог, и каждый пакет помещается в каталог All. Управление пакетами пакеты управление Для вывода перечня установленных пакетов и их описаний может быть задействована &man.pkg.info.1;. pkg_info &prompt.root; pkg_info colordiff-1.0.13 A tool to colorize diff output docbook-1.2 Meta-port for the different versions of the DocBook DTD ... Утилита &man.pkg.version.1; выводит отчёт о версиях всех установленных пакетов и сравнивает их версии с текущими версиями соответствующих приложений, доступных из локального дерева портов. pkg_version &prompt.root; pkg_version colordiff = docbook = ... Символы во второй колонке указывают сравнительную разницу в возрасте установленной версии и версии, находящейся в локальном дереве портов. Символ Значение = Версия установленного пакета соответствует версии, находящейся в локальном дереве портов. < Версия установленного пакета старее, чем та, что имеется в локальном дереве портов. > Версия установленного пакета новее чем та, что есть в дереве портов. Скорее всего, локальное дерево портов устарело. ? В индексном файле портов установленный пакет не найден. Это может случиться если установленный порт был переименован или удалён из Коллекции Портов. * Имеется несколько версий пакета. ! Установленный пакет есть в индексном файле, но по какой-то причине утилите pkg_version не удалось сравнить номер версии установленного пакета и соответствующей записи в файле. Удаление пакета pkg_delete пакеты удаление Для удаления ранее установленных пакетов с программным обеспечением используйте утилиту &man.pkg.delete.1;. &prompt.root; pkg_delete xchat-1.7.1 Следует отметить, что для &man.pkg.delete.1; требуется полное имя пакета и номер версии; вышеприведенная команда не сработала бы, если б ей было указано xchat вместо xchat-1.7.1. Для нахождения версии установленного пакета задействуйте утилиту &man.pkg.version.1;. Или же, напечатайте групповой символ (wildcard) вместо номера версии: &prompt.root; pkg_delete xchat\* в этом случае будут удалены все пакеты, имена которых начинаются на xchat. Разное Вся информация о пакетах, включая перечни файлов и описания каждого установленного пакета, хранится в каталоге /var/db/pkg. Использование <application>pkgng</application> для управления бинарными пакетами pkgng — это усовершенствованный инструмент, пришедший на смену традиционным утилитам управления пакетами &os;. Он обладает множеством функциональных возможностей, ускоряющих и облегчающих работу с бинарными пакетами. Первый релиз pkgng состоялся в августе 2012 года. pkgng не является заменой для утилит управления портами, таких как ports-mgmt/portmaster или ports-mgmt/portupgrade. В то время, как ports-mgmt/portmaster и ports-mgmt/portupgrade позволяют устанавливать приложения сторонних разработчиков как из бинарных пакетов, так и из Коллекции Портов, утилита pkgng дает возможность устанавливать приложения исключительно из бинарных пакетов. Начало работы с <application>pkgng</application> Во &os; 9.1 и более поздние включена программа "самонастройки" ("bootstrap") pkgng. Она скачивает и устанавливает основную утилиту pkgng. Для запуска самонастройки, выполните: &prompt.root; /usr/sbin/pkg Для более ранних версий &os; утилиту pkgng необходимо установить из Коллекции Портов или из бинарных пакетов. Для установки pkgng из порта, запустите следующее: &prompt.root; cd /usr/ports/ports-mgmt/pkg &prompt.root; make &prompt.root; make install clean Для установки из бинарного пакета, выполните: &prompt.root; pkg_add -r pkg Действующие инсталляции &os; требуют преобразования базы данных установленных пакетов утилиты pkg_install к новому формату. Для выполнения конвертирования, запустите: &prompt.root; pkg2ng Вышеприведенный шаг не требуется для новых инсталляций, в которых не было установлено программ сторонних разработчиков. Этот шаг необратим. После перевода базы данных установленных пакетов к формату pkgng утилитами pkg_install более пользоваться не следует. В процессе конвертирования базы данных установленных пакетов могут возникать сообщения об ошибках. На данном этапе их можно игнорировать, так как перечень программ сторонних разработчиков, информация о которых не была преобразована, будет перечислен по завершении работы pkg2ng. Над этим перечнем придется поработать вручную. Чтобы убедиться, что Коллекция Портов &os; регистрирует новые программы при помощи pkgng, а не pkg_install, для версий &os;, предшествующих 10.X, в файл /etc/make.conf необходимо внести следующую запись: WITH_PKGNG= yes Настройка окружения <application>pkgng</application> Система управления пакетами pkgng при выполнении большинства операций обращается к пакетному репозиторию. Адрес используемого по умолчанию репозитория указан в /usr/local/etc/pkg.conf или в переменной окружения PACKAGESITE. Последняя переопределяет адрес, указанный в конфигурационном файле. Дополнительные опции конфигурации pkgng описаны в pkg.conf(5). Основные операции <application>pkgng</application> Информацию по работе с pkgng можно найти на странице справочника pkg(8), или в выводе утилиты pkg, запущенной без аргументов. Каждый аргумент команды pkgng описан на соответствующей странице справочника. Например, чтобы ознакомиться со страницей справочника для pkg install, запустите любую из двух нижеследующих команд: &prompt.root; pkg help install &prompt.root; man pkg-install Получение информации об установленных пакетах при помощи <application>pkgng</application> Информация об установленных в системе пакетах может быть отображена при помощи команды pkg info. Подобно до &man.pkg.info.1;, в выводе перечисляются версии и описания всех установленных пакетов. Если необходима информация о конкретном пакете, выполните: &prompt.root; pkg info packagename Например, для получения версии pkgng, который установлен в системе, запустите: &prompt.root; pkg info pkg pkg-1.0.2 New generation package manager Установка и удаление пакетов при помощи <application>pkgng</application> В общем, бинарные пакеты устанавливаются при помощи: &prompt.root; pkg install packagename Команда pkg install обращается к пакетному репозиторию, это упоминалось в . Команда pkg-add(8), напротив, не выполняет обращений к пакетному репозиторию, а также игнорирует переменную PACKAGESITE. Как следствие — зависимости не отслеживаются, и необходимые зависимые компоненты не скачиваются с удаленного источника. В этом разделе описана работа с pkg install. За подробностями работы с pkg add обратитесь к справочной странице по pkg-add(8). Утилита pkg install может устанавливать дополнительные бинарные пакеты. Например, для установки curl, выполните: &prompt.root; pkg install curl Updating repository catalogue Repository catalogue is up-to-date, no need to fetch fresh copy The following packages will be installed: Installing ca_root_nss: 3.13.5 Installing curl: 7.24.0 The installation will require 4 MB more space 1 MB to be downloaded Proceed with installing packages [y/N]: y ca_root_nss-3.13.5.txz 100% 255KB 255.1KB/s 255.1KB/s 00:00 curl-7.24.0.txz 100% 1108KB 1.1MB/s 1.1MB/s 00:00 Checking integrity... done Installing ca_root_nss-3.13.5... done Installing curl-7.24.0... done Новый пакет, как и любые дополнительные пакеты, которые были установлены как зависимости, перечисляются в списке установленных пакетов: &prompt.root; pkg info ca_root_nss-3.13.5 The root certificate bundle from the Mozilla Project curl-7.24.0 Non-interactive tool to get files from FTP, GOPHER, HTTP(S) servers pkg-1.0.2 New generation package manager Пакеты, в которых более нет необходимости, могут быть удалены при помощи pkg delete. Например, если выяснится, что curl не нужен: &prompt.root; pkg delete curl The following packages will be deleted: curl-7.24.0_1 The deletion will free 3 MB Proceed with deleting packages [y/N]: y Deleting curl-7.24.0_1... done Обновление установленных пакетов при помощи <application>pkgng</application> Пакеты, версии которых устарели, можно найти при помощи команды pkg version. Версии установленных пакетов сравниваются с версиями приложений из локального дерева портов, а в случае отсутствия портов pkg-version(8) обращается к удаленному репозиторию пакетов. При помощи pkgng можно обновлять пакеты до новых версий. Предположим, вышла новая версия curl. Установленный пакет можно обновить к новой версии, выполнив: &prompt.root; pkg upgrade Updating repository catalogue repo.txz 100% 297KB 296.5KB/s 296.5KB/s 00:00 The following packages will be upgraded: Upgrading curl: 7.24.0 -> 7.24.0_1 1 MB to be downloaded Proceed with upgrading packages [y/N]: y curl-7.24.0_1.txz 100% 1108KB 1.1MB/s 1.1MB/s 00:00 Checking integrity... done Upgrading curl from 7.24.0 to 7.24.0_1... done Аудит безопасности пакетов при помощи <application>pkgng</application> Изредка в приложениях из Коллекции Портов обнаруживаются уязвимости. В pkgng встроена возможность выполнять аудит безопасности, действующая подобно приложению из ports-mgmt/portaudit. Для выполнения аудита установленных в систему программ, выполните: &prompt.root; pkg audit -F Сложные вопросы работы с <application>pkgng</application> Автоматическое удаление неиспользуемых зависимостей при помощи <application>pkgng</application> После удаления пакета в системе могут остаться неиспользуемые зависимости, наподобие security/ca_root_nss из примера выше. Такие пакеты остаются установленными, несмотря на то, что они более не требуются другим пакетам. Определить и удалить неиспользуемые пакеты, которые были установлены как зависимости, можно при помощи: &prompt.root; pkg autoremove Packages to be autoremoved: ca_root_nss-3.13.5 The autoremoval will free 723 kB Proceed with autoremoval of packages [y/N]: y Deinstalling ca_root_nss-3.13.5... done Резервное копирование базы данных установленных пакетов <application>pkgng</application> В отличие от традиционной системы управления пакетами, pkgng располагает своим собственным механизмом резервного копирования базы данных. Для ручного создания резервной копии базы данных установленных пакетов, выполните: &prompt.root; pkg backup -d pkgng.db Замените имя файла pkgng.db на более подходящее. В дополнение, pkgng содержит скрипт &man.periodic.8;, позволяющий выполнять ежедневное автоматическое копирование базы данных установленных пакетов. Для активации данной возможности задайте переменной daily_backup_pkgng_enable значение YES в файле &man.periodic.conf.5;. Для предотвращения периодического запуска аналогичного скрипта системы pkg_install, также выполняющего резервное копирование базы данных установленных пакетов, задайте переменной daily_backup_pkgdb_enable значение NO в файле &man.periodic.conf.5;. Для восстановления содержимого базы данных установленных пакетов из резервной копии, выполните: &prompt.root; pkg backup -r /path/to/pkgng.db Удаление копий устаревших пакетов в системе <application>pkgng</application> По умолчанию, pkgng сохраняет копии установленных бинарных пакетов в каталог, указанный переменной PKG_CACHEDIR в pkg.conf(5). При обновлении пакетов командой pkg upgrade старые версии обновленных пакетов автоматически не удаляются. Для удаления устаревших версий бинарных пакетов из кеш-каталога, выполните: &prompt.root; pkg clean Изменение метаданных пакетов <application>pkgng</application> Со временем программы из Коллекции Портов могут претерпевать изменения старшего (major) номера версии. В отличие от pkg_install, pkgng располагает встроенной командой для обновления информации о происхождении (origin) пакета. Например, изначально порт lang/php5 был версии 5.3. Позже этот порт был переименован в lang/php53, а под именем lang/php5 был создан порт версии 5.4. Утилитам системы pkg_install для обновления информации о происхождении (origin) пакета в собственной базе данных установленных пакетов потребовалась бы помощь дополнительного программного обеспечения, такого как ports-mgmt/portmaster. В отличие от ports-mgmt/portmaster и ports-mgmt/portupgrade для портов, порядок перечисления новой и старой версий отличаются. Для pkgng необходим следующий порядок: &prompt.root; pkg set -o category/oldport:category/newport Например, в вышеприведенном случае для замены информации о происхождении пакета, выполните: &prompt.root; pkg set -o lang/php5:lang/php53 Еще один пример: для изменения информации о происхождении пакета с lang/ruby18 на lang/ruby19, выполните: &prompt.root; pkg set -o lang/ruby18:lang/ruby19 И последний пример: для замены информации о происхождении пакета разделяемой библиотеки libglut с graphics/libglut на graphics/freeglut, запустите: &prompt.root; pkg set -o graphics/libglut:graphics/freeglut Выполняя замену информации о происхождении пакетов, в большинстве случаев также требуется переустановить пакеты, которые зависят от изменившегося пакета. Для принудительной переустановки зависящих пакетов, выполните: &prompt.root; pkg install -Rf graphics/freeglut Использование Коллекции Портов В этом разделе даны базовые сведения по использованию Коллекции Портов для установки или удаления программ. Детальное описание существующих целей make и переменных окружения находится в &man.ports.7;. В июле 2012 года проект Портов &os; сменил систему контроля версий: на смену CVS пришел Subversion. Рекомендуемым способом работы с деревом портов является Portsnap. Пользователи, которым требуется локальная подгонка портов (то есть, поддержание дополнительных локальных патчей), возможно предпочтут непосредственное использование Subversion. 28 февраля 2013 года сервис CVSup был выведен из эксплуатации, и дальнейшее использование последнего не рекомендуется. Получение Коллекции Портов Коллекция Портов — это набор файлов, состоящий из Makefile, патчей и файлов описаний, хранимых в /usr/ports. Этот набор файлов предназначен для построения и установки приложений во &os;. В нижеследующих разделах описано несколько способов получения Коллекции Портов на тот случай, если Коллекция не была установлена во время инсталляции &os;. Метод Portsnap Portsnap это быстрый и удобный инструмент для получения Коллекции Портов, и в то же время — - предпочитаемый выбор большинства пользователей. За подробным + предпочитаемый выбор большинства пользователей. Скачайте сжатый снэпшот Коллекции Портов в /var/db/portsnap. &prompt.root; portsnap fetch Если вы запускаете Portsnap впервые, извлеките снэпшот в /usr/ports: &prompt.root; portsnap extract По завершении первого запуска Portsnap, как было показано выше, /usr/ports может быть обновлен при помощи: &prompt.root; portsnap fetch &prompt.root; portsnap update Метод Subversion Если необходим контроль за деревом портов (например, для поддержания локальных изменений), то для получения Коллекции Портов может быть задействован Subversion. Обратитесь к Subversion Primer за детальным описанием Subversion. Для создания рабочей копии дерева портов необходимо иметь установленный Subversion. Если порты есть в наличии, то установите Subversion выполнив следующее: &prompt.root; cd /usr/ports/devel/subversion &prompt.root; make install clean Если портов нет, то Subversion может быть установлен при помощи системы пакетов: &prompt.root; pkg_add -r subversion Если же для управления пакетами используется pkgng, то Subversion устанавливается при помощи следующей команды: &prompt.root; pkg install subversion Создайте рабочую копию дерева портов. Для ускорения процесса вместо svn0.us-east.FreeBSD.org укажите ближайшее к вам зеркало Subversion. Коммиттерам необходимо сначала прочитать Subversion Primer, чтобы удостовериться, что выбран корректный протокол. &prompt.root; svn checkout https://svn0.us-east.FreeBSD.org/ports/head /usr/ports При наличии рабочей копии /usr/ports все последующие обновления выполняются просто: &prompt.root; svn update /usr/ports Метод с использованием Sysinstall Этот метод подразумевает использование sysinstall для установки Коллекции Портов из установочного носителя. Учтите, что в итоге будет установлена старая копия Коллекции Портов, которая была актуальна на момент создания релиза. Если у вас есть подключение к Интернет, то вам необходимо пользоваться одним из вышеупомянутых методов. Работая как пользователь root, запустите sysinstall так, как это показано ниже: &prompt.root; sysinstall Опуститесь вниз и выберите Configure, нажмите Enter Опуститесь вниз и выберите Distributions, затем нажмите Enter Опуститесь вниз к пункту ports, нажмите клавишу Пробел Поднимитесь вверх к Exit, нажмите Enter Выберите желаемый носитель для установки, например, CDROM, FTP и так далее. Перейдите на пункт меню Exit и нажмите Enter. Нажмите X для выхода из sysinstall. Миграция с <application>CVSup</application>/<application>csup</application> на <application>portsnap</application> Начиная с 28 февраля 2013 года дерево портов более не экспортируется в CVS, поэтому CVSup и csup не будут доставлять обновления для дерева портов. Миграция на Portsnap Для миграции потребуется около 1 ГБ дискового пространства в /usr, в добавок, для Portsnap необходимо около 150 МБ дискового пространства в /var. Если у вас настроено автоматическое обновление портов, например при помощи задания &man.cron.8;, запускающего CVSup или csup, то его необходимо будет отключить. Переместите существующее дерево портов во временный каталог: &prompt.root; mv /usr/ports /usr/ports.old При помощи Portsnap скачайте новое дерево портов и извлеките его в /usr/ports: &prompt.root; portsnap fetch extract Переместите дистрибутивные файлы (distfiles) и сохраненные пакеты в новое дерево портов: &prompt.root; mv /usr/ports.old/distfiles /usr/ports &prompt.root; mv /usr/ports.old/packages /usr/ports Удалите старое дерево портов: &prompt.root; rm -rf /usr/ports.old Если ранее использовался CVSup, то сейчас его можно удалить: &prompt.root; pkg_delete -r -v cvsup-without-gui-\* Пользователям pkgng необходимо запустить следующую команду: &prompt.root; pkg delete cvsup-without-gui + Установка портов порты установка Скелетом порта является набор файлов, который указывает вашей системе &os;, как откомпилировать и установить программу. Скелет каждого порта включает: Makefile: этот файл содержит различные директивы, которые определяют, как приложение должно быть откомпилировано и куда в вашей системе оно должно быть установлено. distinfo: этот файл содержит информацию о файлах, которые должны быть загружены для сборки порта, а также их контрольные суммы (&man.sha256.1;) для проверки того, что файлы не были повреждены в процессе загрузки. files: этот каталог содержит патчи, необходимые для компиляции и установки программы в вашей системе &os;. Этот каталог также может содержать другие файлы, используемые для построения порта. pkg-descr: этот файл содержит более подробное описание программы. pkg-plist: это список всех файлов, которые будут установлены портом. В нем также содержатся указания системе портов на удаление определенных файлов во время удаления порта. В некоторых портах присутствуют и другие файлы, такие, как pkg-message. Система портов использует эти файлы для обработки особых ситуаций. Если вы хотите узнать более подробно об этих файлах и о портах вообще, то обратитесь к Руководству по созданию портов для FreeBSD. Порт не содержит собственно исходного кода, также известного как дистрибутивный файл (distfile). Способ распространения исходного кода определяется предпочтениями автора программы. Ниже описаны два способа установки порта &os;. Для установки портов вы должны войти в систему как пользователь root. Перед установкой любого порта необходимо убедиться в наличии свежей Коллекции Портов и заглянуть на http://vuxml.freebsd.org/, где могут освещаться вопросы безопасности, связанные с конкретным портом. Если у вас установлен ports-mgmt/portaudit, то перед установкой нового порта запустите portaudit -F для загрузки свежей базы данных уязвимостей. Проверка безопасности и обновление базы данных будут выполняться при ежедневной проверке безопасности системы. За дальнейшей информацией обратитесь к страницам справочника &man.portaudit.1; и &man.periodic.8;. Использование Коллекции Портов предполагает наличие работающего подключения к Интернет. В противном случае вам придется раздобыть и поместить копию дистрибутивного файла в каталог /usr/ports/distfiles вручную. Первым делом переместитесь в каталог устанавливаемого порта: &prompt.root; cd /usr/ports/sysutils/lsof Для компиляции (или построения — build) порта наберите команду make. Вы должны увидеть вывод команды, подобный следующему: &prompt.root; make >> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/. >> Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/. ===> Extracting for lsof-4.57 ... [вывод команды при распаковке опущен] ... >> Checksum OK for lsof_4.57D.freebsd.tar.gz. ===> Patching for lsof-4.57 ===> Applying FreeBSD patches for lsof-4.57 ===> Configuring for lsof-4.57 ... [вывод команды при конфигурации опущен] ... ===> Building for lsof-4.57 ... [вывод команды при компиляции опущен] ... &prompt.root; По завершении компиляции вы снова вернетесь к приглашению командного процессора. Следующим шагом является установка порта при помощи make install: &prompt.root; make install ===> Installing for lsof-4.57 ... [вывод команды при установке опущен] ... ===> Generating temporary packing list ===> Compressing manual pages for lsof-4.57 ===> Registering installation for lsof-4.57 ===> SECURITY NOTE: This port has installed the following binaries which execute with increased privileges. &prompt.root; На этом этапе, получив приглашение оболочки, вы уже можете запустить установленное приложение. Так как lsof является программой, которая запускается с повышенными правами, выдаётся предупреждение о безопасности. Во время построения и установки портов следует обращать внимание на любые возникающие предупреждения. Хорошей идеей является удаление рабочего подкаталога, содержащего временные файлы, использовавшиеся во время компиляции. Такое действие помогает беречь дисковое пространство и минимизирует вероятность возникновения проблем в дальнейшем, при обновлении до более новой версии порта. &prompt.root; make clean ===> Cleaning for lsof-4.57 &prompt.root; Вы можете сэкономить два лишних шага, просто выдав команду make install clean вместо make, make install и последующей make clean в трех отдельных шагах. Установка порта единственной командой make install чревата возможными частыми остановками процесса инсталляции из-за ожидания вмешательства пользователя: некоторым портам требуется ввод опций. Чтобы избежать траты времени, особенно для портов с многими зависимостями, запустите сначала make config-recursive чтобы выполнить конфигурирование всех опций за один заход. Далее, запустите make install [clean]. Когда используется config-recursive, перечень подлежащих настройке портов собирается целью all-depends-list команды &man.make.1;. Часто рекомендуется повторять запуск make config-recursive до тех пор, пока не будут определены все опции зависимых портов, а меню &man.dialog.1; выбора опций портов появляться перестанут. При этом можно быть уверенным, что все опции были настроены как и намеревалось. Некоторые командные процессоры для ускорения поиска исполняемых файлов и команд кэшируют имена программ, доступных для вызова из каталогов, перечисленных в переменной окружения PATH. Если вы используете tcsh, то вам может потребоваться набрать rehash, после чего свежеустановленную программу можно будет вызывать без указания полного пути. Для командного интерпретатора sh выполните hash -r. Дополнительную информацию можно найти в документации к вашему командному процессору. В некоторых имеющихся в продаже комплектах DVD от третьих лиц, таких как the FreeBSD Toolkit от FreeBSD Mall, содержатся дистрибутивные файлы (distfiles). Их можно использовать с Коллекцией Портов. Смонтируйте DVD в /cdrom. Если вы используете иную точку монтирования, укажите её в переменной &man.make.1; CD_MOUNTPTS. Если необходимые для построения порта дистрибутивные файлы находятся на диске, то они будут задействованы автоматически. Лицензии некоторых портов не позволяют помещать их на DVD. Причиной тому может служить обязательность заполнения регистрационной формы перед загрузкой, или запрет на дальнейшее распространение. Если вы хотите установить порт, которого нет на DVD, вам нужно иметь подключение к Интернет. Для загрузки файлов система портов использует утилиту &man.fetch.1;, которая проверяет значения некоторых переменных окружения, включая FTP_PASSIVE_MODE, FTP_PROXY и FTP_PASSWORD. Если вы находитесь за сетевым экраном или для работы с FTP/HTTP вам необходимо использовать прокси, то определите соответствующие переменные. Обратитесь к справочной странице по &man.fetch.3; для получения полного списка переменных. Пользователям, которые не могут быть постоянно подключены к сети, поможет команда make fetch. Запустите эту команду в каталоге /usr/ports, и требуемые файлы будут загружены. Эта команда также работает и с вложенными категориями, например: /usr/ports/net. Заметьте, что если порт имеет зависимости от библиотек или других портов, то команда не будет загружать дистрибутивные файлы для зависимых портов. Для загрузки всех зависимых дистрибутивных файлов задействуйте команду make fetch-recursive. Вы можете построить все порты в категории за раз, запустив команду make в каталоге верхнего уровня. Однако это опасно, так как некоторые порты не могут сосуществовать. В других случаях некоторые порты могут устанавливать два различных файла с одним и тем же именем. В некоторых редких случаях пользователям необходимо получить tar-архивы с сайтов, отличающихся от указанных по умолчанию в MASTER_SITES. Вы можете переопределить значение MASTER_SITES посредством следующей команды: &prompt.root; cd /usr/ports/directory &prompt.root; make MASTER_SITE_OVERRIDE= \ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch В этом примере значение переменной MASTER_SITES изменено на ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/. Некоторые порты позволяют указывать опции, которые включают или выключают построение отдельных частей приложения, изменяют некоторые параметры безопасности, а также задают прочие настройки. Примерами таких портов могут служить: www/firefox, security/gpgme и mail/sylpheed-claws. Если для порта существуют опции компиляции, то перед началом построения будет отображено меню. Переназначение рабочего и целевого каталогов При помощи переменных WRKDIRPREFIX и PREFIX можно переопределить назначаемые по умолчанию рабочий и целевой каталоги. Например: &prompt.root; make WRKDIRPREFIX=/usr/home/example/ports install будет компилировать порт в каталоге /usr/home/example/ports, а установит всё в /usr/local. &prompt.root; make PREFIX=/usr/home/example/local install будет компилировать порт в каталоге /usr/ports, а установит в /usr/home/example/local. И, конечно же, &prompt.root; make WRKDIRPREFIX=../ports PREFIX=../local install использует обе возможности. Альтернативным способом является задание этих каталогов в переменных окружения. Обратитесь к страницам справки по вашему командному процессору для получения инструкций о том, как установить переменные окружения. Повторная настройка опций портов Некоторые порты предоставляют ncurses-меню, содержащее опции построения. Будучи однажды успешно определены, опции сохраняются, и при повторном построении порта меню не вызывается. Для изменения сохраненных опций существует несколько способов повторного вызова меню. Один из них — зайти в каталог порта и набрать make config. Второй способ — запустить команду make showconfig. Еще один способ — выполнить команду make rmconfig, которая удалит все ранее отмеченные опции и позволит вам начать конфигурирование сначала. Эти и другие способы детально описаны на странице &man.ports.7;. Удаление установленных портов порты удаление Установленные порты и пакеты удаляются при помощи команды &man.pkg.delete.1;: &prompt.root; pkg_delete lsof-4.57 Обновление портов порты обновление Прежде всего, при помощи &man.pkg.version.1; просмотрите, нет ли в Коллекции Портов более новых версий установленных приложений: &prompt.root; pkg_version -v Прочитайте <filename>/usr/ports/UPDATING</filename> После обновления Коллекции Портов, и перед тем, как обновить приложение из порта, сверьтесь с файлом /usr/ports/UPDATING. В нем дана информация по различным вопросам и дополнительным шагам, которые могут быть необходимы для обновления порта, включая информацию о таких вещах как изменения форматов файлов, изменения в расположении конфигурационных файлов, или другие нестыковки с предыдущими версиями. Если UPDATING противоречит чему-либо, написанному в этом документе, то доверьтесь информации из UPDATING. Обновление Портов при помощи Portupgrade portupgrade Утилита portupgrade создана для простого обновления установленных портов. Она доступна из порта ports-mgmt/portupgrade. Установите её как и любой иной порт при помощи команды make install clean: &prompt.root; cd /usr/ports/ports-mgmt/portupgrade &prompt.root; make install clean Проверьте перечень установленных портов командой pkgdb -F и устраните все несоответствия, о которых сообщит утилита. Хорошей идеей является выполнение этого действия регулярно, перед каждым обновлением. Используйте portupgrade -a для обновления всех устаревших портов, установленных в вашей системе. Добавьте флаг если вы желаете получать запрос на каждый обновляемый порт. &prompt.root; portupgrade -ai Для обновления конкретного приложения, а не всех установленных портов, запустите portupgrade pkgname. Включите флаг при необходимости обновить все порты, требуемые данным приложением. &prompt.root; portupgrade -R firefox Для использования при установке пакетов, а не портов, укажите флаг . С этим параметром portupgrade будет искать пакеты в локальных каталогах, указанных в переменной окружения PKG_PATH, а если не найдет их, то загрузит с удаленного сайта. Если пакеты не могут быть найдены локально или загружены удаленно, portupgrade использует порты. Чтобы запретить использование портов, укажите . &prompt.root; portupgrade -PP gnome2 Для простой загрузки дистрибутивных файлов без построения или установки чего бы то ни было, задайте флаг . Дополнительную информацию можно получить на странице справки по утилите &man.portupgrade.1;. Обновление портов при помощи <application>portmaster</application> portmaster Утилита ports-mgmt/portmaster — это еще один инструмент для обновления установленных портов. Утилита portmaster опирается на возможности базовой системы и не зависит от других портов. Она использует информацию из /var/db/pkg/ для определения портов, подлежащих обновлению. Для установки утилиты выполните следующее: &prompt.root; cd /usr/ports/ports-mgmt/portmaster &prompt.root; make install clean Portmaster делит порты на четыре категории: Корневые порты: не зависят от других портов и нет портов, зависимых от корневых; Стволовые порты: не зависят от других портов, но есть порты, зависящие от стволовых; Веточные порты: зависят от других портов и есть порты, зависящие от веточных; Листьевые порты: зависят от других портов, но нет портов, зависящих от листьевых. Чтобы проверить наличие обновлений для всех установленных портов, задайте утилите флаг : &prompt.root; portmaster -L ===>>> Root ports (No dependencies, not depended on) ===>>> ispell-3.2.06_18 ===>>> screen-4.0.3 ===>>> New version available: screen-4.0.3_1 ===>>> tcpflow-0.21_1 ===>>> 7 root ports ... ===>>> Branch ports (Have dependencies, are depended on) ===>>> apache-2.2.3 ===>>> New version available: apache-2.2.8 ... ===>>> Leaf ports (Have dependencies, not depended on) ===>>> automake-1.9.6_2 ===>>> bash-3.1.17 ===>>> New version available: bash-3.2.33 ... ===>>> 32 leaf ports ===>>> 137 total installed ports ===>>> 83 have new versions available Все установленные порты могут быть обновлены при помощи одной команды: &prompt.root; portmaster -a По умолчанию, portmaster создаст дублирующий пакет перед удалением установленного порта. Если обновление порта прошло успешно, portmaster удалит дублирующий пакет. При помощи опции можно проинструктировать portmaster не выполнять автоматическое удаление дублирующего пакета. Указание опции запустит portmaster в интерактивном режиме, запрашивающим подтверждение пользователя перед обновлением каждого порта. Если во время процесса обновления возникнут ошибки, задействуйте опцию для обновления/перестройки всех портов: &prompt.root; portmaster -af Также, portmaster может быть задействован для установки новых портов в систему, автоматически обновляя другие зависимые порты перед построением и установкой нового порта: &prompt.root; portmaster shells/bash За подробной информацией обратитесь к &man.portmaster.8;. Порты и дисковое пространство ports disk-space Работа с Коллекцией Портов со временем приводит к увеличению занимаемого дискового пространства. После построения и установки программы из порта удалите временный каталог work при помощи команды make clean. Для очистки всей Коллекции Портов наберите: &prompt.root; portsclean -C По прошествии некоторого времени у вас соберется множество дистрибутивных файлов в каталоге distfiles. Следующая команда удалит все дистрибутивные файлы, которые более не связаны ни с какими портами: &prompt.root; portsclean -D Для удаления всех дистрибутивных файлов, не связанных ни с одним установленным в вашу систему портом, наберите: &prompt.root; portsclean -DD Утилита portsclean является частью порта ports-mgmt/portupgrade. Удобная утилита для автоматизации удаления портов, в которых вы более не нуждаетесь, доступна из порта ports-mgmt/pkg_cutleaves. Действия после установки После установки нового приложения вам обычно требуется прочесть любую имеющуюся документацию, отредактировать необходимые конфигурационные файлы и убедиться, что приложение запускается во время загрузки системы. Очевидно, что шаги, в точности требуемые для конфигурации каждого приложения, отличаются. Однако, если если вы только что установили новое приложение и вам интересно, Что же дальше?, то вам могут помочь следующие советы: Воспользуйтесь командой &man.pkg.info.1; для определения того, куда и какие файлы были установлены. К примеру, если вы только что установили FooPackage версии 1.0.0, то по команде &prompt.root; pkg_info -L foopackage-1.0.0 | less будет выведен список всех файлов, установленных пакетом. Обратите особое внимание на файлы, установленные в каталоги man/, которые являются справочными страницами, etc/, которые являются конфигурационными файлами, и doc/, которые являются более полной документацией. Чтобы определить, какая версия приложения была установлена, выполните: &prompt.root; pkg_info | grep -i foopackage команда выведет список всех установленных пакетов, в названии которых присутствует foopackage. Замените foopackage на искомый фрагмент текста. Как только вы определите, куда были установлены справочные страницы приложения, просмотрите их при помощи команды &man.man.1;. Просмотрите примеры конфигурационных файлов, а также любую дополнительную документацию, если она была установлена. Если у приложения имеется веб-сайт, поищите там дополнительную документацию, ответы на часто задаваемые вопросы и так далее. Если вы не уверены, каков адрес веб-сайта, он может быть указан в выводе команды &prompt.root; pkg_info foopackage-1.0.0 Строка WWW:, если она есть, должна содержать URL Web-сайта приложения. Как правило, порты приложений, которые должны запускаться при загрузке системы, устанавливают стартовые скрипты в каталог /usr/local/etc/rc.d. Просмотрите скрипт на предмет его корректности и, если необходимо, отредактируйте или переименуйте его. Обратитесь к разделу о Запуске сервисов за более подробной информацией. Обработка нерабочих портов Если вы встретили порт, который не компилируется: Выясните, нет ли для порта решения проблемы в Problem Report database. Если оно есть, то вы можете воспользоваться предложенным решением. Попросите помощи у мейнтейнера порта. Чтобы найти его адрес наберите команду make maintainer или просмотрите Makefile. Не забудьте указать имя и версию порта (скопировав строчку $FreeBSD: из файла Makefile) и включите в письмо весь вывод, предшествующий возникновению ошибки. Некоторые порты поддерживаются группой людей из списка рассылки, а не отдельными людьми. В большинстве таких случаев адрес мейнтейнера выглядит подобно следующему: freebsd-listname@FreeBSD.org. Пожалуйста, учтите это при формулировании ваших вопросов. В частности, если мейнтейнер порта — ports@FreeBSD.org, то такой порт вообще никем не поддерживается. Решение проблем и поддержка, если и имеют место, то приходят от общества, которое подписано на тот список рассылки. Волонтёры требуются всегда! Если вы не получили ответ, то воспользуйтесь командой &man.send-pr.1; для посылки сообщения о проблеме (изучите составление сообщений о проблеме во &os;). Исправьте его! В Руководстве по созданию портов содержится подробная информация об инфраструктуре портов, так что вы сможете исправить редкий неработающий порт или даже предложить свой собственный! Воспользуйтесь &man.pkg.add.1; и установите пакет вместо порта. Index: head/ru_RU.KOI8-R/share/xml/mailing-lists.ent =================================================================== --- head/ru_RU.KOI8-R/share/xml/mailing-lists.ent (revision 47963) +++ head/ru_RU.KOI8-R/share/xml/mailing-lists.ent (revision 47964) @@ -1,578 +1,586 @@ Сервер списков рассылки FreeBSD"> &a.mailman.listinfo;"> Список рассылки FreeBSD ACPI"> freebsd-acpi"> Список рассылки, посвящённый популяризации FreeBSD"> freebsd-advocacy"> Список рассылки, посвящённый портированию AFS на FreeBSD"> freebsd-afs"> Список рассылки, посвящённый поддержке контроллеров Adaptec AIC7xxx в FreeBSD"> freebsd-aic7xxx"> Список рассылки, посвящённый портированию FreeBSD на архитектуру AMD64"> freebsd-amd64"> Список рассылки анонсов FreeBSD"> freebsd-announce"> Поддержка веб-сервера Apache под FreeBSD"> freebsd-apache"> Список рассылки, посвящённый архитектуре и внутреннему устройству FreeBSD"> freebsd-arch"> Список рассылки, посвящённый портированию FreeBSD на архитектуру ARM"> freebsd-arm"> Список рассылки, посвящённый работе ATM сетей под FreeBSD"> freebsd-atm"> Список рассылки, посвящённый аудиту кода FreeBSD"> freebsd-audit"> Список рассылки, посвящённый системе бинарного обновления FreeBSD"> freebsd-binup"> Список рассылки, посвящённый поддержке BlueTooth во FreeBSD"> freebsd-bluetooth"> Список рассылки охотников за ошибками FreeBSD"> freebsd-bugbusters"> Список рассылки FreeBSD, посвящённый сообщениям о проблемах"> freebsd-bugs"> Список рассылки, посвящённый неформальным беседам о FreeBSD"> freebsd-chat"> Список рассылки, посвященный вопросам разработки и установки Chromium во FreeBSD"> freebsd-chromium"> Список рассылки, посвящённый кластерам под управлением FreeBSD"> freebsd-cluster"> Список рассылки, посвящённый обсуждению &os.current;"> freebsd-current"> Анонсы CTM"> ctm-announce"> Список рассылки, посвящённый распространению файлов исходных текстов ветки 4-STABLE с использованием CTM"> ctm-src-4"> Список рассылки, посвящённый распространению файлов исходных текстов ветки 5-STABLE с использованием CTM"> ctm-src-5"> Список рассылки, посвящённый распространению файлов исходных текстов ветки 6-STABLE с использованием CTM"> ctm-src-6"> Список рассылки, посвящённый распространению файлов исходных текстов ветки 7-STABLE с использованием CTM"> ctm-src-7"> Список рассылки, посвящённый распространению файлов исходных текстов ветки 8-STABLE с использованием CTM"> ctm-src-8"> Список рассылки, посвящённый распространению файлов исходных текстов ветки 9-STABLE с использованием CTM"> ctm-src-9"> Список рассылки, посвящённый распространению файлов исходных текстов ветки 10-STABLE с использованием CTM"> ctm-src-10"> Список рассылки, посвящённый распространению файлов исходных текстов ветки -CURRENT с использованием CTM"> ctm-src-cur"> Список рассылки, посвящённый CTM"> ctm-users"> Список рассылки сообщений об изменениях в главном дереве исходных текстов FreeBSD"> cvs-all"> Список рассылки сообщений об изменениях в дереве документации FreeBSD"> cvs-doc"> Список рассылки сообщений об изменениях в дереве портов FreeBSD"> cvs-ports"> Список рассылки сообщений об изменениях в дереве проектов FreeBSD"> cvs-projects"> Список рассылки сообщений об изменениях в дереве исходных текстов FreeBSD"> cvs-src"> Список рассылки, посвящённый поддержке FreeBSD CVSweb"> freebsd-cvsweb"> Список рассылки, посвящённый базам данных, работающим под управлением FreeBSD"> freebsd-database"> Список рассылки Проекта Документации FreeBSD"> freebsd-doc"> Список рассылки, посвященный написанию драйверов устройств для FreeBSD"> freebsd-drivers"> Список рассылки FreeBSD, посвященный системам электронного документооборота Eclipse"> freebsd-eclipse"> Список рассылки, посвящённый работе FreeBSD во встроенных системах"> freebsd-embedded"> Список рассылки, посвящённый эмуляции во FreeBSD"> freebsd-emulation"> Список рассылки FreeBSD-eol"> freebsd-eol"> Список рассылки, посвящённый поддержке FireWire (IEEE 1394) в FreeBSD"> freebsd-firewire"> Список рассылки, посвящённый обсуждению файловых систем во FreeBSD"> freebsd-fs"> Список рассылки, посвящённый FreeBSD gecko"> freebsd-gecko"> Список рассылки, посвящённый FreeBSD GEOM"> freebsd-geom"> Список рассылки, посвящённый использованию GNOME и GNOME-приложений под FreeBSD"> freebsd-gnome"> Список рассылки FreeBSD, посвящённый техническим дискуссиям"> freebsd-hackers"> Список рассылки FreeBSD, посвящённый оборудованию"> freebsd-hardware"> Список рассылки, посвящённый зеркалированию FreeBSD"> freebsd-hubs"> Список рассылки, посвящённый интернационализации FreeBSD"> freebsd-i18n"> Список рассылки, посвящённый проблемам специфичным для процессоров i386 под FreeBSD"> freebsd-i386"> Список рассылки, посвящённый портированию FreeBSD на архитектуру IA32"> freebsd-ia32"> Список рассылки, посвящённый портированию FreeBSD на архитектуру IA64"> freebsd-ia64"> Список рассылки, посвящённый обсуждению кода IPFW"> freebsd-ipfw"> Список рассылки FreeBSD, посвящённый поддержке ISDN"> freebsd-isdn"> Список рассылки, посвящённый использованию FreeBSD у провайдеров Интернет услуг (ISP)"> freebsd-isp"> Список рассылки FreeBSD jail"> freebsd-jail"> Список рассылки, посвящённый поддержке Java во FreeBSD"> freebsd-java"> Список рассылки FreeBSD, посвящённый найму на работу"> freebsd-jobs"> Список рассылки, посвящённый поддержке KDE/Qt and KDE приложений в FreeBSD"> freebsd-kde"> Список рассылки, посвящённый портированию LFS на FreeBSD"> freebsd-lfs"> Список рассылки, посвящённый системе установки и управления пакетами во FreeBSD"> freebsd-libh"> Список рассылки, посвящённый портированию FreeBSD на архитектуру MIPS"> freebsd-mips"> Администраторы зеркальных сайтов FreeBSD"> mirror-announce"> Список рассылки FreeBSD, посвящённый переносным компьютерам"> freebsd-mobile"> Mono and C# приложения на FreeBSD"> freebsd-mono"> Список рассылки, посвящённый портированию Mozilla под FreeBSD"> freebsd-mozilla"> Список рассылки, посвящённый поддержке средств мультимедиа под FreeBSD"> freebsd-multimedia"> Список рассылки, посвящённый сетевым возможностям FreeBSD"> freebsd-net"> Список рассылки для общения новичков"> freebsd-newbies"> Список рассылки, посвящённый архитектуре New Bus во FreeBSD"> freebsd-new-bus"> Офисные приложения во FreeBSD"> freebsd-office"> Список рассылки, посвящённый оптимизации FreeBSD"> freebsd-performance"> Список рассылки, посвящённый FreeBSD Perl"> freebsd-perl"> Список рассылки, посвящённый FreeBSD packet filter"> freebsd-pf"> Список рассылки, посвящённый портированию FreeBSD на не-Intel платформы"> freebsd-platforms"> Список рассылки, посвящённый политике и принимаемым решениям Core"> freebsd-policy"> Список рассылки, посвящённый Портам FreeBSD"> freebsd-ports"> Список рассылки анонсов FreeBSD Ports"> freebsd-ports-announce"> Список рассылки, посвящённый ошибкам в портах FreeBSD"> freebsd-ports-bugs"> Список рассылки, посвящённый портированию FreeBSD на архитектуру PowerPC"> freebsd-ppc"> Обсуждение работы FreeBSD на серверной платформе HP ProLiant"> freebsd-proliant"> Список рассылки, посвящённый улучшению поддержки языка Python во FreeBSD"> freebsd-python"> Список рассылки, посвящённый вопросам и ответам пользователей FreeBSD"> freebsd-questions"> Список рассылки, посвящённый загрузочным скриптам во FreeBSD"> freebsd-rc"> Список рассылки, посвящённый realtime-расширениям FreeBSD"> freebsd-realtime"> Список рассылки, посвящённый FreeBSD Ruby"> freebsd-ruby"> Список рассылки, посвящённый обсуждению подсистемы SCSI во FreeBSD"> freebsd-scsi"> Список рассылки FreeBSD, посвящённый информационной безопасности"> freebsd-security"> Список рассылки FreeBSD, посвящённый срочным сообщениям, связанным с безопасностью"> freebsd-security-notifications"> Список рассылки, посвящённый малым и встроенным системам, созданным на базе FreeBSD"> freebsd-small"> Список рассылки, посвящённый портированию FreeBSD на архитектуру SPARC"> freebsd-sparc64"> Список рассылки, посвящённый обсуждению &os.stable;"> freebsd-stable"> Список рассылки, посвящённый поддержке стандартов C99 и POSIX во FreeBSD"> freebsd-standards"> Список рассылки, посвящённый портированию FreeBSD на sun4v"> freebsd-sun4v"> Список рассылки сообщений об изменениях в репозитории SVN для всего дерева исходных текстов (за исключением user и projects)"> svn-src-all"> Список рассылки сообщений об изменениях в репозитории SVN для ветки head/-current дерева исходных текстов"> svn-src-head"> Список рассылки сообщений об изменениях в репозитории SVN в части projects дерева исходных текстов"> svn-src-projects"> Список рассылки сообщений об изменениях в репозитории SVN в части release дерева исходных текстов"> svn-src-release"> Список рассылки сообщений об изменениях в репозитории SVN в части releng / security дерева исходных текстов"> svn-src-releng"> Список рассылки сообщений об изменениях в репозитории SVN для всех веток -stable дерева исходных текстов"> svn-src-stable"> Список рассылки сообщений об изменениях в репозитории SVN для ветки 6-stable дерева исходных текстов"> svn-src-stable-6"> Список рассылки сообщений об изменениях в репозитории SVN для ветки 7-stable дерева исходных текстов"> svn-src-stable-7"> Список рассылки сообщений об изменениях в репозитории SVN для ветки 8-stable дерева исходных текстов"> svn-src-stable-8"> + +Список рассылки сообщений об изменениях в репозитории SVN для ветки 9-stable дерева исходных текстов"> +svn-src-stable-9"> + + +Список рассылки сообщений об изменениях в репозитории SVN для ветки 10-stable дерева исходных текстов"> +svn-src-stable-10"> + Список рассылки сообщений об изменениях в репозитории SVN для предыдущих stable веток дерева исходных текстов"> svn-src-stable-other"> Список рассылки сообщений об изменениях в репозитории SVN для части admin / configuration"> svn-src-svnadmin"> Список рассылки сообщений об изменениях в репозитории SVN для экспериментальной части user дерева исходных текстов"> svn-src-user"> Список рассылки сообщений об изменениях в репозитории SVN для части дерева, выделенного для работы поставщиков (vendor work area)"> svn-src-vendor"> Список рассылки, посвященный разработке sysinstall"> freebsd-sysinstall"> Тестовый список рассылки FreeBSD"> freebsd-test"> Список рассылки, посвящённый оптимизации и тестированию FreeBSD"> freebsd-testing"> Список рассылки, посвящённый поддержке многопоточности в FreeBSD"> freebsd-threads"> Список рассылки, посвящённый вопросам портирования FreeBSD на процессоры Tilera"> freebsd-tilera"> Список рассылки, посвящённый поддержке TokenRing во FreeBSD"> freebsd-tokenring"> Список рассылки, посвящённый поддержке встроенных инструментальных средств FreeBSD"> freebsd-toolchain"> Список рассылки, посвященный поддержке USB в FreeBSD"> freebsd-usb"> Список рассылки, посвящённый координированию пользовательских групп FreeBSD"> freebsd-user-groups"> Список рассылки FreeBSD, посвящённый координированию работы сторонних производителей"> freebsd-vendors"> Список рассылки, посвящённый обсуждению различных техник виртуализации, поддерживаемых FreeBSD"> freebsd-virtualization"> Обсуждение инфраструктуры VuXML"> freebsd-vuxml"> Список рассылки, предназначенный для анонсов статуса начатых работ над FreeBSD (Work-In-Progress Status)"> freebsd-wip-status"> Обсуждение разработки стека 802.11, утилит, драйверов устройств"> freebsd-wireless"> Вебмастеры сайта www.FreeBSD.org"> freebsd-www"> Список рассылки FreeBSD, посвящённый X11"> freebsd-x11"> Список рассылки, посвящённый вопросам портирования FreeBSD на Xen"> freebsd-xen"> bug-followup@FreeBSD.org"> majordomo@FreeBSD.org"> frdp@FreeBSD.org.ua"> Список рассылки, посвящённый поддержке FreeBSD на архитектуре Alpha"> freebsd-alpha"> Список рассылки, посвящённый контролю качества FreeBSD"> freebsd-qa"> Список рассылки, посвящённый поддержке многопроцессорности (SMP) во FreeBSD"> freebsd-smp">