Основы программирования в Linux
tionality is the ubiquitous Hello World application.<b>COPYRIGHT</b>myapp is Copyright (c) 2007 Wiley Publishing, Inc.This program is free software; you can redistribute itand/or modify it under the terms of the GNU General PublicLicense as published by the Free Software Foundation;either version 2 of the License, or (at your option) anylater version.This program is distributed in the hope that it will beuseful, but WITHOUT ANY WARRANTY; without even the impliedwarranty of MERCHANTABILITY or FITNESS FOR A PARTICULARPURPOSE. See the GNU General Public License for moredetails.1MYAPP(1) MYAPP(1)You should have received a copy of the GNU General PublicLicense along with this program; if not, write to the FreeSoftware Foundation, Inc., 59 Temple Place — Suite 330Boston, MA 02111-1307, USA<b>BUGS</b>There probably are some, but we don't know what they are yet.<b>AUTHORS</b>Neil Matthew and Rick StonesТеперь, когда интерактивное руководство протестировано, необходимо указать для него исходный файл. Команда
, показывающая страницы руководства, использует переменную окруженияmanдля поиска нужных страниц. Вы можете поместить новую страницу в каталог локальных страниц интерактивного руководства или прямо в системный каталог /usr/man/man1.MANPATHКогда кто-нибудь в первый раз запросит эту страницу интерактивного справочного руководства, команда
автоматически отформатирует ее и отобразит. Некоторые версииmanмогут автоматически генерировать и сохранять заранее отформатированные (возможно, сжатые) текстовые ASCII-версии страниц интерактивного справочного руководства, чтобы ускорить в дальнейшем выполнение запросов на вывод одной и той же страницы.manРаспространение программного обеспечения
Главная задача, возникающая при распространении программного обеспечения, — гарантия того, что в дистрибутив включены все файлы правильных версий. К счастью, интернет-сообщество программистов выработало ряд очень надежных методов, которые прошли долгий путь, устраняя возникавшие проблемы. К этим методам относятся следующие:
□ создание стандартными средствами, имеющимися на всех машинах с ОС Linux, единого пакета, включающего файлы всех компонентов;
□ правляемая нумерация версий пакетов;
□ соглашение по именованию файлов, требующее включения номера версии в файл пакета, чтобы пользователи могли легко увидеть, с какой версией они работают;
□ применение подкаталогов в пакете, чтобы при извлечении файлов из него они помешались в отдельный каталог, и не возникали сомнения по поводу содержимого пакета.
Эволюция этих методов была направлена на облегчение распространения программ и повышение надежности этого процесса. Легкость установки программы — это другой вопрос, поскольку она зависит от программы и системы, в которой устанавливается программа, но, по крайней мере, вы будете уверены в том, что у вас корректные файлы всех компонентов.
Программа patch
Когда программы распространяются, почти неизбежно пользователи обнаруживают в них ошибки или у автора возникает желание внести в программу усовершенствования и обновления. Если авторы распространяют программы в виде двоичных файлов, в этом случае они часто просто отправляют новые версии двоичных файлов. Иногда (всегда чаще, чем хотелось бы) производители просто выпускают новую версию программы, часто с невразумительным описанием этой новой версии и недостаточной информацией о внесенных изменениях.
С другой стороны, отличный выход — распространение вашего программного обеспечения в виде исходного программного кода, это позволит пользователям увидеть, как вы реализовали алгоритмы и как применяли функции. Кроме того, у пользователей появится возможность проконтролировать, что именно делает программа, и повторно использовать фрагменты исходного кода (при условии соблюдения лицензионного соглашения).
Однако при объеме кода ядра Linux, равного десяткам мегабайтов сжатого исходного программного кода, доставка обновленного набора исходных файлов потребует значительных ресурсов при том, что, возможно, реально в новой версии будет изменен лишь небольшой процент этого исходного кода.
К счастью, для решения этой проблемы существует утилита
. Она была написана Ларри Уоллом (Larry Wall), также автором языка программирования Perl. Командаpatchпозволяет распространять только различия между двумя версиями, так что любой обладатель файла версии 1 и файла отличий версии 2 от версии 1 сможет применить командуpatchдля генерации на своей машине версии 2.patchЕсли вы начинаете с файла версии 1
This is file oneline 2line 3there is no line 4, this is line 5line 6и затем создаете версию 2
This is file twoline 2line 3line 4line 5line 6a new line 8с помощью команды
можно создать список отличий:diff$ <b>diff file1.c file2.с > diffs</b>Файл diffs содержит следующие строки:
1c1< This is file one--> This is file two4c4, 5< there is no line 4, this is line 5--> line 4> line 55a7> a new line 8