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

  1. Про репозиторіях в Linux. Що це і навіщо потрібно
  2. Про пакетах і менеджерах пакетів в Linux. Що це і навіщо потрібно
  3. Про залежностях в Linux. Що це і навіщо потрібно
  4. Кілька слів про нюанси
  5. Післямова

Вітаю, дорогі друзі, знайомі та інші особистості.

Як Ви напевно знаєте і пам'ятаєте, я обіцяв потихеньку (по ваших прохань) охоплювати цикл Linux, знайомлячи Вас з різними основами і дуже поступово перетікаючи з теорії в практику.

Сьогодні ми поки що продовжимо тему знайомства з теорією і основами, а тому поговоримо про таку штуку, як репозиторії і про все, що з ними пов'язано, тобто розберемося як же виглядає зсередини софт в Linux, як це все зберігається і все таке інше.

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

Поехалі.Все програми в дистрибутивах 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 [Advanced Package Tool] створена для дистрибутивів Linux, заснованих на Debian, використовується в Ubuntu (і клонах), Аlt Linux і ін. Потужний менеджер пакетів, що працює в текстовому режимі. Вміє вирішувати залежно та підтримує репозиторії (джерела пакетів);
  • Portage package management system має багато різновидів, прикладом може служити дистрибутив Gentoo. Як варіант пакетного менеджера можна привести emerge.

До слова, пакетні менеджери не просто шукають бажані Вами програми за описами, але перш нам потрібно ввести ще один не раз вже згаданий термін і пояснити його.

до змісту ↑

Про залежностях в Linux. Що це і навіщо потрібно

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

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

Говорячи просто, пакетний менеджер це така програма, яка веде базу даних встановлених додатків і їх версій, і завжди знає, які файли куди встановлено, щоб можна було поставити нові програми, видалити старі або оновити всю систему цілком без перевстановлення та   вичищення сміття залишилися файлів

Вся ця величезна купа пакетів з їх купою залежностей друг від друга, керована пакетним менеджером, якраз і становить Ваш дистрибутив 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), а так же поговоримо про програми та про дещо інше. Залишайтеся з нами.

Як і завжди, якщо є якісь питання, доповнення і все таке інше, то буду радий бачити їх у коментарях до цього матеріалу.

PS За існування даної статті спасибі члену команди Pantera

Ми в соц.сетях: ВК Facebook Twitter Telegram

Представили?
Для чого створюються репозиторії?
Як же тоді дізнатися - чи є оновлення для Вашої програми чи ні?
Згадуємо, для чого у нас існують оновлення?
Так давайте розберемося - а що ж це таке?