Колисниченко Д.Н. - Linux-сервер своими руками (1077324), страница 98
Текст из файла (страница 98)
Установитьразмер каждой части можно с помощью параметра -С. Если вам нужно разбитьфайл на определенное количество строк, используйте параметр -число.426Полезные команды и программы. Создание RPM-пакетовtac[параметры]файлВыводит содержимое файла в обратном порядке — от последней строкидо первой. Данная программа противоположна программе cat.tail [параметры] файлДанная программа противоположна программе head. Другими словами,программа tail выводит последние 10 строк файла. Указать другое числоможно с помощью параметра -1 число.tr [параметры] строка! строка2Программа tr заменяет строку строка! на строку строка2. Обычно используется для поиска и замены символов в указанных строках.
За болееподробной информацией обратитесь к справочной системе.unexpand [параметры] файлПрограмма unexpand заменяет в текстовом файле последовательностьпробелов на символы табуляции. С помощью параметра -а можно заменитьвсе последовательные пробелы на символы табуляции. По умолчанию замена производится только в начале строки.
Параметр -t n определяет, сколькопробелов будут заменены на один символ табуляции. По умолчанию аргумент n равен 8.uniq [параметр] файл! файл2Программа uniq удаляет повторяющиеся строки из файла файл! и записывает в файл файл2. Если параметр фаш2 не указан, то программа выводитрезультат на стандартный вывод. Параметры данной программы представлены в табл. 19.32.Параметры программы ипТаблица 19.32ПараметрОписание-сПодсчитывает количество повторяющихся строк-dВыводит только повторяющиеся строки-f nПропускает указанное число полей строки-зчислоПропускает указанное число символов поля-иВыводит только неповторяющиеся строки-w nСравнивает первые n символов строк-числоПропуск указанного числа полей в строке+ЧИСЛОПропуск указанного числа символов в строке-check-chars=n Сравнивает первые n символов строк-skip-chars=nПропускает первые n символов в строке-skip-fields=nviПропускает первые n полей в строке.
Поля разделяются пробелами или символами табуляции[параметры]файлПрограмма vi — это текстовый редактор. Более подробную информациювы сможете получить в справочной системе.we [параметры]файлЭта программа подсчитывает количество строк, символов или слов втекстовом файле.
Если файл не указан, используется стандартный ввод.Данную программу удобно использовать при написании сценариев обработки текста. Параметры программы рассмотрены в табл. 19.33.427Полезные команды и программы. Создание RPM-пакетовПараметры программы weТаблица 19.33ОписаниеПараметр-bytesПодсчет количества байтов-сПодсчет количества символов--chars-IПодсчет количества символов-linesПодсчет количества строкПодсчет количества строкПодсчет количества слов. Данный параметр используется по умолчанию--wordsПодсчет количества слов. Данный параметр используется по умолчаниюxedit файлПрограмма xedit является простейшим текстовым редактором, предназначенным для работы в системе X Window.
Вместо него обычно удобнееиспользовать редакторы kedit или gedit. Первый из них является стандартным редактором оконной среды КОЕ, а второй — оконной среды Gnome.zdiff файлыДанная программа распаковывает архивы gzip и выполняет программу diff.79.5. Создание RPM-пакетовПрограмма RPM предназначена для произведения всех видов операций спрограммным обеспечением, в том числе и для создания пакетов для установки (RPM-пакетов).Прежде, чем описать много сухих фактов, взятых из документации,рассмотрим простой пример создания небольшого RPM-пакета. Я создалэтот пакет для своей программки, которая контролирует состояние указанного последовательного порта.Будем считать, что программа уже откомпилирована и все файлы, необходимые для ее работы, уже подготовлены.
При этом понадобятся следующие файлы:portоткомпилированный бинарный файл.READMEфайл, который будет помещен в каталог /usr/doc/port-l.0-99.port.lфайл для справочной системы man.Все эти файлы я поместил в каталог /root/port. Конечно, это несовсем корректно, но об этом будет сказано немного позже.Для создания пакета нужно создать файл спецификаций. В файле спецификаций указывается вся информация о создаваемом пакете: название,версия, файлы программ, файлы документации, действия, выполняемые приустановке пакета и при его удалении. Мой файл спецификаций для программы port представлен в листинге 19.1Листинг 19.1.
Файл спецификации для программы portSummary: Program to c o n t r o l y o u r s e r i a l deviceName: portV e r s i o n : 1.0R e l e a s e : 101Group: MonitoringL i c e n s e : GPL428Полезные команды и программы. Создание RPM-пакетовPackager: Denis K o l i s n i c h e n k o [ d h s i l a b s @ m a i l .
r u ]URL: h t t p : / / d k w s . n a r o d . r u%descriptionПрограмма port предназначена для мониторинга состояния последовательногопорта. При получении сигнала (1) на какой-нибудь контакт указанного порта,port отправляет сообщение запустившему ее пользователю на указанный email%files%doc / r o o t / p o r t / R E A D M E/root/port/port/root/port/port.1Для построения пакета нужно ввести команду:# rpm -bb / r o o t / p o r t / p o r t . s p e cЕсли вы не допустили никаких ошибок при создании файла спецификаций, на экране вы увидите примерно такое сообщение:E x e c u t i n g ( % i n s t a l l ) : / b i n / s h -e / v a r / t m p / r p m - t m p .
3 3 4 3 9Proces'sing f i l e s : port-1.0-99FindingProvides: ( u s i n g / u s r / l i b / r p m / f i n d - p r o v i d e s ) . . .Finding R e q u i r e s : (using / u s r / l i b / r p m / f i n d - r e q u i r e s ) . . .Requires: Id-linux.so.2 l i b c . s o . 6 l i b c . s o . 6 ( G L I B C _ 2 . 0 )Записан: /usr/src/RPM/RPMS/i686/port-l.0-99.1686.rpm'При этом будет создан пакет port-l.0-99.i686.rpm. Этот пакет будетпомещен в каталог /usr/src/RPM/RPMS/i686.При удалении такого пакета он будет удален из базы RPM, но удалениясамих файлов не произойдет. Действия, которые нужно выполнить до ипосле удаления пакета из базы RPM, вы можете определить в макрокомандах %preun и %postun соответственно.
Например,%preunrm -f / u s r / b i n / p o r trm -f / u s r / m a n / m a n l / p o r t . 1Такой подход — самый простой выход из положения, однако он является не очень корректным. Решение этой проблемы оставляю вам в качестведомашнего задания.А сейчас проведем небольшой эксперимент. Запустите MidnightCommander (me), перейдите в каталог / u s r / s r c / R P M / R P M S / i 6 8 6 / и «войдите» в пакет port-l.0-99.i686.rpm как в обычный каталог.
В нем будет«подкаталог» INFO, в котором и содержится вся информация о пакете.Что ж, вы успешно разобрались с построением простого пакета, но длясоздания реальных пакетов установки ваших знаний все еще не хватает. Теперьнастала очередь той сухой теории, о которой я упомянул в начале этого пункта.Традиционно, процедура создания RPM-пакетов состоит из следующих этапов:1. Извлечения исходных текстов программы из архива."2. Компилирование программы из исходных текстов.3. Создание RPM-пакета.429Полезные команды и программы.
Создание RPM-пакетовПервые два этапа можно пропустить, что мы и сделали при созданиипакета. Такое можно сделать только в случае, если программа уже откомпилирована из исходных текстов.Программа RPM использует файл конфигурации rpmrc. Поиск этогофайла производится в каталогах /usr/lib/rpm, /etc, $HOME. Просмотретьэтот файл можно с помощью команды:# rpm —showrcЗапись topdir файла конфигурации rpmrc содержит название каталога, вкотором находится дерево подкаталогов, которое используется менеджеромRPM для построения пакетов. Введите команду:# rpm —showrc | grep topdir-14-14-14-14-14-14_builddir %{_topdir}/BUILD_rpmdir%{_topdir}/RPMS_sourcedir %{_topdir}/SOURCES_specdir%{_topdir}/SPECS_srcrpmdir %{_topdir}/SRPMStopdir%{ usrsrc}/RPMУ меня эти подкаталоги находятся в каталоге /usr/src/RPM.
Как вывидите, в этом каталоге находятся подкаталоги BUILD, RPMS, SOURCES,SPECS, SRPMS.В каталоге BUILD создается RPM-пакет. В каталоге SOURCES находятся сжатые исходные тексты программы. В каталог RPMS помещаются созданные пакеты. Точнее, они помещаются в один из его подкаталогов, вкакой именно — это зависит от архитектуры. В каталог SRPMS помещаютсяпакеты, содержащие исходные тексты программы. В каталоге SPECS находятся файлы спецификаций.
Обычно файл спецификации называется название_программы-версия-релиз.8рес.Например, если у вас есть исходный текст программы в архиве, изкоторого вы хотите создать пакет RPM, скопируйте его в каталог SOURCES:# ср s o u r c e _ c o d e - l . 0 . t a r . g z /usr/src/RPM/SOURCES.По умолчанию менеджер RPM работает с пакетами, расположенными вкаталоге с именем, совпадающим с названием пакета и его версией. Длянашего пакета port это будет каталог port-1. 0-99. Менеджер пакетов будеткомпилировать наш пакет в каталог /usr/src/RPM/port-l .0-99.Думаю, уже достаточно информации о каталогах RPM. Теперь перейдемк файлу спецификаций. Файл спецификаций состоит из четырех сегментов:заголовка, подготовительного, файлового, установочного.
В заголовке указывается общая информация о пакете. В листинге 19.1 к сегменту заголовкаотносятся тэги Summary, Name, Version, Release, Group и License. На них мыостанавливаться не будем, так как их назначение понятно из листинга 19.1.Есть еще очень полезный тэг: BuildRoot. Он изменяет расположениедерева BUILD. Значением по умолчанию является / u s r / s r c / R P M илидругой каталог, задаваемый переменной окружения $RPM_BUILD_ROOT.В целях экономии дискового пространства полезно после установки удалить дерево %RPM_BUILD_ROOT.