Удовлетворяване на зависимостите

Получаването на правилния софтуер често е най-трудната задача. Един потенциален проблем е съществуването на софтуерни зависимости от други програми и библиотеки. В процеса на работа с направи трябва да обърнете внимание на библиотеките на трети страни, които са необходими за компилацията. Тези зависимости трябва по-късно да бъдат включени в спецификацията на пакета на етапа на изграждане на rpm. Като цяло, всяка зависимост се задоволява със своя собствен rpm пакет, така че трябва да се погрижите да направите тези rpm пакети достъпни.

Когато се постигнат три цели: осигурена е възпроизводима компилация, планират се актуализации, всички зависимости са изпълнени, можете да започнете да изграждате самия пакет rpm.

В Red Hat Linux родителската директория за дървото на директории за изграждане обикновено е/usr/src/redhat.
Тъй като RPM първоначално е проектиран за изграждане на дистрибуции на Linux като цяло, този път може да се различава от посочения в други системи и може да бъде променен чрез редактиране на rpmrc файлове.

Най-лесният начин е да използвате пътя към директориите за изграждане, които вече са в системата. За да изградите под непривилегирован потребител, може да се наложи да промените правата за достъп до тях. Трябва да се помни, че грешките в изграждането на rpm пакети могат да доведат до сериозни проблеми в системата, ако компилацията се изпълнява като root потребител.

За да започнете да изграждате пакета, остават две стъпки:

  • - поставете изходния код в SOURCE;
    - поставете спецификационен файл в SPECS.

Най-общо казано, можете да поставите дървото на източника на вашия проект в ИЗТОЧНИЦИ. Но е много по-удобно (и по този начин се прави), особено ако ще има много пакети, да поставите tarball там. Тогава, в прост случай, ще има по един архивен файл за всеки изграден пакет. Архивът ще бъде отворен с помощта на RPM макроси, което е тривиално от гледна точка на потребителя. Това помага да се запази изходният код на различни проекти отделно един от друг, тъй като всички те са в директорията SOURCES.

Конвенцията за именуване на tarball на източника предлага следното споразумение за именуване: package_name-version.tar.gz. Поставяйки архива в ИЗТОЧНИЦИ, операторът прави скриптове за изграждане, изходен код и всичко останало достъпно за RPM.

Файл със спецификации, съкращение от "файл със спецификации", дефинира всички действия на помощната програма rpmbuild, които трябва да бъдат извършени при изграждането на приложението, както и всички действия, необходими при инсталиране/деинсталиране на приложението. Всеки пакет src.rpm съдържа файл със спецификации за последващо възстановяване на пакета.

Файлът със спецификации е текстов файл. Конвенцията за именуване предлага именуване на спец файла по този начин:

Текстът във файла със спецификации има специален синтаксис. Дефинициите на синтаксиса имат стойности, които указват реда за изграждане, номера на версията, информацията за зависимостите и като цяло цялата информация за пакета, която впоследствие може да бъде поискана от базата данни RPM.

Въведение раздел

Разделът с обща информация съдържа информация за пакета, който след инсталирането му може да бъде поискан с командата rpm -qi package_name. Например:

За да проследявате промените в изискванията от версия на версия на rpm, можете да анализирате спецификационните файлове на пакетите на съвременните сглобки и да ги сравните с предишни сглобки.

Подготвителен раздел

Разделът за подготовка отговаря за командите, необходими за стартиране на компилацията. Например, ако SOURCES съдържа tarball на проект, той трябва да бъде разопакован. Разделът определя съответните макроси за rpm за това:

Разделът започва с ред % подготовка. Този пример използва макроса % настройвам, които могат да разопаковат компресирани архиви. Това обикновено е единственият ред в този раздел.

Раздел за изграждане

Разделът за изграждане съдържа команди за изграждане на софтуер. Обикновено тук присъстват само няколко команди, например:

В този пример са включени два параметъра на скрипта за конфигуриране (флагове за оптимизация на компилатора и името на временната директория за изграждане) и командата make (няма параметър, т.е. за всички цели). Разделът започва с линия% build.

Инсталирайте секцията

Разделът съдържа команди за инсталиране на пакетни файлове в системата. Например:

На този етап изчистваме директорията за изграждане и копираме файловете на пакетите в директорията, посочена от опцията --префикс. Ако не почистите директорията за компилация, файловете от стари компилации могат да компрометират чистата инсталация. Разделът започва с ред % Инсталирай.

Чист участък

Командите в този раздел почистват файлове, създадени на други етапи:

Разделът започва с ред % чист.

Раздел Файлове

И накрая, командите в раздела за файлове указват списъците с файлове и директории, които със съответните атрибути трябва да бъдат копирани от дървото за изграждане в пакета rpm и след това копирани в целевата система, когато този пакет е инсталиран. Например:

Разделът започва с ред % файлове. Макро % док маркира файлове с документация. Това позволява да се компилира документация от подходящи файлове на проекта.

След като приключите с редактирането на файла със спецификациите, остава да го поставите в директорията SPECS под/usr/src/redhat и tarball с изходния код в SOURCES. Всичко е готово за изграждане на обороти в минута.

пакети

Re: Изграждане на rpm пакети

Съобщение Гарван "14 декември 2010 г., 12:49