Руководство пользователя для GNU Awk

Arnold D. Robbins
перевод Балуева А. Н.

Оглавление

Приложение B. Установка gawk

  • Приложение B. Установка gawk

    B.4 MS-DOS и OS/2. Установка и компиляция

    В начало страницы

    Если вы получили двоичную поставку, приготовленную сторонниками DOS, то gawk и необходимые файлы поддержки будут в каталоге `gnu', рабочие программы в `gnu/bin', библиотеки в `gnu/lib/awk', а manual pages в `gnu/man'. Это сделано для облегчения установки в каталоге `/gnu' на вашем дисководе, но файлы могут быть установлены где угодно при условии, что AWKPATH установлен нужным образом. Независимо от установочного каталога, первая строка в `igawk.cmd' и в `igawk.bat' (в `gnu/bin') могут нуждаться в корректировке.

    Двоичная поставка будет содержать отдельный файл с описанием ее содержимого. В частности, он может включать более одной версии исполнимой gawk. Двоичная поставка под OS/2 может иметь другое устройство, но установка будет аналогичной.

    Версии gawk под OS/2 и MS-DOS ищут программные файлы как описано в разделе 14.3 [Переменная окружения AWKPATH], стр. 166. Однако, двоеточия (вместо точек с запятой) разделяют элементы в переменной AWKPATH. Если AWKPATH не установлена или пуста, то по умолчанию путь поиска есть ".;c:/lib/awk;c:/gnu/lib/awk".

    sh-подобная оболочка (в противоположность command.com в MS-DOS или cmd.exe в OS/2) могут оказаться полезными для программирования в awk. Ian Stewartson написал прекрасную оболочку для MS-DOS и OS/2, и клон ksh и GNU Bash доступны для OS/2. Файл `README.d/README.pc' в поставке gawk содержит информацию об этих оболочках. Пользователи написанной Stewartson'ом оболочки для DOS испытают ее документацию при действиях в командных строках. В частности, установки для gawk в конфигурации оболочки могут нуждаться в изменениях и может оказаться интересным также параметр ignoretype.

    gawk может быть скомпилирован для MS-DOS и OS/2 с использованием средств разработки GNU от DJ Delorie (DJGPP, MS-DOS-only) или от Eberhard Mattes (EMX, MS-DOS and OS/2). Микрософт Cи может использоваться для построения 16-битовых версий для MS-DOS and OS/2. Файл `README.d/README.pc' в поставке gawk содержит дополнительные замечания, и `pc/Makefile' содержит важные замечания о параметрах компиляции.

    Чтобы построить gawk, скопируйте файлы из каталога `pc' (кроме `ChangeLog') в каталог с остатком источников gawk. `Makefile' содержит конфигурационную секцию с комментариями и может нуждаться в редактировании, чтобы работать с вашей утилитой make.

    `Makefile' содержит несколько целевых программ для построения различных версий MSDOS и OS/2. Список целей будет напечатан, если выдать команду make без цели. Как пример, для построения gawk с использованием средств DJGPP, введите `make djgpp'.

    Использование make для запуска стандартных тестов и установки gawk требует дополнительных инструментальных средств, подобных Unix, включая sh, sed и cp. Для того, чтобы пропустить тесты, файлы `test/*.ok' могут нуждаться в конвертировании, чтобы иметь обычные маркеры end-of-line в стиле DOS. Большинство тестов будут правильно работать с оболочкой Stewartson'а вместе с соответствующими утилитами или подходящими средствами GNU. Однако, требуется некоторое редактирование `test/Makefile'. Рекомендуется, чтобы файл `pc/Makefile.tst' был скопирован как замена в `test/Makefile'. Подробности можно найти в `README.d/README.pc'.

    B.5 Установка gawk на Atari ST

    В начало страницы

    Нет существенных различий при установке gawk на различные модели Atari. Компиляция исполнимых программ gawk не требует большого количества памяти для большинства awk-программ и должна исполняться на моделях, основанных но процессорах Motorola (называемых далее ST, хотя это и не совсем правильно).

    Для использования gawk нужно иметь оболочку, текстовую или графическую, которая не относит все буквы командной строки к верхнему регистру. Поддержка различия регистров в параметрах-флажках очень важна (см. раздел 14.1 [Параметры командной строки], стр. 161). Теперь это подразумевается по умолчанию и представляет проблему только на очень старых машинах. Если ваша система не сохраняет регистр параметров-флажков, вам будет необходимо модернизировать ваш инструментарий. Поддержка перенаправления ввода/вывода необходима для переноса awk-программ из других окружений. Конвейеры очень желательны, но не необходимы.

    B.5.1 Компиляция gawk на Atari ST

    В начало страницы

    Правильная компиляция исходных кодов gawk, когда sizeof(int) отличается от sizeof(void *), требует компилятор ANSI C. Начальный перенос был сделан с gcc. Вы можете фактически предпочитать рабочие программы, где целые на 4 байта шире, но другие варианты работают с таким же успехом. Вам может понадобиться много памяти при попытке перекомпилировать исходные коды gawk , поскольку некоторые из них (в частности, `regex.c') довольно велики. Если вам не хватит памяти при компиляции такого файла, попробуйте уменьшить уровень оптимизации для этого файла; иногда это помогает.

    При подходящей оболочке (можно взять Bash), и особенно если вы на Linux, MiNT или подобной операционной системе, шансы очень велики, что средства конфигурации сработают успешно. В противном случае отдельные версии `config.h' и `Makefile.st' даны в подкаталоге `atari' и могут быть отредактированы и скопированы в соответствующие файлы в главном каталоге исходных кодов. Даже если конфигурация что-то даст, может оказаться полезным сравнить ее результаты с другими версиями и кое-что подогнать.

    Некоторые фрагменты исходных кодов зависят от препроцессорного определения `atarist'. Это предполагает в основном окружение TOS с gcc. Модифицируйте нужным образом эти части, если они не согласуются с вашим окружением. Также ознакомьтесь с замечаниями об AWKPATH и envsep в разделе B.5.2 [Выполнение gawk на Atari ST], стр. 290.

    Как сообщалось, некоторые `config.h' жалуются, что функция system пропала из библиотек. Но это неверно, альтернативная реализация этой функции находится в `atari/system.c'. В зависимости от вашей комбинации оболочки и операционной системы, вы можете пожелать изменить файл, чтобы показать, что system доступна для использования.

    B.5.2 Исполнение gawk на Atari ST

    В начало страницы

    Исполнимая версия gawk должна быть помещена, как обычно, где-нибудь в вашем PATH, где оболочка может ее найти.

    При исполнении gawk создает некоторое количество временных файлов. Используя библиотеки gcc для TOS, gawk ищет переменные окружения TEMP или TMPDIR, именно в этом порядке. Если одна из них найдена, ее значение предполагается служить каталогом для временных файлов. Этот каталог должен существовать, и если вы можете тратить память, хорошо разместить его на устройстве RAM. Если ни TEMP ни TMPDIR не найдены, то gawk использует текущий каталог для своих временных файлов.

    Версия ST программы gawk ищет свои программные файлы как описано в разделе 14.3 [Переменная окружения AWKPATH], стр. 166. По умолчанию значение AWKPATH берется из DEFPATH, определенной в `Makefile'. Отдельные gcc/TOS `Makefile' для ST в поставке устанавливают DEFPATH на ".,c:"lib"awk,c:"gnu"lib"awk". Путь поиска можно модифицировать явной установкой AWKPATH по вашему желанию. Заметим, что двоеточия нельзя использовать на ST для отделения элементов в переменной AWKPATH, поскольку двоеточия имеют другое резервированное значение. Вместо него для разделения элементов в пути следует использовать запятую. При рекомпиляции разделяющий знак должен быть модифицирован инициализацией переменной envsep в `atari/gawkmisc.atr' на другое значение.

    Хотя awk допускает большую гибкость в перенаправлении I/O изнутри программы, этим средством нужно пользоваться с осторожностью на ST, работающем под TOS. При некоторых обстоятельствах подпрограммы OS для файлов, осуществляющих обработку пулов, теряют след некоторых событий, приводя компьютер к аварии, требующей перезагрузки. Часто достаточен перезапуск из памяти. К счастью, это случается редко, в очень сложных ситуациях. В частности, избегайте случаев, когда одна часть awk-программы использует операторы печати, явно переадресованные к "/dev/stdout", в то время как другие операторы печати используют по умолчанию стандартный вывод, а вызывающая оболочка перенаправила стандартный вывод в файл.

    Когда gawk компилируется с ST-версией gcc и ее обычными библиотеками, она принимает и `/' и `"' как разделители в path. Хотя это удобно, нужно помнить, что это удаляет один, технически нужный, знак (`/') из ваших файловых имен, и это может привести к конфликтам с внешними программами, вызываемыми через функцию system, которая может не поддерживать такое соглашение. Всякий раз когда возможно, что файл, созданный gawk, будет использован другой программой, употребляйте только обратные слеши. Также помните, что в awk, обратные слеши в цепочках должны дублироваться, чтобы стать литералами (см. раздел 4.2 [Управляющие последовательности], стр. 24).

    B.6 Установка gawk на Amiga

    В начало страницы

    Можно установить gawk на системе Amiga, использую эмуляцию окружения Unix, которую можно получить через анонимную ftp из ftp.ninemoons.com в каталоге `pub/ade/current'. Она включает оболочку на базе pdksh. Первичная компонента этого окружения есть эмуляционная библиотека Unix, `ixemul.lib'.

    Более полная поставка для Amiga имеется на Geek Gadgets CD-ROM от CRONUS 1840 E. Warner Road #105-265 Tempe, AZ 85284 USA US Toll Free: (800) 804-0833 Phone: +1-602-491-0442 FAX: +1-602-491-0048 Email: info@ninemoons.com WWW: http://www.ninemoons.com Anonymous ftp site: ftp.ninemoons.com

    Если вы имеете поставку, можно конфигурировать gawk, просто запустив конфигурацию: configure -v m68k-amigaos Затем запустите make, и все готово! (Если эти шаги не сработают, пошлите пожалуйста отчет об ошибке; см. раздел B.7 [Сообщения о конфликтах и ошибках], стр. 292.)

    B.7 Сообщения о конфликтах и ошибках

    В начало страницы

    Нет ничего более опасного, чем скучающий археолог. Руководство путешественника автостопом по галактике

    Если у вас неприятности с gawk или вы считаете, что обнаружили ошибку, сообщите об этом разработчикам; мы не можем обещать сделать что-нибудь определенное, но мы хотим исправить ее.

    До сообщения об ошибке убедитесь, что вы действительно ее обнаружили. Внимательно перечитайте документацию и проверьте, что она действительно утверждает то, что вы пытаетесь сделать. Если из нее не ясно, можно что-то сделать или нельзя, все равно сообщите об этом также; это пробел в документации!

    Если сообщение приготовлено, имеются два адреса e-mail, куда его следует послать:

    Internet: `bug-gnu-utils@gnu.org', UUCP: `uunet!gnu.org!bug-gnu-utils'

    Пожалуйста укажите номер версии gawk, которую использовали. Эту информацию можно получить по команде `gawk --version'. Вы должны также послать копию сообщения для Arnold Robbins, по `arnold@gnu.org'.

    Внимание! Не нужно посылать сообщения об ошибках в gawk по почте в Usenet/Internet newsgroup comp.lang.awk. Хотя разработчики gawk от случая к случаю читают это , нет гарантий, что мы получим ваше сообщение. Описанные выше шаги представляют официальный, признанный путь для сообщений о недостатках и ошибках.

    Мы приветствуем также различные предложения. Если имеются вопросы о неясностях в документах или о темных местах, обращайтесь к Арнольду Роббинсу; он постарается помочь вам , хотя и может не иметь времени для решения проблемы. Ему можно по электронной почте по указанному выше адресу.

    Если вы нашли ошибку в одной из не-Unix версий gawk, пошлите по электронной почте сообщение лицам, поддерживающим это перенесение (их список приведен ниже и также в файле `README' в поставке gawk.

    Информация в файле `README' имеет приоритет при расхождении с данными, приведенными в книге.

    Лица, поддерживающие варианты gawk, 
    работающие не под Unix:
    
    MS-DOS
    Scott Deifik, `scottd@amgen.com', 
    и Darrel Hankerson, `hankedr@mail.auburn.edu'.
    OS/2
    Kai Uwe Rommel, `rommel@ars.de'.
    VMS
    Pat Rankin, `rankin@eql.caltech.edu'.
    Atari ST
    Michal Jaegermann, `michal@gortel.phys.ualberta.ca'.
    Amiga
    Fred Fish, `fnf@ninemoons.com'.
    
    

    Если ваша ошибка воспроизводится и под Unix, пошлите копии вашего сообщения в general GNU bug list и Арнольду Роббинсу, по адресам, указанным выше.

    B.8 Другие свободно доступные реализации awk

    В начало страницы

    Это своего рода забава помещать такие комментарии в коде awk: // Работают ли C++ comments ? ответ: да, конечно! Michael Brennan

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

    Unix awk
    Brian Kernighan оказался в состоянии сделать свою реализацию awk свободно доступной . Ее можно получить через анонимное ftp на хосте netlib.bell-labs.com. Замените каталог на `/netlib/research'. Используйте "binary" или "image" режим и отыщите `awk.bundle.gz'. Это оболочечный архив, запакованный с GNU gzip. Он может быть распакован программой gunzip.

    Эту версию можно также отыскать через WWW в Brian Kernighan's home page (http://cm.bell-labs.com/who/bwk). Она требует компилятор ANSI C; GCC (the GNU C compiler) работает очень хорошо.

    mawk
    Michael Brennan написал независимую реализацию awk, названную mawk. Она доступна на условиях GPL (см. [GNU GENERAL PUBLIC LICENSE], стр. 309), также как и gawk. Ее можно получить через анонимную ftp к хосту ftp.whidbey.net. Замените каталог на `/pub/brennan'. Используйте "binary" или "image" режим и отыщите `mawk1.3.3.tar.gz' (или последнюю версию, которая там есть). Можно использовать gunzip для распаковки этого файла. Установка подобна установке gawk (см. раздел B.2 [Компиляция и установка gawk на Unix], стр. 284).

  • В начало страницы

    <<< Оглавление Страница: Приложение B  Приложение C. >>>