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

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

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

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

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

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

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

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

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

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

После установки пакаджа или порта news/inn для начала загляните на страничку Дэйва Бэрра (Dave Barr), посвящённую INN, где вы найдёте соответствующий FAQ.

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

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

7.4. Почему некоторый порт не компилируется на моей машине с 4.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) для отслеживания Коллекции портов, но отказывающихся от установки определенных категорий приложений их перечислением в файле 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.

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

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

Команда pkg_version(1) может генерировать скрипт, который обновит установленные порты до последних версий, присутствующих в дереве портов.

# pkg_version -c > /tmp/myscript

Получаемый скрипт необходимо отредактировать вручную перед его использованием. Последние версии команды pkg_version(1) заставляют делать это, помещая в начало скрипта команду exit(1).

Вы должны сохранить выводимый результат работы скрипта, так как в нем отмечаются пакаджи, зависящие от тех, что были обновлены. Их также может потребоваться обновить. Обычный случай, когда требуется обновление, это случай изменения номеров версии динамической библиотеки, так что порты, использующие эту библиотеку, должны быть перекомпилированы для использования новой версии.

Замечание: Начиная с FreeBSD 5.0 (и для более поздних версий), pkg_version(1) более не поддерживает параметр -c.

Если у вас достаточный объем дискового пространства, вы можете использовать инструмент portupgrade для автоматизации всего этого. В portupgrade включены различные утилиты для упрощения работы с пакаджами. Он находится в ports-mgmt/portupgrade. Так как он написан на языке Ruby, то вряд ли portupgrade может быть кандидатом на включение в поставку FreeBSD. Однако это вовсе не значит, что его нельзя использовать.

Если ваша система находится в работе постоянно, для создания списка портов, которым может потребоваться обновление, каждую неделю, можно использовать систему periodic(8), задав weekly_status_pkg_enable="YES" в файле /etc/periodic.conf.

7.8. Почему возможности /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.9. Почему Netscape® и Opera запускаются так долго?

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

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

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

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

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

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

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

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

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.