Пакет
О каталогах
Лектор не знает, говорил ли он про это, но он ещё раз говорит: в Линуксе достаточно аккуратно проделано разделение прав доступа, и без ведома пользователя к ним другой пользователь не имеет доступа. Тем не менее, процессы под рутом чихать хотели на них. И установка делается под рутом. Для простого пользователя на запись открыты только ~ и /tmp, а некоторые закрыты и на чтение, и установку специфического ПО, кроме как в свой каталог, пользователь не может, а рут может.
В линуксе существует строгая иерархия каталогов (FHS), которая описывает какие есть каталоги, и для чего они нужны. Почитайте FHS, почитайте учебник лектора. Существует 4 места для ПО, существует 2 каталога для разделяемых библиотек, существует 1 каталог для документации, и так далее. Каждая программа, состоящая из многих файлов, раскидывает их по дереву.
Типичная структура:
- /usr/bin/prog
- /usr/share/doc/proc/README
- /usr/share/man/1/prog.tgz
И это всё один программный продукт.
Пакет
Теперь сведём всё это воедино и выстроим понятие пакета. Вводим понятие пакета:
Пакет --- файл, содержащий всё необходимое для установки и удаления программного продукта.
- Пакет --- архив. В отличие от системы, в которой нет иерархии каталогов, этот архив имеет понятную структуру. Это архив вполне известной структуры. Достаточно ли просто его разархивировать? Нет.
- Регистрация в системе.
- Первичная настройка.
Этого на самом деле недостаточно. А в случае, если эти файлы уже есть? Конфликт.
Разделяемая библиотека.
- При использовании библиотек программы занимают мало место
- Библиотека загружается в память один раз
- Для такой штуки не нужно даже своп заводить --- свопом этого файла будет файл на диске.
- Если библиотека имеет ошибку, то её быстро найдут
- Зависимости. Разделяемые библиотеки в пакет не входят. Каждая группа библиотек лежит в отдельном пакете. И перед установкой программного продукта нужно установить все его зависимости. Палка о двух концах. С одной стороны, очень упрощает разработку; усложняет оно порядок установки программ --- необходимо скачать всё дерево (ацикличесикй орграф) зависимостей. В любом дистре линукс существует две программы --- программа-установщик и менеджер пакетов. В частности, в качестве установщика используется rpm, а в качестве установщика --- apt. Очень важная штука для понимания того, что такое дистрибутив.
Вернёмся к бинарнику. Теперь понятно, почему скачанный бинарник может не заработать. Потому что кроме того, что там непонятно какие зависимости, каких версий... Поэтому делают сборки под разные дистрибутивы. Или делают статическую линковку. Поэтому гораздо больше вероятность, что запустится бинарник, чем чужой rpm.
- Конфликты. Пакеты называются одинаково (vi), но файлы разные. Есть метод --- альтернатива --- который позволяет избежать конфликтов. Будет vi, но будет ещё файл vi.original, и там будет несколько файлов, и за имя vi побеждает тот, у кого вес больше.
Кроме этого существуют непрямые зависимости. Может быть такая ситуация, что для работы вашего продукта другой программный продукт не нужен. Например, для почтового вебсервера нужен почтовый сервер --- нет, но это ситуация редкая. Поэтому установка почтового сервера требовать или нет? По-хорошему надо, но это рекомендованный пакет. <i>(vvk: веб-интерфейс может быть размещён на отдельном хосте, ovz-контейнере, etc, так что в данном случае такая зависимость скорее вредна чем полезна ;))</i> По принципу нестрогих зависимостей была устроена документация в альте.
В рамках дистрибутива всё будет хорошо.
Когда вы обращаетесь к хранилищу, может случиться ситуация, что уже все поменялось. В этом случае можно попробовать следующий способ: помимо rpm есть src.rpm, в котором всё необходимое для сборки программного продукта. Можно скачать src.rpm и пересобрать его в своём окружении. Всё сводитя к выполнению новых команд:
- Скачать src.rpm
- Собрать. Образуется бинарный rpm
- Бинарный rpm встанет со всеми зависимости
Рассказ про us army lab
Важная вещь: откуда берутся пакеты. Существует хранилище (указанное в /etc/apt/sources.list), которое в сумме даёт граф зависимостей, их можно как-то сравнивать и производить обновления.
Против чужих пакетов в репозитории:
- Чужие пакеты --- может перестать работать обновление
- Сборка. Если хотите активно пользоваться программой, то скачали, conf-make-make install, потом ещё раз скачали... В результате, 16 версий библиотеки, удалить их нельзя, потому что может их ещё кто-то использовать, начинают находиться старые библиотеки вместо новых. Поэтому надо класть в сизиф собранные пакты.
Сведения о ресурсах
Готовность (%) |
Продолжительность (ак. ч.) |
Подготовка (календ. ч.) |
Полный текст (раб. д.) |
Предварительные знания |
Level |
Maintainer |
Start date |
End date |
0 |
1 |
1 |
1 |
|
1 |
|
|