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

7.1. Итак, где находятся все прикладные программы?
7.2. Где найти библиотеку libc.so.3.0?
7.3. Почему выдаются сообщения ``Error: can't find libc.so.4.0''
7.4. Почему ghostscript выдаёт массу сообщений на моём 386/486SX.
7.5. Почему при запуске приложения SCO/iBCS2, оно прерывается на ``socksys'' (только во FreeBSD 3.0 и более ранних версий)?
7.6. Как настроить INN (Internet News) на моей машине?
7.7. Какую версию Microsoft FrontPage я должен иметь?
7.8. Поддерживает ли FreeBSD среду Java?
7.9. Почему некоторый порт не компилируется на моей машине с 3.X-STABLE?
7.10. Где найти ld.so?
7.11. Я обновил исходные тексты, как теперь обновить установленные порты?
7.12. Почему возможности /bin/sh так малы? Почему бы во FreeBSD не использовать bash или какой-либо другой командный процессор?
7.13. Почему Netscape и Opera запускаются так долго?

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

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

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

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

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

для 2.2.8-RELEASE/2.2.8-STABLE

ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-2.2.8/

для 3.X-RELEASE/3.X-STABLE

ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-3-stable/

для 4.X-RELEASE/4-STABLE

ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-4-stable/

для 5.X-CURRENT

ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-5-current/

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

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

7.2. Где найти библиотеку libc.so.3.0?

Похоже, что вы пытаетесь запустить пакадж, построенный в системе версии 2.2 и выше, на системе версии 2.1.x. Пожалуйста, прочтите предыдущий раздел и найдите подходящий для вашей системы порт или пакадж.

7.3. Почему выдаются сообщения ``Error: can't find libc.so.4.0''

Вы случайно скачали пакаджи, предназначенные для систем версий 4.X и 5.X и пытались установить их на вашей системе FreeBSD версий 2.X или 3.X. Пожалуйста, скачайте подходящие версии пакаджей.

7.4. Почему ghostscript выдаёт массу сообщений на моём 386/486SX.

У вас нет сопроцессора, верно? Вам нужно добавить в ядро другой эмулятор сопроцессора; это делается добавлением следующей строки в файл конфигурации ядра и последующей его перекомпиляцией.

    options GPL_MATH_EMULATE

Note: Если вы поступаете таким образом, вам нужно будет убрать опцию MATH_EMULATE.

7.5. Почему при запуске приложения SCO/iBCS2, оно прерывается на ``socksys'' (только во FreeBSD 3.0 и более ранних версий)?

Прежде всего вам нужно отредактировать файл /etc/sysconfig (или /etc/rc.conf, посмотрите справку по rc.conf(5)), изменив в последнем разделе значение следующей переменной на YES:

    # Set to YES if you want ibcs2 (SCO) emulation loaded at startup
    ibcs2=NO

После этого модуль ядра для поддержки ibcs2 будет запущен на этапе загрузки системы.

Затем вам нужно изменить каталог /compat/ibcs2/dev так, чтобы он выглядел следующим образом:

    lrwxr-xr-x  1 root  wheel         9 Oct 15 22:20 X0R@ -> /dev/null
    lrwxr-xr-x  1 root  wheel         7 Oct 15 22:20 nfsd@ -> socksys
    -rw-rw-r--  1 root  wheel         0 Oct 28 12:02 null
    lrwxr-xr-x  1 root  wheel         9 Oct 15 22:20 socksys@ -> /dev/null
    crw-rw-rw-  1 root  wheel   41,   1 Oct 15 22:14 spx

Работа с socksys была значительно упрощена по сравнению с более ранними версиями. Socksys должен указывать на /dev/null (прочтите справочную информацию о null(4)), чтобы обмануть open() & close(). Код, имеющийся в -CURRENT, возьмёт на себя всё остальное. Если вам нужен драйвер spx для подключения X по локальному сокету, определите переменную SPX_HACK при компиляции системы.

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

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

7.7. Какую версию Microsoft FrontPage я должен иметь?

Используй порт, дурачок! Среди портов имеется Apache с поддержкой FrontPage.

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

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

7.9. Почему некоторый порт не компилируется на моей машине с 3.X-STABLE?

Если вы используете FreeBSD версии, значительно отстающей от -CURRENT или -STABLE, вам нужен пакет обновления, который можно найти по адресу http://www.FreeBSD.org/ports/. Если вы отслеживаете все изменения, то, скорее всего, кто-то внёс изменения в порт, так что он работает в -CURRENT, но не работает в -STABLE. Так как предполагается, что коллекция портов должна работать как в ветке -CURRENT, так и в ветви -STABLE, то, пожалуйста, пошлите сообщение об этой ошибке с помощью команды send-pr(1).

7.10. Где найти ld.so?

a.out-приложения, такие, как Netscape Navigator, требуют наличия a.out-библиотек. По умолчанию версии FreeBSD, построенные на ELF-библиотеках, их не устанавливают. Вы получите сообщения об отсутствии /usr/libexec/ld.so, если это так для вашей системы. Эти библиотеки имеются в виде добавления в пакете compat22. Воспользуйтесь sysinstall(8) для его установки. Вы можете также установить их из исходного кода FreeBSD:

    # cd /usr/src/lib/compat/compat22
    # make install clean

Если вы хотите установить последние библиотеки compat22 при выполнении make world, то отредактируйте /etc/make.conf, включив туда строку COMPAT22=YES. Старые библиотеки совместимости меняются редко, если вообще меняются, так что это, в общем-то, и не нужно.

Также посмотрите файлы ERRATA для 3.1-RELEASE и 3.2-RELEASE.

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

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

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

    # pkg_version -c > /tmp/myscript

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

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

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

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

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

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