Оплата        11.07.2019   

Установка программных пакетов в Linux для начинающих. Пособие для начинающих по форматам пакетов по в линукс

В данной статье я бы хотел рассмотреть список различных перспективных и интересных дистрибутивов GNU/Linux на 2018 год. Список составлен на основе МОИХ взглядов и предпочтений, которые могут отличаться от ваших. Данная статья составлена на основе актуальных и востребованных тем.

Для удобства, топ будет разбит на несколько категорий, из которых вы можете выбрать подходящий для вас и ваших целей дистрибутив GNU/Linux.

Десктопные

Десктопные дистрибутивы GNU/Linux предназначены для использования как на домашних ПК, так и на ноутбуках, и на офисных компьютерах. Основным отличием десктопа от сервера является наличие DE(Desktop Environment) – окружения рабочего стола. Я постарался подобрать самые удобные и интересные, на мой взгляд, дистрибутивы:

Q4OS

Q4OS – Дистрибутив Linux, использующий окружение рабочего стола TDE(Trinity Desktop Environment), которое в свою очередь является форком KDE 3. Данный дистрибутив основан на Debian. Он имеет как и x86_64 редакцию, так и i386. Основной задачей проекта является обеспечение внешнего вида системы похожим на интерфейс Windows xp. У данной системы довольно низкие системные требования, а именно: Pentium 300MHz CPU / 128MB RAM / 3GB disk. Так же имеются специальные редакции для микрокомпьютера Raspberry Pi, Pine64 и Pinebook.

Данный дистрибутив отлично подходит для старого и слабого железа. Так же вы можете установить его для людям, которые привыкли к классичсескому виду Windows.

Сразу хотел бы предупредить, у него есть проблема с переключением раскладки клавиатуры. Как это исправить, описано .

Скачать данную систему вы можете с .

Linux Mint

Linux MInt – дистрибутив, основанный на Ubuntu, которая в свою очередь основана на Debian. Забавно выходит(Существует так же ). Данная система поддерживает как x86_64, так и i386 архитектуры. Официально поддерживаются следующие окружения: Cinnamon(Изначально разрабатывался командой программистов Linux Mint), MATE, Xfce, KDE. Более легковесными являются редакции на MATE и Xfce.

Основной задачей проекта является обеспечение стабильности, надёжности, а так же простоты использования системы. Так же в ней присутствует собственный центр приложений. В дистрибутив входит так же довольно большое количество софта(в том числе и проприетарного).

Antergos

Antergos – дистрибутив GNU/Linux, построенный на базе ArchLinux. Он отлично подойдёт людям, которые хотят попробовать Arch, но боятся ковыряться в терминале. Для установки предлагается на выбор одна из следующих оболочек: Base(просто терминал), Cinnamon, Deepin, GNOME, KDE, MATE, Openbox и Xfce. Выбор довольно велик, учитывая что вы можете поставить чистый терминал и установить оболочку, которой нет в списке, руками. Так что системные требования тоже довольно сильно варьируются.

В комплекте с дистрибутивом сразу идёт пакет иконок Numix. Так же при установке системы вы можете выбрать, какие компоненты будут дополнительно установлены(Браузеры, AUR, ядро LTS, драйвера на Bluethooth и принтеры).

openSUSE

openSUSE – так же довольно старый дистрибутив. На данный момент его владельцем является корпорация Novell inc. Дистрибутив активно используется во всём мире. Старые версии (S.u.S.E Linux) были основаны на Slackware, однако сейчас это обособленный дистрибутив. Новая версия дистрибутива выходит каждые 12 месяцев.

В качестве пакетного менеджера выступает Zypper, формат пакетов, соответственно, *.rpm.

Официально

Скачать дистрибутив вы можете на . (Так же имеется редакция для Raspberry Pi & & ).

Для пентеста

Тест на проникновение – метод оценки безопасности отдельных компьютеров или целых сетей. Я не включил в данный топ Kali Linux, так как считаю его слишком захламлённым. На мой взгляд, приведённые ниже дистрибутивы являются одними из самых перспективных в этом направлении.

BlackArch Linux

BlackArch – Дистрибутив GNU/Linux, предназначенный для тестирования безопасности. Он построен на базе Arch Linux, что понятно из названия. При установке на выбор можно поставить один из предлагаемых оконных менеджеров, либо оставить чистый терминал.Его можно использовать как live систему, в виртуальной машине, установить на компьютер, или же имеется возможность уже установленный Arch превратить в BlackArch(подробнее на оф. сайте *eng). BlackArch имеет в запасе огромнейшее количество утилит для пентеста.

В качестве пакетного менеджера выступает pacman.

Скачать готовый дистрибутив можно с .

Parrot Security OS

Parrot Security OS – дистрибутив, сделанный на базе Debian. Поставляется с окружением рабочего стола MATE. Данная ОС имеет в своём наборе довольно большое количество для тестирования системы на проникновение. Он разрабатывается командой Frozenbox. Так же должное внимание было уделено внешнему виду дистрибутива.

Поддерживаемые архитектуры: i386, x86_64, ARM(Raspberry Pi, Orange Pi, Pine64).

Загрузить систему вы можете с .

Wifislax

WiFiSlax – это дистрибутив GNU/Linux на основе Slackware. Имеет возможность запуска в Live режиме. Он предназначен для аудита безопасности сетей. Wifislax включает в себя длинный список инструментов для пентеста. Дистрибутив поставляется с окружением рабочего стола Xfce.

Так как это Slackware, все дополнительные пакеты придётся собирать вручную.

Поддерживается только x86_64 архитектура.

Subgraph OS

Subgraph OS – дистрибутив Linux, основанный на Debian. Ключевая идея проекта – запуск пользовательских приложений в изолированных песочницах. Так же весь трафик приложений пропускается через Tor. В качестве DE опять выступает GNOME. Не смотря на все изменения внесённые в дистрибутив, работа с данной ОС практически ни чем не отличается от любого другого дистрибутива GNU/Linux.

В качестве пакетного менеджера выступает apt & apt-get, формат пакетов, соответственно, *.deb.

Поддерживается только x86_64 архитектура.

QUBES OS

QUBES OS – дистрибутив Linux, основной задачей которого является безопасность пользователя через изоляцию. Виртуализация осуществляется с помощью Xen. Графическая оболочка здесь – KDE. Так как многие дистрибутивы, цель которых безопасность пользователя, мало внимания уделяют внешнему виду, хотел бы обратить внимание, что QUBES OS довольно красив.

Приложения в QUBES OS устанавливаются и работают из шаблонов, поэтому привязки к пакетным менеджерам здесь нет(например для установки приложений из Fedora используется yum, а из WHOINIX – apt).

Поддерживается только x86_64 архитектура.

Легковесные

Данный раздел довольно акутален. Ведь я думаю у многих есть старый и слабый ноутбук или компьютер (у меня вообще IBM на Pentium II есть =)). А есть просто те, кто привыкли экономить каждый мегабайт). В общем, я постарался собрать в этом разделе самые интересные и перспективные в данном направлении дистрибутивы.

Puppy Linux

Puppy Linux – дистрибутив, который имеет редакции на Ubuntu и Slackware(есть неофициальные форки основанные на других дистрибутивах, например на Arch). Данная ОС пытается быть максимально компактной и не требовательной. Её разработал профессор Барри Каулер, который сейчас на пенсии. Дистрибутив назван в честь щенка профессора. В качестве графической среды используется оконный менеджер JWM. В основном данный дистрибутив расчитан на загрузку с флэшки в оперативную память, но так же есть возможность установить его и на жёсткий диск.

Для установки приложений здесь используется отдельная графическая утилита.

Поддерживаемые архитектуры: i386, ARM(Есть версия для Raspberry pi).

Загрузить образ системы вы можете на .

Tiny Core Linux

Tiny Core – минималистичный дистрибутив Linux, цель которого обеспечение полноценной ОС при минимальном размере и низких системных требований. Дистрибутив выделяется своим ну очень уж маленьким весом(Core – 11MB, TinyCore – 16 MB, CorePlus – 106 MB). Ведущий разработчик – Роберт Шингледекер. Для облегчения дистрибутива вместо полноценного X-сервера в нём используется облегчённая версия Xvesa.

Программное обеспечение можно устанавливать через менеджер пакетов AppBrowser.

Поддерживаемые архитектуры: i386, x86_64, ARM.

Скачать дистрибутив можно с .

ArchBang

ArchBang – дистрибутив, созданный на базе Arch Linux. Его основной задача – дать пользователям упрощённую в установке и готовую к работе версию, при этом соблюдая все основные принципы Arch. В качестве рабочего окружения здесь выступает оконный менеджер Openbox. Да, этот дистрибутив не такой легковесный как 2 предыдущих, но он имеет более широкую функциональность. На данный момент разработчиком является Стэн МакЛарен.

Для управления программным обеспечением используется пакетный менеджер pacman.

Поддерживается только x86_64 архитектура.

Загрузить образ вы можете с (Имеется 2 редакции. Первая на systemd, вторая на openrc).

Для гиков

Ну или как сказал мой знакомый: “Не для гиков, а для красноглазых, бородатых, пузатых пингвинов” =). Дистрибутивы, которые будут приведены ниже, являются одними из самых тяжёлых для новичков.

Arch Linux

Arch Linux – независимый GNU/Linux дистрибутив общего назначения. Оптимизирован для платформы i386. Поставляется без какого либо WM, а уж тем более DE. Установка производится “руками” из терминала. Кто-то скажет, что это не самый сложный дистрибутив, но всё таки для большинства новичков он тяжёл в освоении. Как вы могли заметить, я не раз в статье упомянул ОС на базе Arch, так как он является моим любимым дистрибутивом.

В качестве пакетного менеджера выступает pacman. Но в нём содержится довольно маленькое количество программ. Чтобы это исправить, вы можете добавить AUR(Arch User Repository), которым можно управлять через yaourt, например.

Скачать последнюю версию можно с .

Но так как поддержка i386 систем прекращена, её больше нельзя скачать с официального сайта, но данная версия активно поддерживается комьюнити. Вы можете скачать её .

Так же имеется не официальный порт .

Gentoo Linux

Gentoo – дистрибутив GNU/Linux отличительной особенностью которого является оптимизация под конкретное оборудование. Считается наиболее сложным, так как большинство компонентов системы пользователю необходимо собирать самому. Частота обновления релизов ~ раз в неделю. За счёт гибкости системы вы можете настроить её хоть как сервер, хоть как рабочую станцию. В общем, вы можете сделать с этим дистрибутивом довольно многое, главное иметь терпение и опыт =).

Менеджеры пакетов: portage & pkgcore & paludis.

Поддерживаемые архитектуры: x86_64, i386, alpha, ARM, hppa, ia64, ppc, sparc(И эксперементально s390, sh).

Скачать Gentoo Linux нужной версии вы можете с .

LFS

Linux From Scratch – книга описывающая процесс сборки своего дистрибутива операционной системы на базе Linux из исходных кодов. Да-да, это книга, или как его ещё называют “бумажный дистрибутив”. Вы можете делать вообще всё что вам вздумается, если сможете… Какие пакеты будут включены в вашу систему решаете только вы. Главным автором является Герард Бикманс. Рекомендуется для ознакомления всем, от новичков до заядлых Linux-оидов. Хотя и не многие смогут собрать свой дистрибутив, но для общего развития стоит прочитать.

По поводу управления пакетов. Вы всё собираете “руками”. Есть даже инструкция как apt приделать.

Архитектура? Под какую будете собирать, на той и заработает(инструкция идёт под i386, но если сможете, можете хоть по ARM).

Скачать книгу LFS и другие, связанные с ней, можете на .

Выводы

В данной статье мы рассмотрели самые перспективные и актуальные, на мой взгляд, дистрибутивы на 2018 год. В конце хотел бы выделить, каким дистрибутивам и из какой категории я бы отдал предпочтение: Десктоп – Q4OS, Сервер – CentOS, Для пентеста – BlackArch Linux, Для обеспечения безопасности – Subgraph OS, Легковесные – Puppy Linux, “Для гиков” – Arch (для личного использования) и LFS (для изучения).

Ещё на сайте:

Лучшие дистрибутивы Linux 2018: десктопные, серверные, для пентеста, для безопасности, легковесные, для гиков. обновлено: Март 12, 2018 автором: linok9757

Приветствую, дорогие друзья, знакомые и прочие личности.

Как Вы наверняка знаете и помните, я обещал потихоньку, по Вашим просьбам, охватывать цикл Linux , знакомя Вас с разными основами и очень постепенно перетекая из теории в практику.

Сегодня мы пока что продолжим начатую тему знакомства с теорией и основами, а посему поговорим о такой штуке, как репризитории и всё, что с ними связано, т.е разберемся как же так выглядит изнутри софт в Linux , как это все хранится и всё такое прочее.

Всё, в общем-то просто, но необходимо по ходу чтения несколько напрячь мозг, дабы не запутаться в хитросплетении терминов и несколько скомканном повествовании. В общем, следите за мыслью При необходимости прочитайте статью дважды

Поехали.Все программы в дистрибутивах Linux это отдельные проекты, которые развиваются сами по себе. Вы должны представить себе некую цепочку: есть отдельные пакеты (программное обеспечение) , есть зависимости (ниже мы более подробно рассмотрим эти понятия) - цель же всего этого - собрать все эти программы, с их зависящими друг от друга библиотеками вместе, да еще и не просто собрать, а сделать так, чтобы все это работало в комплексе.

У каждого своего дистрибутива есть разработчики (майнтейнеры) . Эти люди занимаются тестированием различных пакетов на их нормальное функционирование, взаимную совместимость, а также часто добавляют собственные усовершенствования или не успевшие войти в официальную сборку патчи, и в конечном итоге, отвечающие за включение пакета в дистрибутив. Т.е, они берут программы из открытых исходных кодов и начинают подгонять их друг к другу, упаковывая программы в пакеты и соблюдая все зависимости, тестируя и удаляя ошибки из этих самых программ. Представили? Тогда, думаю, Вы понимаете, что это не простое занятие. Так вот все эти подогнанные друг к другу программы, библиотеки и нескучные обои, упакованные в пакеты со всеми зависимостями - это и есть репозиторий Вашего дистрибутива, откуда программы и устанавливаются на ваш компьютер.

О репрезиториях в Linux. Что это и зачем.

Т.е, еще раз и чуть иначе, - репозиторий в Линуксе - это все файлы пакетов, принадлежащие одному дистрибутиву (например, Fedora ) одной его версии (например, 16 ) , тобишь сие есть огромное хранилище пакетов, которое находится в сети интернет и которым Вы можете спокойно воспользоваться (причем бесплатно) . Те самые ISO -файлы образов для записывания на болванку и последующей установки содержат как раз репозитории пакетов со всеми зависимостями и менеджером пакетов плюс установочную программу, которая разметит жёсткий диск, всё поставит и приготовит Вам рабочий стол (или сервер, или что попросите) .

Для чего создаются репозитории? Ответ прост - для централизованного управления обновлением пакетов. Представим на секунду, что у нас нет репозиториев и Вы установили linux с диска, с определенными (стандартными) программами. Однако время не стоит на месте, все программы обновляются и всё такое прочее. Как же Вы тогда узнаете - есть ли обновление для вашей программы или нет? Естественно, что придется посещать сайт разработчиков программы, чтобы выяснить это, что, согласитесь, что не совсем удобно, особенно, если программ у Вас установлено крайне много. Ну и понеслось, Вы раз проверили, два проверили наличие обновлений, в третий раз забыли, а потом и вообще надоело каждый раз смотреть вышло там обновление или нет. И тут раз..

Вспоминаем, для чего у нас существуют обновления? А для того, чтобы не просто иметь новый (и улучшенный старый) функционал в оных программах, но еще и залатывать дыры, которые нередко приводят к различным неприятностям, начиная от глюков программы/системы и заканчивая проблемами с безопасностью (я, например, очень не люблю “терять” пароль, скажем, от почты по вине дыр в софте) . Поэтому-то разработчики Linux и создали репозитории, с помощью которых можно быстро и удобно отслеживать обновления тех или иных пакетов (да и вообще обновления всей системы в целом) , устанавливать новые и обновленные и всё такое прочее. Кстати, почему Windows оным еще не озадачились решительно не понятно (хотя там частично спасают программы для обновления программ, пусть это и не совсем то) .

О пакетах и менеджерах пакетов в Linux. Что это и зачем.

К слову, немного выше, я специально выделил три пункта, чтобы, так сказать, разбить содержание на некие части. О рeпозитории пакетов мы поговорили и теперь переходим к следующему куску повествования, а именно, поговорим о том, что подразумевается под понятием пакеты в Linux .

Под пакетами в Linux подразумевается программное обеспечение (ПО) , которое Вы хотите установить на компьютер. Скажем, например, в Windows софт устанавливается с помощью мастера (программы) установки - setup.exe или install.exe . Вы запускаете этот мифический экзешный файл и процесс установки начинается едва ли не мгновенно, после выбора пути и мелких побочных настроек.

Установка же программ в Linux несколько отличается, а именно, здесь используются два основных способа инсталляции: с помощью пакетов или из исходных кодов (установка пакетов это отдельный разговор, и сейчас мы его рассматривать не будем) . Пакетсодержит собранную программу, информацию о том, какие требуется совершить действия для ее установки, информацию о зависимостях, а также возможно много других данных, в зависимости от вида пакета. Причем за установку (удаление, обновление) отвечает такая штука, как менеджер пакетов .

Обычно менеджер пакетов является сердцем дистрибутива, обеспечивая полный контроль целостности и работоспособности всей системы и он же обеспечивает пользователю интерфейс для автоматизированного получения пакета, его зависимостей и его установку. Пакеты, как уже говорилось, собираются в репозитории, т.е всё это можно сложить в одну цепочку: пользователь запрашивает установку пакета - менеджер пакетов отслеживает зависимости - он же получает необходимые пакеты из репозитория(ев) - и он же устанавливает зависимости и требуемый пакет. Практически каждый дистрибутив Linux имеет свои репозитории, зачастую не совместимые с другими дистрибутивами. Менеджер же пакетов - консольная утилита, однако, обычно к ней существуют многочисленные графические оболочки, которые легко отыскать в каждом дистрибутиве, введя в поиск «Установка/удаление программ ».

Пакетные менеджеры бывают разные. Для управления пакетами в разных дистрибутивах используются разные программы. В общем-то, их не так уж и мало, а посему выделим «основные», которые «умеют» разрешать зависимости. Фраза «умеют разрешать зависимости» означает следующее - если при установке пакета будет обнаружено, что для корректной его установки пакету нужны дополнительные пакеты, то менеджер пакетов установит их сам, т.е Вам не придется самим искать их в репозиториях. Те менеджеры пакетов, которые не обладают такой функцией (умением разрешать зависимости) мы рассматривать не будем, ибо оные только сообщат Вам, что пакет установить невозможно и выведет весь список файлов (именно файлов, а не пакетов) , которые нужны для установки данного пакета. А уж какой файл в каком пакете находится, вы будете догадываться и искать самостоятельно.

Вот небольшой список:

  • Yum (Yellow Dog Update Modified) - мощный менеджерпакетов, основанный на rpm (простой МП, не умеет разрешать зависимости) работающий в текстовом режиме и умеющий разрешать зависимости, а также умеющий поддерживать репозитории (источники пакетов) Используется в RedHat Linux , а так же в Fedora , SuSe и других.
  • APT создана для дистрибутивов Linux , основанных на Debian , Ubuntu (и клоны) , АLT Linux и др. Мощный менеджер пакетов, работающий в текстовом режиме. Умеет разрешать зависимости и поддерживает репозитории (источники пакетов)
  • Portage package management system имеет много разновидностей, примером может служить дистрибутив Gentoo . Как вариант пакетного менеджера можно привести emerge .

К слову, пакетные менеджеры не просто ищут желаемые Вами программы по описаниям, но прежде нам нужно ввести еще один, не раз уже, упомянутый термин и объяснить его.

О зависимостях в Linux. Что это и зачем.

Например, Вы захотели установить программу и нажали кнопку «Установить », а она спрашивает Вас про какие-то мифические и не понятные зависимости . Так давайте разберемся - а что же это такое?

Часто компоненты, используемые различными программами, выделяют в отдельные пакеты и помечают, что для работы ПО , предоставленного пакетом A , необходимо установить пакет Б . В таком случае говорят, что пакет A зависит от пакета Б или что между пакетами A и Б существует зависимость (обычно в роли зависимостей выступают какие-либо библиотеки, без которых программа не будет запускаться, поскольку использует функции этой библиотеки) . Вот как раз отслеживанием зависимостей между такими пакетами и осуществляет уже неоднократно вышеупомянутый менеджер пакетов. Говоря просто, пакетный менеджер это такая программа, которая ведёт базу данных установленных приложений и их версий, и всегда знает, какие файлы куда установлены, чтобы можно было поставить новые программы, удалить старые или обновить всю систему целиком без переустановки и вычищения мусора оставшихся файлов.

Вся эта огромная куча пакетов с их ворохом зависимостей друг от друга, управляемая пакетным менеджером, как раз и составляет ваш дистрибутив Linux . Но это не просто куча мусора, а упорядоченная система, которая называется, - тадам!, - репозитории пакетов программ. Круг замкнулся - мы вернулись к первому понятию - что такое репозиторий

Несколько слов о нюансах

Напоследок, все таки хочется сказать, что какая бы Linux не была устойчивой, стабильной и неубиваемой, всё же пользователь должен придерживаться некой осторожности. Например:

Например, при установке операционной системы Fedora по умолчанию сразу подключены два репозитория:

  • Fedora (пакеты, которые подходят на любую комбинацию из компакт-дисков или DVD-дисков)
  • Updates (обновленные пакеты, новее, чем репозиторий (хранилище) Fedora)

Для нормальной работы нужно подключить дополнительный репозиторий rpmfusion (без него вам действительно не обойтись) , что даст доступ к программам, которые не могли быть включены в дистрибутив из-за лицензионных ограничений (приложения, которые требуются для воспроизведения мультимедиа-файлов, таких как mp3 , dvd и т.д.; драйвера - к ним относятся проприетарные драйверы для ATI и NVIDIA ; игры: Bub’s Brothers, Secret Maryo Chronicles, UFO: Alien Invasion, Wörms of Prey, xrick, GLtron и многие, многие другие; эмуляторы: эмулятор Commodore 64 , а также Commodore 8 bit , эмулятор Amiga, Nestopia, ZSNES и много других) . Чтобы подключить этот репозиторий, достаточно в командной строке (терминале) от суперпользователя (root) ввести команды:

$ sudo rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
$ sudo rpm -ivh http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm

Обратите внимание, что репозиторий rpmfusion разделяется на две части: free и nonfree . Первый содержит чисто свободные программы в понимании FSF , распространяемые под GPL и совместимыми с ней лицензиями. Содержимое второго, вопреки названию, - также программы по преимуществу свободные, но попадающие под пресловутые патентные ограничения некоторых государств (например, аудио- и видеокодеки) .

То же самое касается и менеджера пакетов в Fedora . Для нормальной и удобной работы менеджера пакетов (yum) в Fedora рекомендуется подключить дополнительный плагин fastestmirror . Этот плагин очень важен: он определяет не просто ближайшее зеркало, как это делают аналогичные утилиты из других систем управления пакетами, а устанавливает именно самое быстрое зеркало в данный момент - по времени отклика.

$ sudo yum install yum-plugin-fastestmirror

В двух словах как-то так

Послесловие.

Я понимаю, что без практики воспринять всё это с налёта довольно сложно, но делать нечего, - это самые начальные и базовые теоретические сведения, с которыми каждый пользователь должен быть знаком хотя бы как-то, дабы иметь представление, что к чему и почему, а не слепо тыкаться в кнопки и читать незнакомые термины.

Статья рассказывает об основных методах установки нового ПО в существующую Linux-систему. Хотя упоминаемые в ней версии дистрибутивов и соответствующих утилит уже несколько устарели, базовые принципы управления программными пакетами остались практически неизменными.

[Соколов Роман (romanso AT rt.mipt.ru)]

Установка программных пакетов в Linux для начинающих

Два способа установки ПО.

Необходимость в установке новых программных пакетов под LINUX возникает в двух основных случаях:
  • когда появляется новая версия одного из уже установленных у Вас пакетов;
  • когда возникает необходимость использования какой-то пакета, еще не установленного в системе.
Во втором случае это может быть один из пакетов, имеющихся на Вашем установочном диске, но не установленный в процессе инсталляции. Однако чаще всего новое ПО Вы будете находить в Интернет, тем более, что значительная часть этого ПО бесплатное или условно бесплатное. Как бы то ни было, но рано или поздно Вы все равно окажетесь перед необходимостью установить новый пакет.

Существует две основных формы распространения ПО для LINUX: в исходных текстах и в виде исполняемых модулей. И в том и в другом случае пакет ПО может поставляться либо в виде tar-gz архива, либо в виде rpm-пакета.

Проще всего установить ПО, представленное в виде rpm-пакета, содержащего исполняемые файлы, этот способ и рассмотрим первым. Отметим только, что для инсталляции новых пакетов Вы должны войти в систему как пользователь root.

Программа rpm.

Название этой программы (или команды) является аббревиатурой от Redhat Package Manager. Такая расшифровка дается в большинстве книг и руководств по Линукс и кажется мне более правильной и логичной, хотя в главе 6 "The Official Red Hat Linux Reference Guide" говорится: "The RPM Package Manager (RPM), is an open packaging system available for any-one to use, and works on Red Hat Linux as well as other Linux and UNIX systems".

Программа rpm в некотором смысле аналогична программам типа setup wizard для MS Windows. Преимуществом использования этой программы по сравнению с установкой tar-gz архивов является то, что она автоматически проделает все необходимые действия по установке ПО: создаст необходимые каталоги, распределит по ним файлы, создаст ссылки. Кроме того, она может быть использована не только для установки нового пакета, но и для обновления версий ПО, получения перечней установленного ПО и проверки установки, а также для деинсталляции отдельных пакетов (например, если после периода пробной работы с программой Вы решили отказаться от ее дальнейшего использования). С помощью той же программы rpm можно самому создать пакет формата rpm, однако для начинающих лучше, наверное, этим не заниматься, а воспользоваться готовыми rpm-пакетами.

rpm-пакеты - это специальным образом подготовленные архивы, предназначенные для обработки программой rpm. Название rpm-пакетов оканчивается на суффикс.rpm, например, xzip-180-1.i386.rpm или xzip-180-1.src.rpm. Как видите, перед суффиксом.rpm стоит еще один суффикс. Если это.i386 или.i586, то в пакете находятся исполняемые файлы, а если этот суффикс.src, - то в пакете исходные тексты, которые после установки еще надо скомпилировать. Обычно и на установочных компакт-дисках и в Интернет-каталогах rpm-пакеты с исполняемыми файлами располагаются в каталогах с названием RPMS, а rpm-пакеты с исходными текстами - в подкаталогах SRPMS.

В Интернет rpm-пакеты можно найти на различных серверах. По моему опыту наиболее удобным сервером в Интернет для поиска rpm-архивов является сервер http://rufus.w3.org . На нем установлена поисковая система, которая позволяет упорядочивать список пакетов наиболее удобным для Вас способом:

  • по именам пакетов;
  • по дистрибутивам;
  • по группам приложений;
  • по датам;
  • по поставщикам (производителям) ПО.
Общий объем архива rpm-пакетов на этом сервере составляет более 66 Гигабайт. Очень богатые архивы хранят также два ftp-сервера в России: ftp://ftp.chg.ru/pub/Linux и ftp://ftp.nc.orc.ru/

Необходимо только заметить, что если для перекачки пакетов из Интернет Вы используете компьютер, работающий под Windows, то все имена пакетов у Вас будут, скорее всего, искажены. Дело в том, что Windows "не любит" имена, в которых несколько точек (например, glib-1.0.6-3.i386.rpm и заменит "лишние", по его мнению, точки на подчеркивания - glib-1_0_6-3_i386.rpm). Так что после получения пакета (при переносе его на ПК с ОС Linux) надо эти "исправления" устранить, вернувшись к UNIX-вым именам.

Итак, Вы нашли и скачали rpm-архив с исполняемой версией нужного Вам пакета. Если Вы ставите совершенно новый пакет (у Вас не было на компьютере предыдущих версий этого ПО), то для установки пакета из этого архива достаточно перейти в тот каталог, где находится архив, и дать команду (для самых нетерпеливых: не спешите выполнять эту рекомендацию, прочитайте еще хотя бы пару абзацев)

Rpm -i имя_rpm-архива Если у Вас была установлена предыдущая версия пакета, то в простейшем случае надо дать команду следующего формата: rpm -U --force имя_rpm-архива Здесь параметр -U говорит программе, что надо произвести обновление (upgrade) пакета, а опция --force требует безусловно (и без лишних вопросов) обновить все входящие в пакет файлы. Заметьте, что это очень сильное требование, и в некоторых случаях может быть лучше сохранить какие-то (например, конфигурационные) файлы от предыдущей версии. Если установка проходит нормально, и никаких дополнительных сообщений не появляется, то после завершения работы программы (после появления приглашения shell) Вы можете пользоваться вновь установленным пакетом.

К сожалению не всегда все так просто. Приведу конкретный пример. У меня был установлен RedHat Linux версии 5.2, причем программа Midnight Commander (mc) была версии 4.1.36. На ftp-сервере я увидел версию 4.5.30 этой программы (пакет mc-4.5.30-12.i386.rpm) и, естественно, решил ее поставить. Однако оказалось, что для этого необходимо, чтобы были установлены еще 4 других пакета, о чем rpm мне и сообщила:

Ошибка: неудовлетворенные зависимости: redhat-logos нужен для mc-4.5.30-12 libglib-1.2.so .0 нужен для mc-4.5.30-12 libc.so.6(GLIBC_2.1) нужен для mc-4.5.30-12 libc.so.6(GLIBC_2.0) нужен для mc-4.5.30-12 Это и не удивительно, если Вы вспомните, что и при первоначальной установке Linux программа инсталляции тоже проверяла взаимозависимости пакетов и предлагала установить недостающие. Однако в случае инсталляции все необходимые пакеты находятся на том же диске, а здесь мне пришлось вначале поискать нужные пакеты. Два пакета (redhat-logos-1.0.5-1.noarch.rpm и glibc-2.1.1-6.i386.rpm) я нашел без труда, после чего rpm перестала просить и GLIBC_2.0. А вот с libglib.so .1 вышло сложнее. Во-первых я никак не мог найти пакета с таким названием. Как оказалось, такого пакета и не существует, файл libglib.so .1 входит в состав пакета glib-1.0.6-3.i386.rpm. Пока я это выяснил, я узнал также, что чтобы выяснить, какие файлы установит тот или иной пакет, надо дать команду rpm -qpl имя_rpm-архива а для получения информации о пакете - команду rpm -qpi имя_rpm-архива Дело в том, что файлы RPM кроме собственно архива файлов содержат информацию о пакете, включая имя, версию и краткое описание. С помощью той же программы rpm Вы можете просмотреть эту дополнительную информацию. Например, для пакета glib-1.0.6-3.i386.rpm получим следующие результаты: rpm -qpi glib-1.0.6-3.i386.rpm Вывод будет примерно таким: Name: glib Relocations: (not relocateable) Version: 1.0.6 Vendor: Red Hat Software Release: 3 Build Date: Суб 10 Окт 1998 04:49:03 Install date: (not installed) Build Host: porky.redhat.com Group: Libraries Source RPM: glib-1.0.6-3.i386.rpm Size: 55305 Packager: Red Hat Software < [email protected] > Summary: Handy library of utility functions Description: Handy library of utility functions. Development libs and headers are in gtk+-devel. Если дать команду: rpm -qpl glib-1.0.6-3.i386.rpm будет выдан список входящих в пакет файлов с указанием того, куда они будут установлены: /usr/lib/libglib.so.1 /usr/lib/libglib.so.1.0.6 RPM также предоставляет мощную систему запросов по установленным в системе пакетам. По команде rpm -qа Вы получите перечень всех установленных в системе пакетов (перечень будет очень большим, так что лучше сразу направить вывод в фильтр more). Вы можете искать информацию об отдельном пакете или об отдельных файлах. Например, Вы можете легко найти, какому пакету принадлежит файл и откуда появился: rpm -qf /etc/bashrc bash-1.14.7-16. Если Вы беспокоитесь о том, что случайно удалили важный файл из установленного пакета, просто проверьте это: rpm -Va Вы будете оповещены об любых аномалиях. Потом можно переустановить пакет, если это необходимо. Любые конфигурационные файлы будут сохранены.

RPM это очень полезная утилита, и, как Вы видите, имеет различные опции. Я привел только несколько примеров. Всего rpm имеет 16 основных режимов работы, которые имеет смысл объединить в 6 групп (после двоеточия приводится формат команды для соответствующего режима):

Запросы: Запрос: rpm [--query] Показать метки запросов (Querytags) : rpm [--querytags] Установка и поддержка установленных пакетов: Установка: rpm [--install] + Обновление: rpm [--freshen|-F] + Деинсталляция: rpm [--uninstall|-e] + Проверка: rpm [--verify|-V] + Подписи (пакеты подписываются электронной цифровой подписью в формате PGP, с целью обеспечения неизменяемости и сохранения авторства пакетов): Проверка подписи: rpm [--verify|-V] + Переподписывание: rpm [--resign] + Добавление подписи: rpm [--addsign] + Работа с базой: Инициализация базы: rpm -i [--initdb] Rebuild Database: rpm -i [--rebuilddb] Создание rpm-пакетов: Создать пакет: rpm [-b|t] + Перекомпилировать пакет: rpm [--rebuild] + Build Package from Tarball: rpm [--tarbuild] + Разное: Показать конфигурацию программы rpm: rpm [--showrc] Задать пользователей: rpm [--setperms] + Задать группы: rpm [--setgids] + Более подробное описание команды rpm Вы можете найти в RPM-HOWTO, страницах man и info. Здесь оно не приводится, в основном потому, что в графических режимах существуют несколько более удобные и "человечные" программы для управления установленным в системе ПО и процессами его обновления, которые и будут рассмотрены в следующих подразделах.

Примечание:

Я пользовался третьей версией RPM. В настоящее время существует уже версия 4, однако в списке рассылки blackcat-list промелькнуло такое сообщение:

> Кто-либо имеет опыт установки rpm 4.x? > Хотелось бы установить пакеты из состава дистрибутива Red Hat 7.0. Сам пан Каневский;-) не советовал ставить 4.х rpm-3.0.5-9.6x понимает структуру 4.х и ставит 4.х пакеты

Установка ПО из исходных текстов

В некоторых случаях исполняемые модули приложений могут поставляться и в виде tar-gz-архивов. В таком случае установка приложения только немного сложнее, чем в случае установки из rpm-пакета: необходимо просто развернуть архив и чаще всего можно уже запускать полученное приложение. Немного сложнее установить приложение, если оно поставляется в исходных текстах. Этот случай и рассмотрим в настоящем разделе.

Необходимые сведения о программировании на языке Си

Начать стоит с того, что операционная система UNIX родилась на свет одновременно с языком программирования C (Си). Более того, язык C был создан специально для разработки этой ОС, значительная часть UNIX была написана на языке С. ОС Linux тоже написана на Си. Поэтому, а также в соответствии с принципом свободного распространения исходных кодов, многие приложения для Линукс распространяются в виде текстов на С. Естественно, что для того, чтобы такое приложение установить в систему и запустить на исполнение, его необходимо скомпилировать. Для выполнения процедур компиляции обычно используется программа gcc (хотя существуют и некоторые альтернативные разработки).

GNU-компилятор с языка С gcc, содержит в себе 4 основных компонента, соответствующие четырем этапам преобразования исходного кода в исполняемую программу. Первый компонент - это препроцессор, который модифицирует исходный код программы перед компиляцией в соответствии с командами препроцессора, содержащимися в С-программе. В соответствии с этими командами выполняются простые подстановки текста. Второй - собственно компилятор, который обрабатывает исходный код и преобразует его в код на языке ассемблера. Третий компонент - ассемблер, который генерирует объектный код. И, наконец, четвертый компонент - компоновщик, который собирает исполняемый файл из файлов объектного кода. Дело в том, что большие программы обычно пишутся по-частям, в виде множества отдельных файлов, содержащих исходный код соответствующей части. Компилятор обрабатывает каждый такой файл отдельно и создает отдельные объектные модули (файлы таких модулей обычно имеют расширение.o). Создание единой исполняемой программы из таких модулей и является задачей компоновщика. При таком подходе, если в какой-то модуль программист вносит исправление, нет необходимости заново компилировать всю программу: достаточно откомпилировать исправленный модуль и заново запустить компоновщик.

Для выполнения стандартных операций программист может использовать функции из стандартных библиотек. Самый характерный пример - это библиотека libc, которая содержит функции, выполняющие такие задачи, как управление памятью и операции ввода-вывода. Программисты могут создать свои собственные библиотеки и использовать их при написании новых программ.

Библиотеки бывают статическими, разделяемыми и динамическими. Статическая библиотека - это библиотека, код которой встраивается в программу при компиляции. Код разделяемой библиотеки не встраивается в программу, а загружается в память одновременно с программой и программа получает доступ к функциям этой библиотеки. Динамические библиотеки - разновидность разделяемых, только библиотечные функции загружаются в память только тогда, когда из программы поступит вызов соответствующей функции. В процессе выполнения программы они могут выгружаться и заменяться другими функциями из той же или другой библиотеки. Имена статических библиотек обычно имеют суффикс.a, а имена разделяемых библиотек - суффикс.so, за которым следует старший и младший номера версии. Имя может быть любой строкой, которая однозначно характеризует библиотеку. Обычно имена библиотек начинаются с lib. Примеры: libm.so.5 - общая математическая библиотека, libX11.so .6 - библиотека для работы с системой X Window. Библиотека libc.so.5 компонуется автоматически, в то время как большинство других библиотек необходимо явно указывать в командной строке при вызове программы gcc. Это делается через опцию -l за которой следует уникальная часть имени библиотеки, например, для вызова математической библиотеки достаточно указать -lm.

Многие системные библиотеки располагаются в системных каталогах, например, в /usr/lib/ и /lib/, но некоторые могут располагаться и в других каталогах. Список этих каталогов помещается в файл /etc/ld.so.conf. Каждый раз, когда разделяемая библиотека изменяется или инсталлируется вновь, нужно выполнять команду ldconfig, чтобы обновить файл /etc/ld.so.conf, а также ссылки на него. Если библиотека инсталлируется из RPM-пакета, это обычно делается автоматически, хотя и не всегда.

При компиляции больших программ, использующих фрагменты исходного кода, расположенные в разных файлах, бывает очень трудно отследить, какие файлы нужно перекомпилировать, а какие только компоновать. В таких случаях очень помогает утилита make, которая автоматически определяет, следует ли компилировать файл исходного кода, по дате его последней модификации. Утилита make оперирует файлами, исходя из их зависимости друг от друга. Эти зависимости определяются файлом с именем makefile. Строка файла makefile состоит из трех частей: имени целевого файла, списка файлов, от которых он зависит, и команды. Если какой-либо файл из списка изменился после целевого файла, то выполняется указанная в строке команда. В строке может быть указано несколько команд. Обычно команда - это вызов компилятора для компиляции файла исходного кода или компоновки файлов объектного кода. Строки, определяющие зависимости, отделяются друг от друга пустой строкой.

Инсталляция пакетов ПО из исходных текстов

Теперь, когда мы получили первое впечатление о том, как осуществляется компиляция программ на языке С, можно перейти к рассмотрению того, как обращаться с пакетами программ, распространяемыми в виде исходных кодов. Первое, что надо сказать в этой связи, это то, что для установки таких пакетов Вы, естественно, должны иметь в своей системе утилиты gcc и make.

Непосредственно процесс инсталляции пакета состоит из следующих шагов:

  1. Перейти (с помощью команды `cd") в каталог, содержащий исходные коды устанавливаемого пакета.
  2. Выполнить команду `./configure", которая осуществляет конфигурирование пакета в соответствии с Вашей системой. Процесс выполнения этой команды занимает довольно длительное время, причем команда выдает на экран сообщения, сообщающие, какие именно особенности системы испытываются.
  3. Выполнить команду `make", для того, чтобы скомпилировать пакет.
  4. После этого можно выполнить (это шаг не является обязательным) команду `make check", которая вызывает запуск процедур самотестирования, которые поставляются с пакетом.
  5. Выполнить команду `make install" для установки программ, а также файлов данных и документации.
  6. Заключительный этап состоит в выполнении команды `make clean", которая удаляет промежуточные объектные и двоичные файлы из каталога с исходными кодами. Для удаления временных файлов, которые создала команда `configure" (после чего пакет можно компилировать для другого типа компьютеров), надо выполнить команду `make distclean".
В большинстве случаев выполнение этой последовательности команд достаточно для установки нового пакета.

Сколько осталось места на диске

При установке новых пакетов очень часто возникает одна проблема, хорошо знакомая всем пользователям компьютеров: недостаток дискового пространства. Поэтому перед установкой нового пакета надо вначале ответить на вопрос о том, достаточно ли места на диске для размещения данного ПО?

Программа rpm позволяет определить, сколько места потребуется для установки пакета: для этого надо дать запрос вида rpm -qpi имя_пакета и в строке Size будет выдано, сколько байт займет пакет. Осталось узнать, есть ли столько свободного места на диске.

Для определения обьема свободного пространства на диске Вы можете воспользоваться командой df. Если дать эту команду без аргументов, то она сообщит каков объем дискового пространства во всех смонтированных файловых системах, сколько используется и сколько еще свободно. Единицей измерения при этом служит 1 килобайтный блок. Если Вы хотите получить сведения об объеме свободного пространства в более привычных мегабайтах, дайте команду с параметром -h:

Df -h Сведения о количестве свободного пространства на конкретном диске можно получить, если задать в качестве параметра имя файла устройства: df -h /dev/hda2 Если вместо имени файла устройства указать полное (с указанием пути) имя произвольного файла или каталога, то Вы получите данные о количестве используемого и свободного места в файловой системе, содержащей указанный файл (каталог).

Если место еще есть, то можно перейти к установке пакета. Хуже владельцам компьютеров с дисками маленького объема: тут каждый раз надо думать, как бы освободить место для новой программы, другими словами, что уже можно с диска удалить. Удалять можно отдельные файлы, но, конечно, с точки зрения освобождения пространства, эффективнее удалять целыми каталогами или пакетами.

Файлы (каталоги) удаляются в том случае, если они (размещенные в них файлы) Вам более не нужны. Естественно, что для удаления выбираются каталоги (или файлы) самого большого обьема и тут оказывается полезной команда du (disc usage).

Команда du позволяет узнать, сколько места занимает конкретный файл или подкаталог. Для этого надо дать команду следующего формата (в примере мы узнаем объем каталога /usr/lib)

Du -ks /usr/lib Результатом выполнения данной команды будет примерно такая строка 91418 /usr/lib которая означает, что каталог /usr/lib занимает 91418 килобайт (опция k указывает, что объем должен выдаваться в килобайтах). Опция s задана для того, чтобы выводился только суммарный объем каталога. Если Вы ее опустите, то получите данные об объеме каждого подкаталога и файла в указанном каталоге, а это очень много информации. Впрочем, последней строкой все равно будет выведен суммарный объем каталога, так что если Вас завораживает мелькание строк на экране, можете доставить себе это маленькое удовольствие.

Если маленькую s заменить на большую S, то выводиться будет только информация об объеме подкаталогов (но не файлов), что иногда тоже полезно. О других опциях указанных команд Вы можете узнать на соответствующих man-страницах или по команде info.

Теперь Вы знаете, как определить сколько места займет на диске устанавливаемый пакет и каков объем свободного пространства на диске. Рассмотрим, что можно сделать, если свободного места не достаточно. Надо заметить, что при стандартной инсталляции ОС Linux на диске образуется большое количество файлов, которые Вам вообще никогда не понадобятся. В то же время довольно трудно в огромной массе файлов найти те, которые Вам не нужны (тем более, что они спрятаны глубоко в дебрях структуры каталогов). Поэтому я расскажу вкратце о своем опыте поиска ненужных файлов, надеясь, что этот опыт окажется полезен читателю.

Освобождение дискового пространства

Однажды мне пришлось устанавливать Линукс (Black Cat 6.0) на 486-ой компьютер с жестким диском объемом 350 Мбайт. Хотя при установке я старался выбрать минимально возможную конфигурацию ПО, все равно после завершения установки диск оказался заполнен более чем на 90 %. Перечислю вкратце те действия, которые позволили мне освободить достаточно места на диске для установки новых пакетов.
  1. Первым делом стоит подумать об удалении части пакетов ПО, установленных при инсталляции системы. Для того, чтобы решить, какой пакет или пакеты можно удалить, дайте команду: >rpm -qa --queryformat "%15{SIZE} %{NAME}\n" | sort -nr %rpm -q -a > packages Полученный файл packages будет содержать список всех установленных в системе пакетов ПО. Этот список можно проанализировать с целью выявления ненужных Вам пакетов и удалить таковые с помощью команды rpm с параметром -e. При этом будут удалены все созданные при инсталляции пакета файлы и каталоги. Этот способ самый безопасный, поскольку программа rpm предварительно проверит, не используется ли данный пакет какой-либо другой программой, и при наличии такой зависимости выдаст соответствующее предупреждение, а удалять что-либо откажется.

    У меня, например, в полученном таким образом файле packages встретилось упоминание пакета AfterStep-APPS-990329-2. Выполнив команду:

    % rpm -qi AfterStep-APPS выяснил, что этот пакет содержит некие апплеты к оконному менеджеру AfterStep. Поскольку такой менеджер не использовал, удалил этот пакет, а также и сам пакет AfterStep, с помощью команд: % rpm -e AfterStep % rpm -e AfterStep-APPS Это освободило около 5800 Кбайт (отмечу только, что удаление пакетов надо выполнять с правами root-а). Воспользовавшись таким приемом Вы можете удалить все пакеты, которые не используете. Я, например, удалил такие пакеты, как gnome-core, gnome-libs, gnome-audio, поскольку в качестве графической среды использую не Gnome, а KDE. Отмечу, что когда я попытался удалить gnome-core, rpm отказалась это сделать, сообщив, что часть этого пакета используется пакетом xmms-gnome. Еще больше неудовлетворенных зависимостей образуется при попытке удалить gnome-libs. Однако поскольку все упоминавшиеся в этих сообщениях пакеты так или иначе были связаны с Gnome, я рискнул удалить их все, а также другие пакеты, которые были с ними связаны. В результате освободилось около 7800 Кбайт дискового пространства.

  2. Заглянув в каталог /usr/man, я обнаружил два подкаталога со страницами руководства man на французском и испанском языках. После их удаления освободилось около 100 Кбайт.
  3. В каталоге /usr/lib/kbd/keymaps можно, по-видимому, удалить подкаталоги, в которых хранятся таблицы раскладок клавиатуры, предназначенные для других типов микропроцессоров, а в /usr/lib/kbd/keymaps/i386 -подкаталоги для раскладок, отличных от qwerty.

    Аналогичным образом удаляются раскладки клавиатуры для различных языков, которыми Вы не пользуетесь (зачем мне китайский или тайский, я не знаю на них ни одного слова!). Эти шрифты расположены в каталоге /usr/lib/kbd/keymaps/i386/qwerty.

    Можно попробовать удалить ненужные фонты из /usr/lib/kbd/consolefonts, однако если в начале таблицы раскладки клавиатуры указывается, для какого языка она служит, то о назначении файла фонта приходиться судить по его названию.

    Поскольку по умолчанию в системе устанавливаются средства локализации для различных стран (которые Вам, по-видимому, не потребуются), то можно удалить из каталога /usr/share/locale все подкаталоги, соответствующие не нужным Вам языкам. Всего там около 16 мегабайт, так что удаление ненужного может дать около 15 мегабайт освобожденного пространства. Еще более 2 мегабайт может дать очистка каталогов /usr/share/i18n/locales и /usr/share/i18n/charmaps

  4. В каталоге /usr/share/doc/HTML/ имеются подкаталоги с документацией на разных языках, значительная часть которой Вам, по-видимому, не нужна. Я оставил в этом каталоге только три подкаталога en, ru default, причем последний является просто ссылкой на подкаталог en, так что фактически там только 2 подкаталога осталось. Удаление этой документации освободило около 500 Кбайт.
операции , связанные с изменением состава системы – установка, удаление, проверка, обновление компонентов, –производятся над пакетами. В целом, пакет – это средство сделать так, чтобы пользователь - администратор , изменяя или обновляя программное наполнение системы, работал не с файлами (имена которых ему подчас неизвестны), а с определенными функциями самой системы: например,добавлял в нее не "500 файлов", а "WWW-сервер apache ".

Архив файлов

На первый взгляд, программа состоит из одного – исполняемого файла: запускаем файл, получаем работающую программу. Однако во время работы даже самая простая программа использует другие файлы, содержащие различные ресурсы: библиотеки , конфигурационные файлы, файлы-дырки и даже запускает другие программы. Чтобы программа действительно заработала, необходимо помимо главного исполняемого файла обеспечить наличие в системе всех нужных файлов с ресурсами.

Понятно, что при установке или удалении программы следует позаботиться и обо всех используемых ею файлах (которых может быть даже очень много). Это – первая задача пакетирования : все файлы, используемые программой, объединяются в один файл – архив . Это позволяет не копировать при установке программы все файлы по отдельности, а потом не удалять их таким же способом, а работать со всеми данными программы как с единым целым – устанавливать и удалять один пакет .

Файловый архив . Дерево каталогов, представленное в виде единого файла, состоящего из содержимого всех файлов в этом дереве и информации об имени и атрибутах каждого файла.

Нет жесткого требования, чтобы один пакет содержал только одну программу. В пакет естественно объединять такие ресурсы, с которыми удобно работать как с единым целым. Это может быть отдельная программа или набор утилит (например, coreutils , основные утилиты, унаследованные Linux от UNIX ) или модуль с дополнительными возможностями программы, или общие для нескольких программ ресурсы. В процессе развития и/или устаревания программного обеспечения выделение некоторых задач в отдельный пакет может приобретать или терять смысл, поэтому способ объединения ресурсов в пакеты – это не что-то раз и навсегда выбранное: пакеты могут разделяться и сливаться.

Самый простой и традиционный для Linux способ объединить несколько файлов в один – использовать утилиту tar 1появился намного раньше Linux и изначально служил для создания файловых архивов на магнитной ленте. Отсюда и его название – tape archiver , "архиватор для (магнитных) лент". В настоящее время tar присутствует в любой UNIX-подобной системе и позволяет работать с файловыми архивами на любых носителях. Мефодий, написав несколько программ и сценариев, решил собрать их в одном файловом архиве, чтобы их удобнее было переносить на все системы, в которых ему случается работать. Для этого Мефодий создал архив со всем содержимым своего подкаталога bin/ :

Methody@localhost:~ $ tar -cf methody.progs.tar bin/ methody@localhost:~ $ tar -tf methody.progs.tar bin/ bin/loop bin/script bin/to.sort bin/two Пример 13.1. Создание файлового архива при помощи tar

Первый параметр tar состоит из двух частей: операция, которую следует произвести над архивом, в данном случае "c" ( create , создать), и ключ "f" , который указывает, что архив следует создать в файле, имя файла архива – следующий параметр . Имя архива может быть любым, но Гуревич посоветовал снабдить его расширением ".tar" , чтобы потом не путаться. После имени архива следуют имена файлов и каталогов, которые следует запаковать. 2С каждым указанным каталогом работает рекурсивно, т. е. запаковывает все содержащиеся в нем файлы и подкаталоги.

Чтобы проверить, какие файлы попали в архив , Мефодий просмотрел содержимое получившегося архива командой "tar -tf имя_архива" ("t" – просмотреть, "f" использовать файл , указанный следующим параметром). Тут Мефодий обратил внимание на два обстоятельства. Во-первых, в архиве имена файлов сохранились вместе с путем. Во-вторых,все пути, сохраненные в архиве – относительные.

При распаковке архива tar файлы извлекаются вместе с путем, недостающие подкаталоги создаются по мере необходимости. Все пути tar считает относительными, начиная от своего рабочего каталога. Если теперь Мефодий распакует свой архив (командой "tar -xf имя_архива" ),то в рабочем каталоге будет создан подкаталог "bin/" и в него будут записаны все файлы из архива:

Methody@localhost:~ $ tar -xvf methody.progs.tar bin/ bin/loop bin/script bin/to.sort bin/two Пример 13.2. Распаковка архива

Ключ "v" велит tar быть "разговорчивым" ( verbose ), т. е. выводить больше диагностических сообщений, и благодаря этому tar при распаковке выводит имена (с путем) всех записываемых файлов. Если в рабочем каталоге уже есть файл , который tar собирается создать при распаковке, то этот файл будет попросту заменен файлом из архива. Так, когда Мефодий распаковал свой "), в системе Мефодия используется один из наиболее распространенных – rpm , поэтому все примеры в данной лекции будут с его участием. Для работы с пакетами в специальном формате нужна специальная программа-установщик, которая так же и называется – rpm : она занимается установкой, удалением, обновлением и проверкой пакетов.

Пакет в формате rpm – это единый файл со всеми необходимыми данными. Существуют определенные (хотя и не очень жесткие и последовательные) соглашения относительно названий файлов-пакетов. Например, rpm -файл, содержащий комплект стандартных утилит coreutils , в системе Мефодия называется coreutils-5.2.1-some5.rpm : сначала – имя пакета , затем через дефис – служебная информация о номерах версий программного обеспечения и самого пакета .

Операционных систем семейства Linux (называемых обычно дистрибутивами Linux) очень много. Способы установки ПО на них тоже много. Разные дистрибутивы поддерживают разные способы установки, и разные форматы установочных файлов.

Большинство дистрибутивов Linux поддерживают установку из исходных кодов, распространяемых в виде архивов, обычно с расширением tar.gz. При установке программы из такого архива программа сначала компилируется из исходных кодов. После этого запускается командный файл, который копирует нужные файлы в установленные места. Такой способ установки имеет кучу недостатков. Прежде всего - совершенно ненужный для конечного пользователя процесс компилирования программы. Этот процесс занимает время, для больших программ - долгое. После остаются файлы с исходным кодом, которые также не нужны для её использования.

Для разрешения проблем с установкой программ из исходных кодов были созданы так называемые пакетные менеджеры - программы для работы с установочными файлами (пакетами). Пакетные менеджеры используют файлы в определённом формате. Использование пакетного менеджера даёт много преимуществ. Пропадает необходимость компиляции программ из исходных кодов - и, соответсвенно, сам исходный код становится необязательным для использования программы. Пакетные менеджеры умеют устанавливать программы из репозиториев - хранилищ пакетов (в том числе и через Интернет). Пакетные менеджеры отслеживают зависимости программ друг от друга - поэтому, если при установке программы чего-то не хватает, пакетный менеджер сообщит об этом, а если установка производится из Интернет-репозитория - ещё и предложит автоматически установить недостающее. Также пакетные менеджеры отслеживают конфликты пакетов - ситуации, когда одна программа мешает другой. При установке программ из исходных кодов зависимости не остлеживаются, и конфликты тоже. Если чего-то не хватает в момент сборки программы - сборка завершится с ошибкой (возможно, после того, как большая часть сборки уже будет выполнена). Если чего-то не хватает для работы программы - программа скомпилируется, но работать не будет (или будет, но неправильно). То же самое будет, если есть конфликты.

Один из самых распространённых форматов установочных пакетов - deb-файлы. "deb" - это сокращение от Debian, названия одного из самых популярных дистрибутивов Linux, в рамках которого был разработан этот формат пакетов и пакетный менеджер для него. Также этот пакет используется во многих дистрибутивах, производных от Debian - например, Ubuntu и Linux Mint. Программа GUI-deb создана в первую очередь для автоматизации создания deb-файлов, что и отражено в её названии.

Другой наиболее распространённый формат установочных пакетов - rpm-файлы. Этот формат был разработан компанией Red Hat и используется в дистрибутиве Red Hat Enterprize Linux, а также производных от него и связанных с ним дистрибутивах - Fedora, Cent OS, Mandriva, Alt Linux и многих других. Создание rpm-файлов программой GUI-deb не поддерживается. Пакет в формате rpm может быть получен из пакета в формате deb с помощью программы alien. Программа GUI-deb может автоматически запускать alien после сборки deb-файла для получения из него пакета в формате rpm.