Глава 7. Прикладные программы

7.1. Итак, где находятся все прикладные программы?
7.2. Как настроить INN (Internet News) на моей машине?
7.3. Поддерживает ли FreeBSD среду Java™?
7.4. Почему этот порт не компилируется на моей машине с 7.X -, 8.X - или 9.X -STABLE?
7.5. Я попытался сформировать файл INDEX командой make index, однако попытка окончилась неудачей. Почему?
7.6. Почему CVSup не интегрирована в основное дерево FreeBSD?
7.7. Я обновил исходные тексты. Как теперь обновить установленные порты?
7.8. Нужно ли мне перекомпилировать все порты каждый раз, когда я выполняю мажорное обновление (со сменой старшей версии FreeBSD)?
7.9. Нужно ли мне перекомпилировать все порты каждый раз, когда я выполняю минорное обновление (без изменения старшей версии FreeBSD)?
7.10. Почему возможности /bin/sh так малы? Почему бы во FreeBSD не использовать bash или какой-либо другой командный процессор?
7.11. Почему Netscape® и Opera запускаются так долго?
7.12. Я обновил некоторые разделы Коллекции Портов при помощи CVSup, и теперь многие порты перестали строиться со странными диагностическими сообщениями! Что случилось? Коллекция Портов каким-то образом оказалась неработоспособной?
7.13. Как создать аудио-CD из файлов MIDI?

7.1.

Итак, где находятся все прикладные программы?

Пожалуйста, загляните на страницу портов, содержащую информацию о программных продуктах, перенесённых во FreeBSD. На данный момент в этом списке находится более 24,000 приложений и он ежедневно увеличивается, так что почаще туда заглядывайте или подпишитесь на Список рассылки анонсов FreeBSD, в котором публикуется информация о появлении новых приложений.

Большинство портов должно нормально работать на системах веток 7.X, 8.X и 9.X. При выходе нового релиза FreeBSD в него в каталог ports/ включается актуальная на момент выхода Коллекция Портов.

Мы также поддерживаем концепцию «пакаджа», являющегося не более чем упакованным дистрибутивом в бинарной форме с некоторыми встроенными возможностями по его настройке во время установки. Пакадж может быть легко установлен и деинсталлирован снова без углубления в детали того, какие файлы должны быть установлены.

Используйте меню установки пакаджей Packages в sysinstall(8) (в пункте меню Configure) или запускайте pkg_add(1) с указанием конкретных файлов с пакаджами, которые вы хотите установить. Файл с пакаджем, как правило, идентифицируется по его суффиксу .tbz. Для обладателей дистрибутива системы на компакт-диске предназначен каталог packages/All, содержащий все эти файлы. Также разные версии FreeBSD можно получить по сети со следующих серверов:

или с ближайшего к вам зеркального сервера.

Имейте в виду, что не все порты могут быть доступны в виде пакаджей, так как постоянно идёт добавление новых. Неплохо время от времени проверять, какие пакаджи доступны на основном сервере ftp.FreeBSD.org.

7.2.

Как настроить INN (Internet News) на моей машине?

После установки пакаджа или порта news/inn для начала загляните в INN FAQ.

7.3.

Поддерживает ли FreeBSD среду Java™?

Да. Посетите страницу http://www.FreeBSD.org/java/.

7.4.

Почему этот порт не компилируется на моей машине с 7.X -, 8.X - или 9.X -STABLE?

Если вы пользуетесь версией FreeBSD, значительно отстающей от -CURRENT или -STABLE, вам может потребоваться обновить Коллекцию Портов. Дополнительную информацию о том, как это сделать, можно найти в соответствующем разделе Руководства по созданию портов. Если ваша Коллекция Портов находится в актуальном состоянии, то, скорее всего, кто-то внёс изменения в порт, так что он работает в -CURRENT, но не работает в -STABLE. Так как предполагается, что Коллекция Портов должна работать как в ветке -CURRENT, так и в ветви -STABLE, то, пожалуйста, пошлите сообщение об этой ошибке с помощью команды send-pr(1).

7.5.

Я попытался сформировать файл INDEX командой make index, однако попытка окончилась неудачей. Почему?

Первым делом всегда проверяйте, что ваша Коллекция Портов находится в актуальном состоянии. Ошибки, которые отражаются на построении файла INDEX из актуальной копии Коллекции Портов, бросаются в глаза и поэтому практически всегда исправляются немедленно.

Если ваши данные обновлены, возможно, вы столкнулись с другой проблемой. У команды make index имеется известная ошибка, касающаяся работы с неполными копиями Коллекции Портов. При выполнении команды предполагается, что у вас имеется локальная копия каждого порта, от которого зависит любой другой порт, локальная копия которого у вас имеется. Предположив, что у вас на диске есть копия foo/bar, и foo/bar зависит от baz/quux, то у вас также должна быть копия baz/quux, а также всех портов, от которых зависит baz/quux, и так далее. В противном случае у make index будет недостаточно информации для создания дерева зависимостей.

В частности, эта проблема отражается на пользователях FreeBSD, использующих cvsup(1) (или csup(1)) для отслеживания Коллекции Портов, но отказывающихся от установки определенных категорий приложений их перечислением в файле refuse. Теоретически любой пользователь может отказаться от некоторых категорий, однако на практике имеется слишком много портов, которые зависят от портов, относящихся к другим категориям. Пока кто-нибудь не предложит решения этой проблемы, общая рекомендация заключается в том, что если вы хотите сформировать INDEX, то должны иметь полную копию Коллекции Портов.

В редких случаях INDEX не перестраивается из-за странных комбинаций значений переменных WITH_* или WITHOUT_*, заданных в файле make.conf. Если вы думаете, что это ваш случай, прежде чем сообщать об этом в Список рассылки, посвящённый Портам FreeBSD, попытайтесь сформировать INDEX с отключенными значениями этих переменных.

7.6.

Почему CVSup не интегрирована в основное дерево FreeBSD?

Базовый комплект установки FreeBSD спроектирован самодостаточным — то есть операционную систему возможно полностью построить, имея весьма ограниченный набор инструментов. Так, все инструменты, действительно необходимые для компиляции исходных текстов FreeBSD, сами поставляются с исходными текстами. Речь идёт о компиляторе C (gcc(1)), make(1), awk(1) и подобных средствах.

Так как CVSup написан на языке Modula-3, его включение в базовый комплект FreeBSD также потребует добавление и поддержку компилятора Modula-3. Это приведёт как к увеличению как дискового пространства, требуемого исходным текстам FreeBSD, так и усилий по их поддержке. Таким образом, как разработчикам, так и пользователям гораздо проще держать CVSup в виде отдельного порта, который легко устанавливается как пакадж, размещаемый на установочных CD с FreeBSD.

Тем не менее, начиная с версии FreeBSD 6.2-RELEASE, пользователи FreeBSD больше не страдают от отсутствия встроенного клиента, совместимого с CVSup. Благодаря Maxime Henrion , CVSup был переписан на языке Си и получил название csup(1), и теперь является частью базового комплекта. И хотя в настоящее время в клиенте не реализованы все функциональные возможности CVSup, он является хорошим (и весьма быстрым!) вариантом для синхронизации ваших исходных текстов. Для систем, выпущенных до 6.2, клиент можно установить из порта или пакета (смотрите net/csup).

7.7.

Я обновил исходные тексты. Как теперь обновить установленные порты?

С FreeBSD не поставляется инструмент обновления портов, но есть несколько программ, немного облегчающих этот процесс. Вы можете также установить дополнительные инструменты для упрощения работы с портами, смотрите раздел Руководства FreeBSD Использование Коллекции Портов.

7.8.

Нужно ли мне перекомпилировать все порты каждый раз, когда я выполняю мажорное обновление (со сменой старшей версии FreeBSD)?

Разумеется! На свежеобновленной системе программное обеспечение, скомпилированное под более старый релиз, будет по прежнему работать, но в конечном счете вы придёте к тому, что некоторые приложения перестанут правильно работать и будут падать в произвольном месте, как только вы начнете устанавливать другие порты или обновлять существующие.

Когда система обновлена, различные совместно используемые библиотеки, загружаемые модули и другие части системы замещаются более новыми версиями. Приложения, скомпонованные с более старыми версиями, могут перестать запускаться либо начнут функционировать неправильно.

Для получения дополнительной информации обращайтесь к разделу, посвящённому обновлениям, руководства FreeBSD.

7.9.

Нужно ли мне перекомпилировать все порты каждый раз, когда я выполняю минорное обновление (без изменения старшей версии FreeBSD)?

В общем случае, нет. Разработчики FreeBSD делают всё возможное для сохранения двоичной совместимости между всеми релизами в пределах одной старшей версии. Любые исключения из этого правила документируются в "Примечаниях к релизу", и там же даются советы, которых следует придерживаться.

7.10.

Почему возможности /bin/sh так малы? Почему бы во FreeBSD не использовать bash или какой-либо другой командный процессор?

Потому что в стандарте POSIX® сказано, что все командные процессоры должны вести себя так же, как shell.

Более подробный ответ заключается в следующем: многим требуется, чтобы разрабатываемые скрипты для командного процессора были переносимы между многими системами. Именно поэтому в POSIX® очень подробно описан командный процессор и набор утилит. Большинство скриптов пишутся на языке процессора Bourne shell, к тому же некоторые важные программные вызовы (make(1), system(3), popen(3) и их аналоги на языках скриптов высокого уровня, таких как Perl или Tcl) предполагают для интерпретации команд использование именно Bourne shell. Так как Bourne shell используется столь широко и часто, то очень важно, чтобы он стартовал очень быстро, его поведение было строго регламентировано и при этом потребности в оперативной памяти были малы.

В имеющейся реализации мы приложили максимум усилий для воплощения в жизнь всех этих требований одновременно. Для того, чтобы сохранить /bin/sh небольшим по размеру, мы не включили многие из обычных возможностей, которые имеются в других командных процессорах. Однако в Коллекцию Портов включены командные процессоры, обладающие гораздо большими возможностями, такие, как bash, scsh, tcsh и zsh. (Вы можете сами сравнить использование памяти всеми этими оболочками, посмотрев в колонки «VSZ» и «RSS» вывода команды ps -u.)

7.11.

Почему Netscape® и Opera запускаются так долго?

Обычно проблема заключается в том, что на вашей машине неправильно настроен DNS. И Netscape®, и Opera при запуске обращаются к DNS. Браузер не появится на вашем рабочем столе, пока программа либо не получит ответ на свой запрос, либо не определит, что система к сети не подключена.

7.12.

Я обновил некоторые разделы Коллекции Портов при помощи CVSup, и теперь многие порты перестали строиться со странными диагностическими сообщениями! Что случилось? Коллекция Портов каким-то образом оказалась неработоспособной?

Если вы обновляете Коллекцию Портов только частично, используя один из более мелких наборов CVSup, обходясь без CVSup-набора ports-all, то вы должны всегда обновлять также и набор ports-base! Причины описаны в Руководстве.

7.13.

Как создать аудио-CD из файлов MIDI?

Для создания аудио-CD из MIDI-файлов сначала установите из портов программу audio/timidity++, затем установите набор патчей GUS от Эрика Уэлша (Eric A. Welsh), доступный по адресу http://alleg.sourceforge.net/digmid.html. После корректной установки TiMidity++ MIDI-файлы могут быть преобразованы в WAV-файлы следующей командой:

% timidity -Ow -s 44100 -o /tmp/juke/01.wav 01.mid

WAV-файлы затем могут быть преобразованы в другие форматы или записаны как аудио-CD, что описано в Руководстве FreeBSD.

Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.

По вопросам, связанным с этой документацией, пишите в рассылку <doc@FreeBSD.org>.