Новый сезон обучения уже скоро! Идет набор! Запишись сейчас и получи скидку!


статьи

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

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

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

linux

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

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

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

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

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

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

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 и много других). Чтобы подключить этот репозиторий, достаточно в командной строке (терминале) от суперпользователя () ввести команды:

$ 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

Оценить

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
(5 голосов, в среднем: 5 из 5)
ул. Тверская, вл. 19 Россия, Москва (916) 174-8226
  1. Как-то так :) Тяжко теорию пережовывать, надо бы практику какую-то Вам выдать чтоль :)

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

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

  4. Ответить
    Razlagutt

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

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

  6. Ответить
    silent_assassin

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

  7. Ответить
    Кызюавка

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

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

      • Ответить
        Кызюавка

        Ubuntu & HP Pavilion g6-1255er

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

      • Ответить
        Кызюавка

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

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

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

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

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

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

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

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

  12. Ответить
    вадим

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

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

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

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

      • Ответить
        Владимир

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

      • Ответить
        Владимир

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

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

  14. Ответить
    25КАДР

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

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

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

    • Ответить
      Владимир

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

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

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

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

    • Ответить
      Владимир

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

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

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

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

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

    • Ответить
      Владимир

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

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

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

    • Ответить
      Станислав

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

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

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

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

  25. Ответить
    Алексей

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

  26. Ответить
    Виктор

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

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

Проверка комментариев включена. Прежде чем Ваши комментарии будут опубликованы пройдет какое-то время.