от Курс за ССОК
За разлика от ОС Windows, в Linux/UNIX съществуват различни файлови формати и помощни програми, чрез които се инсталира приложен и/или системен софтуер. Тези файлове носят общото наименование пакети (package) и структурата им ще бъде описана по-долу.
Дефиниции
Дистрибуция – множество съставено от ядрото на операционната система, системни библиотеки, приложни и помощни програми и файлове, окомплектовани да работят заедно и разпространявани на определен вид носител.
Пакет – програма, файлове с данни и/или конфигурационни файлове, библиотеки, драйвери и др. предоставящи определена функционалност. Пакетът може да бъде инсталиран на операционната система.
Зависимост – потребността от определена програма, файл и/или библиотека, за да функционира правилно даден пакет.
Система за инсталация – системни и/или помощни програми чрез които се инсталират пакети, поддържа се информация за версиите и наличните обновления.
Хранилище на пакети – определен вид медиен носител, на който се съхраняват пакетите и до който администраторът на операционната система има достъп. Хранилището съдържа индекс на всички файлове. Това може да бъде http/ftp сървър, компакт диск, локална директория на твърд диск или друг протокол за достъп до файлове.
Инсталиращ скрипт – изпълним текстов файл или програма, приемаща определени параметри и извършваща помощни действия по време на инсталация или премахване на пакета.
RPM - вид пакети използвани от редица дистрибуции: RedHat, Fedora, CentOS и други.
rpm / yum – основни програми за работа с RPM пакети. Може да се използва в интерактивен или автоматичен режим. Съществуват текстови и графични интерфейси за работа.
Класификация на системите за инсталиране на софтуер
Най-общо системите за инсталация могат да се разделят на следните групи:
- Система без поддръжка на зависимости
- Система с поддръжка на зависимости
- Система за инсталиране от изходен код
- Самосъдържаща се система
- Система с или без инсталиращи скриптове
Различните системи за инсталация могат да се комбинират една с друга, за да отговорят на различни потребности и/или да предоставят необходимата функционалност. На фигурата по-долу са предствени нагледно групите системи за инсталация, някои типове пакети както и използването им от някои операционни системи.
+-----------------+ +-----------------+
| без зависимости | | със зависимости |
+-----------------+ +-----------------+
^ ^
| +---------------------------+ |
| | | |
| +-----+-----+ | +-----+ |
+--+ Slackware +--+ +---+ rpm +---------+
| +-----------+ | | +-----+ |
| | | |
| +-----+ | | +-----+ |
+--+ tgz +--------+ +---+ deb +---------+
| +-----+ | | +-----+ |
| | | |
| +-----+ | | +------+ |
+--+ tbz +--------+ +---+ ipkg +--------+
+-----+ | | +------+ |
| | |
| | +------------+ |
| +---+ Solaris 10 +--+
| | +------------+ |
| | |
V V |
+-----------------+ +---------------+ +----+----+
| без инсталиращи | | с инсталиращи |<-----+ FreeBSD +
| скриптове | | скриптове | +----+----+
+-----------------+ +---------------+ |
^ |
| |
+--------------+----------------------+ |
| | | |
+-------+-------+ +--+--+ | +--------+ |
| MSI (Windows) | | PBI | +----+ Gentoo +-----+
+-------+-------+ +--+--+ +--------+ |
| | |
+--------------+ |
| |
V V
+---------------+ +------+------+
| самосъдържаща | | изходен код |
+---------------+ +-------------+
Система без поддръжка на зависимости
Този вид система не поддържа зависимости между пакетите. Даден пакет може да бъде инсталиран безпроблемно дори когато необходимите за неговото правилно функциониране програми не са инсталирани. Отговорност на администратора, поддържащ компютърната конфигурация е да инсталира всички необходими пакети. Информация за необходимите пакети и настройки обикновено се дава в текстов файл.
- Файлов формат: Компресирано дърво на директориите
- Файлово разширение: tar.gz, tar.bz2, tgz, tbz
- Начин на исталация: Разархвира се в главната или произволна директория
- Дистрибуция: Slackware, българската Tilix
Предимства: Проста схема за създаване и инсталиране на пакетите.
Недостатъци: Ако липсват управляващи програми е неудобна за използване от потребителя, ниско ниво на автоматизация. При инсталиране в произволна директория е трудно да поддържаме списък на всички програми, ако не се спазват някои правила (пр. инсталиране само в /home/<user name>/programs).
Пример:
Програмата CheckGmail, проверява за нови писма в пощенска кутия на www.gmail.com. Програмата е написана на Perl, затова е необходим Perl интерпретатор, за да работи. Администраторът трябва първо да инсталира Perl и след това програмата.
Извадка от README файла на програмата:
Изисквания за инсталация
---------------------------
CheckGmail изисква следните Perl модули:
Gtk2-perl
Gtk2-TrayIcon
libwww-perl
Crypt-SSLeay
XML-Simple
За да съхранявате паролата си в криптиран вид на твърдия диск:
Crypt-Simple
Crypt-Blowfish
FreezeThaw
Compress-Zlib
Digest-MD5
MIME-Base64
А за да можете да използвате собствени икони, показващи статуса на пощенската Ви кутия, са необходими:
Gtk >= 2.6
Gtk2-Perl bindings updated to Gtk-2.6
Система с поддръжка на зависимости
Поддържа зависимости между пакетите. В процеса на инсталиране или обновяване на дадена програма, всички зависимости се удовлетворяват, т.е. инсталират се всички необходими пакети автоматично. Списъкът от зависимости се съдържа в самия пакет. Съществуват много такива системи. За целите на изложението използваме една от най-разпространените системи - rpm пакетите.
Предимства: Лесна за използване от потребителя в интерактивен и автоматичен режим. Функционалността на системата е реализирана в библиотека и съществуват множество графични или текстови помощни програми. Опитните администратори могат да използват и само команди на обвивката.
Недостатъци: Възможност за поява на грешни или непълни зависимости. Възможност за поява на неразрешими зависимости. Необходим е екип от тестери и разработчици, които да поддържат пакетите и правилните зависимости между тях.
Пример:
Ако потребителят желае да инсталира програмата bzr-gtk, но няма инсталирани някои от зависимостите, yum автоматично ще ги инсталира заедно с инсталацията на желаната програма.
Инсталирането може да изглежда по следния начин:
# yum install bzr-gtk
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package bzr-gtk.x86_64 0:0.94.0-2.el5 set to be updated
--> Processing Dependency: bzr >= 1.0 for package: bzr-gtk
--> Running transaction check
---> Package bzr.x86_64 0:1.3.1-1.el5.1 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
bzr-gtk x86_64 0.94.0-2.el5 epel 420 k
Installing for dependencies:
bzr x86_64 1.3.1-1.el5.1 epel 6.5 M
Transaction Summary
=============================================================================
Install 2 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 6.9 M
Is this ok [y/N]: y
Downloading Packages:
(1/2): bzr-gtk-0.94.0-2.e 100% |=========================| 420 kB 00:00
(2/2): bzr-1.3.1-1.el5.1. 100% |=========================| 6.5 MB 00:01
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: bzr ######################### [1/2]
Installing: bzr-gtk ######################### [2/2]
Installed: bzr-gtk.x86_64 0:0.94.0-2.el5
Dependency Installed: bzr.x86_64 0:1.3.1-1.el5.1
Complete!
Система за инсталиране от изходен код
Програмите се разпространяват само като изходен код. Те се компилират на компютъра, на който се инсталират. Може да се комбинира с поддръжка на зависимости, т.к. програмите използват различни библиотеки.
- Файлов формат: Компресиран изходен код.
- Файлово разширение: tar.gz, tar.bz2, tgz, tbz, zip
- Начин на инсталация: използва се Makefile или рецепта за инсталиране
- Дистрибуция: Gentоо, FreeBSD
Предимства: Дава възможност за фина настройка на програмите преди компилация, напр. включване на оптимизации за определен вид процесор/компилатор, изключване на ненужни модули от програмата. Може да се интегрира с удобни за използване помощни програми. FreeBSD интегрира системата за инсталиране от изходен код и на компилирани програми.
Недостатъци: Потребителят трябва да е запознат с програмата, възможностите за фина настройка и оптимизация. Нужни са познания по програмиране. Използва се от напреднали потребители, където е необходима върхова производителност.
Рядко съществуват помощни програми освен make. Не е добра практика да се комбинира инсталирането на компилирани програми и такива разпространявани в изходен код, освен когато това не е интегрирано в самата ОС. Това трябва да се прави само при необходимост.
Примерна инсталация може да изгледжа така:
$ cd /path/to/src
$ ./configure –INSTALL_DIR=/usr/local/bin
$ make
# make install
$ make clean
Самосъдържаща се система
Не поддържа зависимости в явен вид. Всички файлове и необходими библиотеки са включени в пакета. Програмите се модифицират при нужда, за да използват файлове в локалната директория. Пътят за търсене на библиотеки включва локалната директория.
- Файлов формат: Двоичен или изпълним файл с определена структура, често компресиран.
- Файлово разширение: Зависи от дистрибуцията.
- Начин на инсталация: Самоинсталиращи се или помощни програми.
- Дистрибуция: PC-BSD, Microsoft Windows.
Предимства: Лесна за използване от потребителя. Намалява възможността за счупени пакети. Добра интеграция с графичната среда.
Недостатъци: Дублиране на файлове и библиотеки. Използва повече място на диска. Появяват се различни версии на библиотеките в различни директории. Включването на локалната директория в пътя за търсене представлява риск за сигурността на операционната система.
Пример: Създаване на инсталационен пакет за PC-BSD. За примера използваме популярния интернет браузър Opera.
1. Създаваме временна работна директория: $ mkdir -p ~/pbi/opera
2. Разархивираме прекомпилирана версия на Opera, в работната директория:
$ tar -xvjpf ~/opera-9.0-shared-qt.i386.freebsd-en.tar.bz2 -C ~/pbi/opera/
$ cd ~/pbi/opera/opera-9.0-static-qt.i386-en-333
$ mv * ../../opera
$ cd .. && rm -f opera-9.0-static-qt.i386-en-333
След горните действия всички файлове са в работната директория.
3. Можем да добавим допълнителни икони или преводи на различни езици.
4. Преименуваме файла opera на opera.sh:
$ cd ~/pbi/opera
$ mv opera opera.sh
5. Opera трябва да се стартира от работната си директория. Създаваме нов файл, който ще прави това: $ kwrite opera И добавяме:
#!/bin/sh
cd /Programs/Opera9.02
./opera.sh $@
Запис и изход.
6. В оригинала са описани допълнителни действия, които позволяват настройка на Java, добавяне на икони на десктопа и т.н.
7. След като сме готови с настройките използваме програмата PBI Creator, за да създадем пакета за инсталация.
Система с или без инсталиращи скриптове
Съдържа или не помощни програми изпълнявани по време на инсталация. В повечето случаи това са 4 програми:
- pre install – действия преди самата инсталация, пр. добавяне на нов потребител
- post install – действия след инсталация, пр. създаване на връзки и икони
- pre remove – действия преди премахване, пр. изтриване на връзки и икони
- post remove – действия след премахване, пр. изтриване на потребител
Тази система е независима от модела на управление на зависимостите.
Дистрибиция: Повечето дистрибиции комбинират системата за инсталация на пакети с инсталиращи скриптове. По-този начин се предоставя гъвкавост при управление процеса на инсталация. Добавя се допълнителна логика извън процеса на копиране файловете на определено място.
Пример:
В операционната система Solaris 10 съществуват повече инсталиращи скриптове. Това са:
- request – използва се за събиране на информация от администратора по време на инсталация. Стойностите на избраните параметри са достъпни чрез променливи на средата и чрез текстов файл. Изпълнява се пръв ако съществува.
- checkinstall – използва се за проверка на допълнителни условия относно файловата система на машината на която се инсталира пакета. Това могат да бъдат проверки за наличие на база данни, за съществуване на стара версия на файл който ще бъде презаписан, за наличие на дисково пространство. Изпълнява се след request.
- preinstall – изпълнява се само преди инсталация.
- postinstall – изпълнява се само след инсталация.
- preremove – изпълнява се преди премахване на пакета.
- postremove – изпълнява се след премахване на пакета.
Действие върху клас – структурата на пакети в Solaris 10 позволява асоциирането на даден обект, файл или директория с име на клас. По подразбиране съществува клас с име none. Този тип скриптове се изпълняват с параметър списък с обектите от дадения клас. Имената се образуват по следния начин:
- i.<име_на_клас> - изпълнява се за обектите от класа по време на инсталация
- r.<име_на_клас> - изпълнява се за обектите от класа по време на премахване
Достъпни са и четири системни класа:
- sed – използва инструкции на тексто обработващата програма sed, за промяна на файлове по време на инсталация или премахване.
- awk – използва инструкции на програмата за регулярни изрази awk, за промяна на файлове по време на инсталация или премахване.
- build – предоставя метод за динамично създаване или редактиране на файл, чрез използване команди на обвивката на Борн.
- preserve – предоставя метод за запазване на файлове, които не трябва да бъдат презаписвани при бъдещи инсталации на пакета, например важни конфигурационни файлове.
Връзки