статьи

Репозитории, пакеты, менеджеры пакетов и зависимости в Linux

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

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

linux


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

Как и в случае со статьей "Графические оболочки в Linux [основы основ, работа в KDE]", всё, в общем-то, просто, но необходимо по ходу чтения несколько напрячь мозг, дабы не запутаться в хитросплетении терминов и несколько скомканном повествовании. В общем, следите за мыслью :) При необходимости прочитайте статью дважды ;)

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

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

к содержанию ↑

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

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

reprs


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

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

к содержанию ↑

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

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

Если Вы хотите знать больше, желаете научиться этому профессионально и понимать происходящее, то запишитесь к нам на обучение.

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

packet

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

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

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


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

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

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

к содержанию ↑

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

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

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

all


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

к содержанию ↑

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

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

  1. Не надо искушать судьбу и ставить программы в Linux в обход менеджера пакетов, простой компиляцией. Работать они будут, но пакетный менеджер ничего о них не будет знать, из-за чего при обновлении системы или программ Вы рискуете получить больше проблем на свою голову, чем представляете. Устанавливайте программы только в виде пакетов.
  2. Не надо подключать те репозитории, о которых имеете совсем смутное представление. Например, не надо подключать репозитории со словами testing, debug и тому подобными терминами, ибо эти репозитории в первую очередь предназначены для самих разработчиков дистрибутивов и далеко не всегда стабильны.
  3. Не подключайте подряд все доступные репозитории, это тоже может сыграть с Вами злую шутку. Подключайте только самые необходимые, не надо жадничать :)

Например, при установке операционной системы 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 https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm
$ sudo rpm -ivh https://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, как в этой операционке устроена файловая система, что подразумевается под пользователем (и кто такой суперпользователь, он же root), а так же поговорим о программах и кой о чем другом. Оставайтесь с нами.

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

P.S. За существование данной статьи спасибо члену команды Pantera

  • Sonikelf

    Как-то так :) Тяжко теорию пережовывать, надо бы практику какую-то Вам выдать чтоль :)

    • Sonikelf

      Первый, да

  • kuzma777

    второй! занимательно но не для всех

    • Sonikelf

      Это да :)

  • 8kurt

    Третий. Как вообще выглядит Linux?

    • Sonikelf

      Например так - https://sonikelf.ru/perestaem-boyatsya-linux/
      А опробовать можно прямо из под винды так - https://sonikelf.ru/2-v-1-sistema-v-sisteme-virtualizaciya-ili-ustanovka-i-ispolzovanie-linux-iz-pod-windows-virtual-box/

  • Razlagutt

    В разделе "Несколько слов о нюансах" в 1-м пункте 2 раза написано "в виде".

    • Sonikelf

      Поправил, спасибо

  • ym_

    Статья класс... А вот дистрибутив Fedora Linux, не лучший для примера, ибо это тестовый полигон... В качестве стабильного дистрибутива не всегда подходит!

    • Sonikelf

      Каждому свое :)

  • silent_assassin

    Sonik in point ! Очень необходимая инфа )

    • Sonikelf

      Гуд :)

  • Кызюавка

    Приветствую! Будет ли статья про энергосбережение на ноутбуках с Linux? Laptop Mode не особо помогает, к сожалению.

    • Sonikelf

      Приветствую.
      Смотря какой дистрибутив используете и что у Вас за ноутбук :)

      • Кызюавка

        Ubuntu & HP Pavilion g6-1255er

      • Sonikelf

        Да, думаю, что напишемс

      • Кызюавка

        Спасибо, если так. Уж очень ноутбук проблемный)

  • cthdth

    Интересно. Буду ждать статьи посложнее. Спасибо, что не забыли про linux.

    • Sonikelf

      Всегда пожалуйста

  • ALPom

    Извините за занудство, но в третьем абзаце и заголовке второго раздела ошибка в слове "репризитарий,репризеторий". Вообще-то, вроде правильно говорить репозитарий, но все (и я в т.ч.) говорят репозиторий.
    Статья, честно говоря, сложновата. Я бы не осилил. Для начинающих я бы порекомендовал "Руководство по Ubuntu для новичков", там просто написаны базовые сведения по установке и использованию Ubuntu - одного из самых популярных дистрибутивов linux.

    Еще, уважаемый Sonikelf, на вашем сайте по СЕО написано "находится на рестОврации".

    • Sonikelf

      Виноват, спасибо, что сказали.

  • assert

    Познавательно, для новичков будет)))

    • Sonikelf

      Да и не только для них :)

  • semiol

    Как раз пересел на Ubuntu 12.04 Remix.Пока ни какой сложности не вижу.Только радость от действительно ЧЕЛОВЕЧЕСКОЙ системы.
    Прошу продолжать знакомить нас-лохов-с этой интересной(весьма интересной)системой.
    С глубоким уважением к автору!

    • Sonikelf

      Да, убунтень хороша. Про неё будет еще не раз написано :)

  • вадим

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

    • Sonikelf

      Уделю обязательно.
      Всегда пожалуйста.

  • Invictus

    спасибо за статью, Андрей! я в линуксе вообще чайник) и хотелось бы услышать ваше мнение о "Росинке"

    • Sonikelf

      Про Росинку не слышал, но судя по тому, что вижу у них на сайте - это допиленый Linux Mint, причем не рискну утверждать, что там допилили что-то кроме названия. К тому же дистрибутив, судя по ссылкам, не обновлялся с 27-08-2011, а это печально.

      • Владимир

        Пользуюсь Росинкой-11. Это действительно "допиленный" Минт, но допиленный российскими программистами, с более детальной русификацией и предустановленными прогами какие предпочитают "наши " юзеры. Всё, что надо рядовому юзеру там уже есть, как говорится "прямо из коробки".
        До этого юзал Минт - 11, так там и Русского языка маловато и программ маловато. Так что СПАСИБО БОЛЬШОЕ ГРИГОРИЮ (d.j. Baldey) И ЕГО КОМАНДЕ за то что на одном энтузиазме создают для нас такую хорошую Росинку.
        ЗЫ: от себя, при агитации перехода на Линукс, всем советую ИМЕННО Росинку, как самую удобную при переходе с Винды, т.к. интерфейс и графическая оболочка сделаны по аналогии с форточками( специально для удобства и быстрого ознакомления).
        ЗЗЫ: мой сын, когда приходит в гости, юзает мой линукс, в своих целях(то ли в соц.сети СВОИ зайти, то ли папе какой то прикол скачать или музыку и т.д.), так он в Росинке "ориентируется" как в своей "семёрке", причём с первого раза. Взял у меня Установочный диск - да всё "руки не доходят" - говорит "некогда", я конечно называю другим словом, но дума что и он скоро созреет.

      • Владимир

        "не обновлялся с 27-08-2011, а это печально."

        Последний релиз: линукс минт росинка-11 (по аналогии с 11-м Минтом).
        12-й Минт вышел с Гномом-3, а это такое неудачное г.... , что релиз по нему не делали, да никто и не жалеет. Сейчас ждём Росинку 13.

  • 25КАДР

    Весьма занятная статья, хоть и теория, интересно было просвятиться, спасибо!
    Ну а практика, господа, скоро подтянется :)
    Тандему Sonikelf и Pantera, благодарность и низкий пингвин, поклон то есть :-)

    • Sonikelf

      Всегда пожалуйста ;)

  • Invictus

    спасибо за ответ) жду не дождусь практики) буду через virtual box осваивать linux) а что можете сказать о Linux Mint?

    • Sonikelf

      Linux Mint вполне неплохой дистрибутив, один из любимых мною, где-то после Ubuntu

      • Invictus

        спасибо большое за ответ))

    • Владимир

      прочтите мой коммент выше, и, не надо через "виртуал", ставьте сразу рядом с Виндой и будет Вам счастье.
      Гарантирую что "сносить" её Вам не захочется. Я, к стати, Винду снёс, т.к. в игры не заморачиваюсь а всё остальное, что надо, есть и в Росинке.

  • Settera

    Спасибо, Андрей, что не забываешь про Linux :)
    Хотелось бы, может, в будущем, статейку на тему Linux и 1С v8.2 да и v7.7 пусть будет. У меня она спокойно встала на Ubuntu и даже вполне себе прилично работает, но бывает один мерзкий глюк, который меня уже порядком достал. В инене про него инфы мало, а знакомые компьютерщики крутят пальцем у виска и говорят, что я псих и чего мне на винде спокойно не сиделось, и что Linux - это особый вид секаса :)

    • Sonikelf

      Что именно за мерзкий глюк? :)

  • Invictus

    Андрей, есть такой вопрос. Скачал я дистрибутив вот это вот https://www.linuxmint.com/edition.php?id=115?id=115. Записал, запустился с диска, но он весь на английском) Если я установлю его он так и останется на инглише или будет русский? Или как то можно менять язык?)

    • Sonikelf

      Я не успел, но ниже ответили :)

    • Владимир

      А после установки он русифицируется(процентов на 80), опять же посоветую Линукс Минт Росинку.

  • ym_

    Можно менять язык. При загрузки лайф cd(когда появится меню выбора, как грузиться в систему), попробуйте f8 или f4 (я точно не помню) - в общем там будет написано language внизу. Вот нажимаете и выбираете язык...

    • Invictus

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

  • RoveR

    А у меня в gentoo при установке любого пакета ругается на EAPI, мол старая версия и нужно обновить portage, обновить его как я понял можно тем же способом emerge portage, но опять таки ругается на старый EAPI :(

  • Invictus

    здравствуйте, подскажите пожалуйста а 20 гигов достаточно будет для установки Linux Mint 13 "Maya" 32bit KDE?

    • Владимир

      20 гигов хватит,
      только для Майи желательно иметь видеокарту с 3D (для версии чинамон - точно), за кеды не скажу(это я про видеокарту).

  • Settera

    Про мерзкий глюк напишу на почту, ОК?

    • Invictus

      вы это кому написали?

  • Des

    Спасибо за статью! Заждались уже. Все просто и доходчиво, даже 2 раз читать не пришлось :)))
    Хотелось бы статью по установке Linux как второй системы.

    • Станислав

      а что ее ставить то ? если у вас windows, просто ставить на пустой раздел и все =)

    • mblko1a

      Если системный диск только один, то нужно НЕ напутать с разбивкой диска, а то можно и винду "убить". А так в интернете куча инструкций о том как поставить linux второй системой.

  • mikl

    Несколько замечаний.
    linux идеален для администрирования, интернет-серфинга, безопасности, имеет широчайшие возможности конфигурирования, но:
    1)крайне остро не хватает total-commander (krusader- жалкое подобие), хотя консоль с mc на высоте.
    2)кроме игр и другого тяжеловесного софта, практически не работают САПР-программы (autocad, компас и др.),
    а wine все-же костыли.
    3)через несколько лет использования linux (были ubuntu, mandriva, сейчас debian с kde) постоянно приходиться
    что-либо подстраивать, подправлять, т.к. не "из коробки", да и средств больше. Хотя это уже по большей части
    из области "важнее процесс".

  • ALPom

    Для замены TotalCommander'a есть еще Double Commander. Это кросплатформенное (под винду тоже есть) бесплатное приложение, которое позиционируется как полная замена платному ТС. В т.ч. поддерживает плагины от ТС. Сейчас его использую. По-моему, лучше всего двупанельного, что видел под linux.
    А еще очень нравиться двухпанельный режим по F3 у nautilus, классная, на самом деле, идея.

  • Алексей

    Очень внятная статья, прям как для виндузятников-эникейщиков :) Жаль, у меня не было этой информации, когда я только начинал линуксы осваивать, так бы всё проще было. Тут прям по полочкам всё, красота.

  • Виктор

    Отличная статья! Все прекрасно описано, а я уже хотел репозиториев разных поставить..

 

* - комментарии могут появляться не сразу, попасть в спам или быть удалены за несоответствие правилам