> Лекция седьмая -- Пакеты в дистрибутиве Linux Показаны отличия _дистрибутива_ свободного ПО от произвольного набора программ. Введно и раскрыто понятие <пакет|>. Описаны средства работы с пакетвми. > Дистрибутив Linux >> Система -- не свалка Дистрибутив -- коллекция ПО, следующая строгой <дисциплине>: . Использование общего <хранилища> . Каждый пакет имеет <сопровождающего> . <Сборка> ПО из исходного текста . <Свободный> доступ к исходным текстам ПО . <Совместное> тестирование (в идеале -- всех) программ . <Стандарт> на размещение файлов (FHS) Сложнее при создании ПО, проще при использовании. > Архив с удобствами >> Прокатись и выбрось Задача: обеспечить удобную установку, проверку и удаление ПО в пакете . @Архив файлов|run://rpm2cpio /image/ALTLinux/RPMS.main/xlogo-* \| cpio -it@ в стандартных каталогах . Дополнительная @информация|run://rpm -qi icewm@ . <Регистрация> в системе: @список|run://rpm -ql bzip2@, тип и контрольная сумма файлов . <Настройка> системы и служб: @post-сценарии|run://rpmquery --scripts IceWMCP@ . Следствие: ``прозрачная'' установка и удаление пакета Пакеты в разных дистрибутивах: rpm, deb, ... > Зависимости и конфликты -- 1 >> Общественная собственность на средства производства Что входит в ``полный'' пакет прикладных программ: . Исполняемые файлы и настройки . @Разделяемые библиотеки|run://ls /usr/lib;;ls /usr/lib \| fgrep .so \| wc@ . Запускаемые утилиты Linux . Дополнения (``plugins'') Что должно входить в _отдельные_ пакеты: . @Используемые другими программами утилиты|run://rpm -qf /bin/ls@ . @Разделяемые несколькими программами библиотеки|run://rpm -qf /usr/lib/libcairo*@ . Дополнения, без которых можно обойтись Некоторые пакеты бессмысленно устанавливать порознь, а некоторые -- вместе. > Зависимости и конфликты -- 2 >> Правила коммунального общежития . Зависимости (пакеты не используются друг без друга) .. @На другие пакеты|run://rpm -qRp /image/ALTLinux/RPMS.main/xpdf-3.02-alt1.i586.rpm@ .. @На файлы|run://rpm -qRp /image/ALTLinux/RPMS.main/xpdf-reader-3.02-alt1.i586.rpm@ (файл неважно из какого пакета) .. @На ``функциональности'' (псевдопакеты)|run://rpm -q --provides vim-minimal@ (пакет, умеющий делать нечто) . @Дерево зависимостей|run://apt-cache depends idesk;;apt-cache depends idesk --recurse \| wc@ и @виртуальные пакеты|run://rpm -qR xorg-x11;;rpm -ql xorg-x11@ . Конфликты и @альтернативы|run://alternatives-list;;alternatives-display /usr/bin/xvt@ > Установщик пакетов >> -- У нас все ходы записаны! Установщик работает с <одним> пакетом . @Проверить целостность файла|run://su -;;rpm -v --checksig /image/ALTLinux/RPMS.main/tornado*@ . Проверить зависимости . @Установить пакет|run://rpm -v -i /image/ALTLinux/RPMS.main/tornado*@ . @Проверить целостность установленного пакета|run://date >> /usr/share/locale/no/L*/tornado.mo;;rpmverify tornado@ . @Удалить пакет|run://rpm -e tornado;;tornado@ @Чего не умеет установщик|run://rpm -i /image/ALTLinux/RPMS.main/xpdf-3.02-alt1.i586.rpm@ > Диспетчер пакетов >> -- Контора пишет! Диспетчер работает с <хранилищами> пакетов . @Работа с несколькими хранилищами|run://cat /etc/apt/sources.list.d/OpenLectory.list@ . @Накопление информации о хранилищах|run://apt-get update@ и @поиск в ней|run://apt-cache search pdf@ . @Рекурсивная установка|run://apt-get install xpdf --yes@ и @удаление|run://apt-get remove xpdf-reader --yes@ . Доставка пакета из хранилища на компьютер . Обновление (^apt-get dist-upgrade^) пакетов, имеющих новые версии в хранилище Пакеты, установленные только по зависимостям: удалять или нет? > Где и как искать программу >> У нас есть всё! Ищите сами... Пакет -- инструмент решения задачи. Где найти нужный? . За поясом: ^apropos^, ^info --apropos^, ^/usr/share/doc^ . В сундуке: ^apt-cache search^ . В мастерской: @актуальное хранилище|http://sisyphus.ru@, @backports|http://backports.altlinux.ru@ . У соседа: скачать с сайта производителя Инструмент можно изготовить: . По аналогии (^src.rpm^ из хранилища + пересборка) . По совету незнакомца (^src.rpm^ с сайта производителя + доводка) . Крибле! Крабле! Бумс! (^configure; make; make install^) Надёжнее всего изготовить ``настоящий'' ^src.rpm^ для хранилища. > Главы учебника +2 Have built a package? Welcome to Linux world! +3 @Учебник ``Введение в ОС Linux''| /usr/share/doc/alt-docs/modules/LinuxIntro.george/index.html@ глава 14.