admin / 27.07.2018
Содержание
Yum и RPM являются отличными инструментами управления пакетами, но они имеют несколько малоизвестных вариантов и возможностей, которые позволяют делать некоторые весьма интересные вещи. Вам не обязательно непременно использовать их, но они могут вам пригодится когда-нибудь.
Эту простую мелочь довольно легко выполнить, и она будет очнь полезна людям, использующих x86_64 системы. Одна строка в файле ~/.rpmmacros спасет от неприятностей в дальнейшем.
echo "%_query_all_fmt %%{name}-%%{version}-%%{release}.%%{arch}" >> ~/.rpmmacros
Хотите получить список пакетов установленных из сторонних репозиториев, не CentOS?
rpm -qa —qf '%{NAME} %{VENDOR}\n' | grep -v CentOS
У вас возникла полная неразбериха с правами доступа на файлы в пакете? Не беда, RPM об этом позаботится.
rpm —setperms
Поскольку CentOS и исходный поставщик кода выпускают обновления безопасности, номера версий могут ввести в заблуждение, когда вы смотрите на CVE исправления. Проверка наличия изменений в пакете есть хороший способ увидеть — внесены ли исправления или нет. И снова RPM приходит на помощь.
rpm -q —changelog | less
Использование 'less' не является обязательным, но для некоторых пакетов, таких как ядро, изменения могут быть довольно обширными. Поэтому данное дополнение делает вывод более читабельным.
Чтобы быстро получить документацию, связанную с пакетом, вы можете использовать следующие два варианта:
rpm -qd
rpm -qdf /path/to/file
Иногда хочется знать, где вы получили пакет или пакеты, сколько в вашей системе пакетов от конкретного репозитория или поставщика. Есть несколько параметров поиска, которые можно использовать. Хотя они не 100% совершенны, тем не менее они могут помочь. Большинство пакетов из репозиториев имеют теги с идентификатором в строке Release. Например rpmforge использует rf в качестве идентификатора. Вы можете использовать это, чтобы посмотреть, что у вас установлено оттуда:
rpm -qa release="*rf*"
а если вы хотите увидеть, как много пакетов у вас установлено от Johnny Hughes-а можно использовать:
rpm -qa packager="Johnny*"
Этот метод работает на большинстве категорий вида rpm -qi
rpm -qa
Данная команда выдаст весь список установленных пакетов.
Если вам нужно извлечь только один файл из rpm без переустановки всего пакета, вы можете сделать это с rpm2cpio. Например, чтобы извлечь только один файл из logrotate rpm, используйте следующее:
rpm2cpio logrotate-1.0-1.i386.rpm |cpio -ivd etc/logrotate.conf
Полезно после обновления найти старые пакеты, которые не были обновлены.
rpm -qa —last >~/RPMS_by_Install_Date
Можно использовать 'less' для вывода, чтобы найти все RPMS старше, чем дата установки. Используя также grep — конкретизировать пакеты и дату установки.
Найти все пакеты, доступные из определенного репозитория, например RPMforge. Пакеты уже установленные из этого репозитория показываться не будут.
yum —disable "*" —enable "rpmforge" list available
Поиск пакетов, содержащих нужную строку в названии или описании пакета.
yum search buildrpmtree | less
Для того чтобы заставить Yum работать через прокси-сервер необходимо добавить следующий параметр в /etc/yum.conf:
proxy=http://yourproxy:8080/
где — yourproxy это имя прокси-сервера, а 8080 это порт прокси-сервера. Если сервер требует аутентификации, вы можете указать логин как:
proxy=http://username:password@yourproxy:8080/
RPM Package Manager позволяет использовать прокси-переменные среды. Это может быть задано в /etc/profile или специфизированно для конкретного пользователя в файле ~/.bash_profile::
export http_proxy=http://yourproxy:8080/ export ftp_proxy=http://yourproxy:8080/
Для использования wget через прокси-сервер, добавте следующие строки в /etc/wgetrc
http_proxy = http://yourproxy:8080/ ftp_proxy = http://yourproxy:8080/
В обоих случаях логин и пароль могут быть заданы как в примере выше.
yum —nogpgcheck localinstall packagename.arch.rpm
Иногда вам просто необходимо пересобрать определенный пакет — возможно, лишь добавить конфигурационные опции, которые просто не существуют в основном пакете. Или потому, что вы нашли необходимый пакет, который отсутствует в репозитории, а на сайте разработчика RPMs для другого дистрибутива. Таким образом, вы должны получить src.rpm и востановить его под себя. Но в действительности вы не хотите делать этого в качестве суперпользователя. Итак, как пересобрать свои пакеты в вашей домашней директории под собственной учетной записью.
Для начало необходимо настроить каталог для работы. Он имеет довольно полное сходство по структуре с каталогом /usr/src/redhat:
[testuser@shutdown ~]$ cd [testuser@shutdown ~]$ mkdir -p redhat/{SRPMS,RPMS,SPECS,BUILD,SOURCES} [testuser@shutdown ~]$ ls redhat/ BUILD RPMS SOURCES SPECS SRPMS [testuser@shutdown ~]$
С помощью rpm макроса произведем подмену, для того чтобы rpmbuild узнал о нас и о том что нужно собрать:
[testuser@shutdown ~]$ echo "%_topdir /home/testuser/redhat" >> .rpmmacros [testuser@shutdown ~]$ echo "%packager Test User " >> .rpmmacros [testuser@shutdown ~]$ cat .rpmmacros %_topdir /home/testuser/redhat %packager Test User [testuser@shutdown ~]$
Именно так. Следующее действие — задание rpmbuild-у —rebuild foo.src.rpm, результат работы будет в файле ~/redhat/RPMS/i386 (или та архитектура с которой вы строили пакет).
Для CentOS-4, настроить репозиторий kbs-Extras repo (опционально добавить kbs-Misk) со страницы репозиториев и 'yum install fedora-rpmdevtools' под root-ом используя 'sudo' или 'su -'. Завести юзера (возможно вы захотите использовать специальный аккаунт для того, чтобы избежать проблем в своей обычной домашней директории) и выполнить "fedora-buildrpmtree" и ~/rpmbuild/…в дереве каталогов и ~/.rpmmacros файл будет автоматически создан. (Примечание "rpmbuild" против "RedHat" в методе А.)
Для CentOS-5 — пакет rpmdevtools отсутствует в наличии. В FC6 SRPM rpmdevtools-5.3-1.fc6.src.rpm собирается и работает.
Ниже представлен макрос для получения надлежащих имен некоторых пакетов (замените соответствующую версию дистрибутива для "el4" на свою):
[testuser@shutdown ~]$ echo "%dist .el4" >> .rpmmacros
Вы можете получить список всех установленных у вас репозиториев — yum repolist all. Однако, он не показывает индекс приоритета. Вот строка необходимая для этого. Если номер не определен, по умолчанию, это самый низкий приоритет (99).
cat /etc/yum.repos.d/*.repo | sed -n -e "/^\[/h; /priority *=/{ G; s/\n/ /; s/ity=/ity = /; p }" | sort -k3n
[root@isp ~]# yum list 'vim*' Installed Packages vim-minimal.i386 2:7.0.109-7.el5 installed Available Packages vim-X11.i386 2:7.0.109-7.el5 base vim-augeas.i386 0.9.0-2.el5.rf rpmforge vim-clustershell.noarch 1.5.1-1.el5 epel vim-common.i386 2:7.0.109-7.el5 base vim-enhanced.i386 2:7.0.109-7.el5 base vim-halibut.i386 1.0-2.20100504svn8934.el5.1 epel vim-puppet.noarch 2.7.9-1.el5.rf rpmforge
Показать список всех ключей с соответствующей информацией репозитория:
rpm -q gpg-pubkey —qf '%{name}-%{version}-%{release} —> %{summary}\n'
Вы хотите подписать свой пакет, который собрали, чтобы другие могли убедится в его достоверности? Вы можете это сделать достаточно просто. Воспользуйтесь документацией Fedora RPM packaging guide.
Примечание: для CentOS 5 и 4, будет лучше, если вы будете использовать для подписи ключ DSA (так как для версии 4 RSA были выявлены проблемы с подтверждением).
Метапакет — это специальный пакет, не содержащий никакого программного обеспечения, но имеющий в зависимостях определенный набор софта. Например: установка X-ов на сервер.
Чтобы посмотреть список всех метапакетов, необходимо выполнить команду: yum grouplist. Но если у вас стоит русская локаль, то список будет выдан на русском языке. Чтобы получить список пригодный для установки (на английском), задайте язык вывода команды на английском:
LANG=C yum grouplist
Установленные пакеты могут показать команды
yum list installed
или
rpm -qa
Пример, порлучить список установленных пакетов из репозитория IUS:
[root@centos-6 ~]# yum list installed | grep ius php71u-cli.x86_64 7.1.17-1.ius.el6 @ius php71u-common.x86_64 7.1.17-1.ius.el6 @ius php71u-embedded.x86_64 7.1.17-1.ius.el6 @ius php71u-fpm.x86_64 7.1.17-1.ius.el6 @ius 7.1.17-1.ius.el6 @ius php71u-gd.x86_64 7.1.17-1.ius.el6 @ius php71u-intl.x86_64 7.1.17-1.ius.el6 @ius php71u-json.x86_64 7.1.17-1.ius.el6 @ius php71u-mbstring.x86_64 7.1.17-1.ius.el6 @ius php71u-pdo.x86_64 7.1.17-1.ius.el6 @ius 3.4.3-2.ius.el6 @ius php71u-pgsql.x86_64 7.1.17-1.ius.el6 @ius php71u-xml.x86_64 7.1.17-1.ius.el6 @ius php71u-xmlrpc.x86_64 7.1.17-1.ius.el6 @ius
Yellow Dog Updater, Modified (Yum) — это менеджер пакетов по умолчанию, используемый в CentOS (все версии). Он используется для установки и обновления пакетов из CentOS (и сторонних) репозиториев.
Используйте утилиту yum для изменения программного обеспечения в вашей системе:
— Чтобы установить новое программное обеспечение из репозиториев пакетов.
— Чтобы установить новое программное обеспечение из отдельного файла пакета.
— Чтобы обновлять существующее программное обеспечение в вашей системе.
— Чтобы удалять ненужное программное обеспечение из вашей системы.
Yum реализован как библиотека на языке программирования Python, с небольшим набором программ, которые представляют интерфейс командной строки. Также существуют оболочки на основе GUI, такие как Yum Extender (yumex). В настоящее время разрабатывается переписывание yum на основе libsolv с именем DNF и заменяет yum как диспетчер пакетов по умолчанию в Fedora 22.
В качестве полной замены своего предшественника — инструмента Yellowdog Updater (YUP), yum развивался в первую очередь для обновления и управления системами Red Hat Linux, используемыми в Отделе физики Университета Дьюка(Северная Каролина, США). Сет Видал и Майкл Стэннер разработали yum, в то время как yup первоначально разрабатывался и поддерживался Дэном Бурко, Брайаном Стиллвелом, Стивеном Эди и Трой Бенгегердес из Yellow Dog Linux. В 2003 году Роберт Г. Браун в университете Дьюка опубликовал документацию. В дальнейшем yuь включили в Red Hat Enterprise Linux, Fedora, CentOS и многие другие дистрибутивы Linux на основе RPM, включая сам Yellow Dog Linux, где он заменил исходную утилиту YUP, которая в прошлом обновлялась на SourceForge в 2001 году. К 2005 году он, по оценкам, был доступен на более чем половине рынка Linux.
Общая публичная лицензия GNU от yum разрешает бесплатное и свободное распространение программного обеспечения с открытым исходным кодом без каких-либо роялти, если соблюдаются другие условия лицензии.
Сэт Видал продолжал вносить свой вклад в yum до тех пор, пока он не погиб в результате велосипедной аварии в Дареме, штат Северная Каролина, 8 июля 2013 года.
Чтобы использовать yum, укажите функцию и один или несколько пакетов или групп пакетов. Для каждой операции yum загружает самую последнюю информацию о пакете из сконфигурированных репозиториев. Если ваша система использует медленное сетевое соединение, yum может потребовать несколько секунд для загрузки индексов репозитория и файлов заголовков для каждого пакета. Утилита yum ищет эти файлы данных для определения наилучшего набора действий для получения требуемого результата и отображает транзакцию для вас.
Транзакция может включать установку, обновление или удаление дополнительных пакетов для разрешения зависимостей программного обеспечения.
Для поиска установленных пакетов используются опции list, search, provide.
С помощью опции list выполняется поиск пакета по его названию. Пример:
# yum list package_name
Можно воспользоваться подстановкой значения с помощью символа *, экранируя его с помощью символа \ :
# yum list packagen\*
Вместо * можно использовать знак ?, который заменяет один любой символ в поиске:
# yum list mysq\?
Available Packages
mysql.x86_64 5.1.73-3.el6_5 updates
Поиск пакета в репозиториях по его имени (возможно по неполному слову) и в его описании:
# yum search squid
squid.x86_64 : The Squid proxy caching server
squidguard.x86_64 : Combined filter, redirector and access controller plugin for squid
squidguard-blacklists.noarch : Regularly updated blacklists for use with squidguard
calamaris.noarch : Squid native log format (NLF) analyzer and report generator
sarg.x86_64 : Squid usage report generator per user/ip/name
Опция provides используется для поиска пакета, содержащего указанный в поиске файл/каталог. К примеру, требуется узнать к какому пакету относится файл httpd.conf:
# yum provides */httpd.conf
httpd-2.2.15-15.el6.centos.1.i686 : Apache HTTP Server
Repo : base
Как установить пакет в CentOS:
# yum install mc
Можно указать несколько пакетов для установки, разделяя их пробелами.
Что бы YUM не запрашивал подтверждения установки пакета и/или его зависимостей — используйте ключ -y:
# yum -y install mc
Как переустановить пакет в CentOS:
# yum reinstall packagename
Как установить rpm-пакет в CentOS:
# yum localinstall nginx-2.25.i386.rpm
Как обновить установленный пакет в CentOS:
# yum update packagename
Как обновить все пакеты в CentOS:
# yum update
Как посмотреть список всех установленных в системе пакетов:
# yum list installed
Как посмотреть список установленных пакетов, которые можно обновить:
# yum check-update
Как выполнить downgrade пакета до его предыдущей версии:
# yum downgrade packagename
Как удалить установленный пакет из системы:
# yum remove packagename
YUM и репозитории
Показать список активных репозиториев из каталога /etc/yum.repos.d/ :
# yum repolist
Показать список всех (в том числе и неактивных) репозиториев из каталога /etc/yum.repos.d/ :
# yum repolist all
Получить информацию об установленных пакетах:
# yum info
О конкретном пакете:
# yum info packagename
Как исключить пакет из списка пакетов для обновления:
— открыть для редактирования файл /etc/yum.conf, и в него добавить строку:
exclude=packagename,packagename2
Как просмотреть список зависимостей пакета:
# yum deplist packagename
Посмотреть список последних действий YUM:
# yum history
Сервисные команды менеджера пакетов YUM
Как очистить кеш YUM:
# yum clean all
Пересоздать кеш:
# yum makecache
Как посмотреть список пакетов по дате их установки/обновления:
# rpm -qa —last | less
Запись опубликована автором MishLen в рубрике Система (Linux) с метками yum. Добавьте в закладки постоянную ссылку.
Дата: 25 февраля 2011
Данная статья описывает процесс создания RPM пакетов на примере Fedora.
RPM пакеты имеют собственную структуру, отличную от других. Но зачем создавать свои RPM, если можно просто скомпилировать исходники? Ответ на этот вопрос в рутинной установке, а также помощи разработчикам Fedora или другим дистрибутивам. Устанавливая каждый раз одни и те же программы из исходников, можно написать скрипт для автоматизации этого, однако, если есть RPM, то не надо тратить много времени на установку, также как и необходимая программа будет постоянно доступна онлайн из репозитория (конечно же, если вы ее туда отправите).
Итак приступим к подготовке рабочей среды для создания RPM.
# yum groupinstall «Development Tools»
# yum install rpmdevtools
На данной стадии происходит установка необходимых утилит и различных библиотек разработчика.
НИКОГДА НЕ СОЗДАВАЙТЕ RPM ОТ ROOT! (это может нарушить работу системы, увеличить возможность взлома и так далее)
После окончания установки, запустите
rpmdev-setuptree
Это приведет к создание ветки директорий
BUILD BUILDROOT RPMS SOURCES SPECS SRPMS
Из всех директорий нас интересует только SOURCES SPECS, информация в остальных, если все сделано верно, сгенерируется автоматически.
Теперь нам нужен .spec файл, примеры можно найти путем стачивания .src.rpm с репозитория, после распаковки, будет .spec файл, который необходимо поправить под наши нужды.
Сами исходники с патчами или без, копируем в SOURCES.
Когда все готово, запускаем компилирование и создание RPM
rpmbuild -ba ПУТЬ/NAME.spec для создания .src.rpm
rpmbuild -bi ПУТЬ/NAME.spec для создания бинарника или просто .rpm
Для установки и/или тестирования
# rpm -ivh sourcepackage-name*.src.rpm
или
# rpm -ivh package-name*.rpm
Если все сделано правильно, то программа установится с предупреждением, что rpb database изменена сторонней программой (правильно, мы же ее еще не залили на Fedora сервер).
Объяснение часто используемых областей в .spec файле
Name: Базовое имя пакета удовлетворяющее требованиям Packagen Naming Guidelines. После этого, макрос %{name} будет обращаться к данному разделу.
Version: Номер версии, при использовании даты в версии, используйте формат, гг.мм (пример 11.02). %{version} для последующего обращения к данной области.
Release: Должно быть 1%{?dist}, таким образом, число будет увеличиваться каждый раз, когда создается пакет для одной и той же версии дистрибутива.
Summary: Краткое описание пакета.
Group: Существующая группа пакетов, например Applications/Databases.
Чтобы узнать весь список
# less /usr/share/doc/rpm-*/GROUPS
Для документации будет соответственно группа Documentation.
License: Лицензия на программу, обязана быть для открытых исходников, например «GPLv2+» (GPL версии 2 или новее). Для нескольких лицензий используйте «and» или «or» «GPLv2 and BSD». Следует указывать лицензию максимально точно, можно указывать несколько лицензий с помощью «and» и «or», например «GPLv2 and BSD».
URL: Ссылка на сайт программы/проекта.
Source0: Ссылка на архив с исходным кодом. Если указана полная ссылка, то одноименный пакет должен быть в папке SOURCES. Если источников исходного кода несколько, то используем Source1, Source2 и т.д.
Patch0: Название первого патча для программы, имя файла должно заканчиваться на .patch и лежать в директории ~/rpmbuild/SOURCES. Патчей может быть несколько.
BuildArch: Архитектура программы под определенные процессоры. Для универсальных пакетов «noarch».
BuildRoot: Место, выделенное для компиляции и установки исходников приложения во время выполнения процесса «%install». По стандарту Fedora, будет создана специальная директория в /var/tmp.
Более новые версии RPM пропустят это значение и поместят build root в %{_topdir}/BUILDROOT/
BuildRequires: Список необходимых приложений для сборки пакета (через запятую). Автоматически не определяются. Некоторые стандартные приложения могут быть опущены в данном списке. Полный список приложений, которые могут быть пропущены здесь (https://fedoraproject.org/wiki/Packaging/Guidelines).
Requires: Список необходимых приложений для работы после установки (через запятую). В большинстве случаев определяются автоматически rpmbuild.
%description: Описание программы, строки не должны быть длиннее 80 символов.
%prep: Скрипты для подготовки программы, распаковки и подготовки к сборке.
%build: Скрипты для сборки программы, компиляции и подготовки к установке.
%test: Скрипты для тестирования программы, выполняются после %build, но до %install.
%install: Скрипты для установки программы, команды скопируют файлы из «build directory» %{_builddir} (которая находится ~/rpmbuild/BUILD) в директорию buildroot %{buildroot}, которая обычно находится в /var/tmp.
%clean: Инструкции для очистки buildroot, например,
rm -rf %{buildroot}
%files: Список устанавливаемых файлов.
%changelog: Изменения в программе.
//xenos88
Статья подготовлена опираясь на официальный источник от Fedora
Построить пакеты RPM довольно легко, особенно если вы можете получить программное обеспечение, которые вы пытаетесь упаковать чтобы построить для себя.
Основные процедуры чтобы построить пакет RPM следующие:
При нормальных условиях, RPM построит и двоичный пакет и пакет с исходным кодом.
Настройка RPM доступна через файл . Пример выглядит подобно:
Строка заставляет RPM найти строку производителя. Она может быть из файла или из заголовка самого spec-файла. Что выключить эту опцию, смените число на . Тоже самое является правдой для строк и .
Следующая строка это строка . Вы можете определить ее здесь или позже в заголовке spec-файла. При построении пакета для особого дистрибутива это хорошая идея убедиться что строка правильна, даже хотя она требуется. Строка обозначает тоже самое, но может быть чем угодно (например, Joe’s Software and Rock Music Emporium).
RPM также сейчас поддержку для построения пакетов для множественных архитектур. Файл может содержать переменную «optflags» для построения вещей, которые требуют специфических для данной архитектуры флагов для построения. Смотрите следующие разделы для описания как использовать эту переменную.
В добавление к вышеприведенным макросам, существует еще несколько. Вы можете использовать:
чтобы увидеть какие значения установлены у вас и какие флаги доступны.
Мы начнем с обсуждения spec-файла. Spec-файл требуется для построения пакета. Spec-файл это описание программного обеспечения вместе с инструкциями как построить пакет и списком файлов для всех устанавливаемых файлов.
Вы можете захотеть назвать ваш spec-файл согласно стандартному соглашению. Имя должно быть следующим: имя пакета-тире-номер версии-тире-номер выпуска (релиз)-точка-spec.
Здесь приведен маленький spec-файл (vim-3.0-1.spec):
Заголовок имеет несколько стандартных полей, которые вам необходимо заполнить. Также существует несколько предостережений. Поля должны быть заполнены как показано:
Это второй раздел в spec-файле. Он используется чтобы сделать исходные тексты готовыми к построению. Здесь вам необходимо сделать все что угодно чтобы сделать исправления в исходных текстах и сделать настройку подобную той, которую необходимо сделать чтобы выполнить .
Одно замечание: Каждый из этих разделов в действительности просто место для выполнения скриптов оболочки. Вы должны просто сделать -скрипт и поместить его после тага для распаковки и исправления ваших исходных текстов. Однако мы добавили макросы чтобы помочь вам сделать это.
Первый из этих макросов это макрос . В своей простейшей форме (без командной строки), он просто распаковывает исходные тексты и делает в директорию исходных текстов. Он также принимает следующие опции:
Следующий из имеющихся макросов это макрос . Этот макрос помогает автоматизировать процесс наложения заплаток на исходные тексты. Макрос имеет несколько опций, перечисленных ниже:
Это все макросы которые вам необходимы. После того как вы все сделаете правильно, вы также можете сделать любую другую настройку, которая необходима, используя скрипты на . Все что вы включите до макроса (обсуждаемого в следующем разделе) выполняется через . Посмотрите в вышеприведенном разделе для того чтобы увидеть какие вещи вы можете сделать если захотите.
Для этого раздела нет никаких макросов. Вы должны просто поместить здесь любые команды которые вам необходимо выполнить для построения программного обеспечения после того как вы распаковали исходные тексты, изменили их с помощью заплаток и вошли в директорию. Это просто другой набор команд передаваемых , так что любые команды могут быть здесь (включая комментарии) Ваша текущая директория устанавливается в каждом из этих разделов в корневую директорию для исходных текстов, так что помните это. Вы можете переходить в поддиректории если это необходимо.
В этом разделе также нет никаких макросов. Вам просто необходимо поместить команды необходимые для установки. Если для вашего пакета существует команда , то просто поместите ее здесь. Если ее нет, то вы можете сделать заплатку для makefile, чтобы выполнялась команда и просто делать здесь , или вы можете вручную устанавливать пакет с помощью команд .
Вы можете считать свою текущую директорию как корневую директорию для исходных текстов пакета.
Вы можете поместить скрипты которые запустятся до и после инсталляции и деинсталляции двоичного пакета. Основная причина для этого — это выполнение вещей подобных запуску после установки или удаления пакета, который содержит разделяемые библиотеки. Макросы для каждого из скриптов приведены как показано:
Содержимым разделов должны быть любые скрипты, хотя вам не нужно определять строку .
Это раздел где вы должны перечислить файлы для двоичного пакета. У RPM нет способа узнать какие двоичные файлы установлены как результат выполнения . НЕ существует способа сделать это. Некоторые предлагают выполнить команду до и после установки пакета. На многопользовательской системе это неприемлемо так как другие файлы могут быть созданы в течении процесса построения пакета, которые не имеют ничего общего с самим пакетом.
Есть несколько доступных макросов для выполнения специальных действий. Они перечислены и описаны здесь:
Наибольшое предостережение в списке файлов это перечисление директорий. Если вы случайно укажете , то ваш двоичный пакет будет содержать все файлы в директории на вашей системе.
Первая вещь которая вам необходима — это правильно настроенное дерево построения. Это настраивается используя файл . Большинство людей просто используют директорию .
Вам надо создать следующие директории чтобы создать дерево построения:
Первая вещь которую вы вероятно захотите сделать — это построить исходные тексты без использования RPM. Чтобы сделать это распакуйте исходные тексты и измените имя директории на $NAME.orig. Затем еще раз распакуйте исходные тексты. Используйте эти исходные тексты для построения. Перейдите в директорию исходных текстов и следуйте инструкциям по их построению. Если вы что-то редактировали вам необходимо сделать заплатку.
После того как вы построили исходные тексты, очистите директорию исходных текстов. Убедитесь что вы удалили все файлы созданные скриптом . Затем перейдите из директории исходных текстов в директорию являющуюся для них родительской. Затем сделайте что-то подобное:
Это создаст для вас заплатку, которую вы сможете использовать в вашем spec-файле. Заметим что «linux», который вы видите в имени заплатки это просто идентификатор. Вы можете захотеть использовать что-нибудь более описательное как «config» или «bugs» для описания почему вы сделали эту заплатку. Также хорошая идея посмотреть в файл заплатки, который вы создали, до его использования чтобы убедиться что бинарные файлы случайно не включены.
Сейчас у вас есть исходные тексты, которые будут строиться и вы знаете как построить и установить их.
Посмотрите в вывод установочной последовательности и постройте на его основе список ваших файлов для использования в spec-файле. Мы обычно создаем spec-файл параллельно со всеми описанными шагами. Вы можете сначала создать его и заполнить самые легкие его части, а затем затем заполнять его по мере прохождения всех этапов.
Когда вы имеете spec-файл, вы готовы попытаться и построить ваш пакет. Наиболее полезный способ сделать это — использовать команду похожую на следующую:
Также существуют другие опции полезные с переключателем :
Существует несколько модификаторов к переключателю . Это:
После того как вы построили двоичный пакет и пакет с исходным кодом, вам необходимо проверить их. Самый легкий и наилучший способ — это использовать для тестирования использовать другою машину, а не ту на которой вы создавали пакет. После всего вам только лишь надо выполнить несколько команд на вашей машине, так что все должно быть установлено.
Вы можете выполнить для тестирования пакета, но это может быть обманывающим потому-что в процессе построения пакета вы делали . Если вы пропустите что-нибудь в своем списке файлов, это не будет удалено при инсталляции. Если вы затем будете переставлять двоичный пакет, то все на вашей системе будет в норме, но сам пакет не будет полным. Будьте уверенными и помните, что если вы делали , то большинство людей будут устанавливать ваш пакет выполняя лишь команду . Будьте уверены, что вы не делаете ничего в разделах или , что должно будет быть сделано при установке только двоичного пакета.
После того как вы сделали свой собственный пакет RPM из чего-либо (предполагая что этого еще нет в виде RPM) вы можете предлагать свою работу другим людям (также предполагая, что ваш RPM свободно распространяемый). Чтобы сделать это вы можете захотеть загрузить пакет на сервер ftp.redhat.com.
Пожалуйста смотрите выше разделы «Тестирование пакета» и «Что делать с вашим новым пакетом RPM». Мы хотим сделать доступными все пакеты RPM которые мы можем получить и хотим чтобы это были хорошо сделанные пакеты. Пожалуйста найдите время для хорошего тестирования пакетов и найдите время для их загрузки для общей выгоды. Также пожалуйста будьте уверены, что вы загружаете только свободно распространяемое программное обеспечение. Коммерческое программное обеспечение и shareware не должны быть загружены до тех пор пока не будут иметь авторские права, которые определенно констатируют что это разрешено. Это включает программное обеспечение Netscape, ssh, pgp, и т.п.
FILED UNDER : IT