Fedora керування пакетами

Утиліта rpm призначена в першу чергу для встановлення індивідуальних пакетів з будь-яких джерел – локальних чи мережевих (наприклад, з сайтів розробників), але переважно перших. Система управління пакетами yum орієнтована доступу до репозиторіям пакетів, причому головним чином мережевим. Хоча і використання її з локальними репозиторіями також не забороняється.

Що таке репозиторій

Насамперед спробуємо відповісти на запитання, що таке репозиторій. Бо наявність цього нині — одна з головних ознак, що дистро визначають.

У перекладі українською мовою слово репозиторій означає сховище — і саме його рекомендують вживати мовні пуристи (вони ж ті, хто вважає себе grammar nazi). Однак, як це зазвичай буває по життю, у народі утвердилося інше їхнє ім'я — repo або, говорячи з нашого, бразильського кириличного, ріпи. Чому у множині стане зрозуміло з подальшої розповіді. Ну а як синонім я віддаю перевагу терміну сховища.

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

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

Іншими словами, пакети в репозиторії маютьсупроводжуватися базами даних - тими самими, які використовуються системою управління пакетами даного дистрибутива, а також його системою побудови пакетів.

Крім того, дуже бажано, щоб репозиторій віддзеркалювався на кількох незалежних серверах — з цілком зрозумілих причин. Щоправда, це не є неодмінною вимогою. Тим не менш, наявність дзеркал - одна з підстав для вживання слова репозиторій у множині.

А тепер подивимося, як усі ці загальні міркування виглядають на практиці — стосовно репозиторій Fedora.

Фізична структура репозиторіїв

Фізично репозиторії Fedora - це набір вкладених підкаталогів на ftp-або http-серверах, і мають часом досить складну і не зовсім прозору структуру. Знання її для користувача не обов'язково - але в ряді позаштатних ситуацій буде не зайвим. А оскільки ця структура ніде не описана, принаймні, українською мовою, — приділимо їй дещицю уваги.

Втім, нетерплячі читачі можуть одразу перейти до наступного розділу — про логічний устрій репозиторіїв. А до справжнього утворитися лише при виникненні потреби.

Структура головного репозиторію

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

Так що, набравши в рядку браузера щось на кшталт http://download.fedoraproejct.org, наш радянський користувач опиниться на сервері з URL типу http://mirror.ім'я_рік.ru/fedora/linux/ (аможливо, що навіть і не зовсім). Ім'я цього самого ім'я річка я не скажу — повний список можливих варіантів можна побачити тут http://mirrors.fedoraproject.org/publiclist . І віддати перевагу якомусь одному з них, отже, як сказав би Шурик, виявити несправедливість до іншого ім'я річку.

Природно, структура всіх ім'я річок ідентична, отже її можна розглядати з прикладу будь-якого дзеркала.

Отже, опинившись на имя_рек/fedora/linux/ , ми бачимо такі каталоги:

Як неважко здогадатися, у каталозі development розміщуються пакети, що перебувають у стані розробки (тут важливий підкаталог /development/rawhide/ , до якого ми з часом повернемося), у каталозі updates — нещодавно оновлені. А ось каталог releases - це саме те, що нас зараз цікавить.

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

та підкаталог test. Іноді він порожній, вміст у ньому з'являється, коли від гілки, що розробляється (тієї самої rawhide ) відщеплюється альфа-версія наступного релізу.

Продовжимо карабкання з ієрархічного дерева. У релізному його відростку ми бачимо такі підкаталоги:

Перший включає пакети різних версій і збірок, проведених за час існування релізу. Перший, як випливає з назви, містить поточні оновлення збірок пакетів, а останній - образи LiveCD для обох підтримуваних архітектур (i686 та x86_64). І про те, і про інше буде говорити своєчасно. А ось за каталогом Fedora будемо дертися далі — тим більше, що його можна розглядати як приклад будь-якого каталогу на серверах проекту.

Отже, у каталозі fedora/linux/releases/14/Fedora/ можна бачити такіпідкаталоги:

Другий з них включає rpm-пакети вихідних текстів (так звані *.src.rpm ), про які також йтиметься окрема. Перший і третій містять збірки для 32- і 64-бітових архітектур, відповідно. Очевидно, що всередині вони абсолютно однакові, тому їх начинки розглянемо на прикладі актуальнішої нині архітектури x86_64.

У першому лежать образи настановних дисків - DVD, набору CD і диска для мережевої установки (netinst), про які мова буде в розділі про установку системи. Другий містить файли метаданих для jigdo (Jigsaw Download) - системи поширення великих файлів (в даному випадку - образів тих самих настановних дисків) і служить тій самій меті, що й попередній. Ну а в третьому, в підкаталозі Packages, власне, і знаходяться пакети, що шукаються.

Крім цього, в каталозі fedora/linux/releases/14/Fedora/x86_64/os/ можна бачити службові файли, такі, як GPG-ключі для автентифікації, файли опису репозиторію (у підкаталогах repodata і repoview ), файли для компонування власних образів завантажувальних дисків (у підкаталогах images та isolinux ), які зараз нас не цікавлять.

Що ж до вмісту каталогу Packages, то він представлений rpm-пакетами - тими, які безпосередньо підтримуються в рамках проекту Fedora.

Структура репозиторію RPMFusion

Головним репозиторієм, однак, список доступних для нашого дистрибутива пакетів не вичерпується. Існує також репозиторій для додаткових пакетів, що підтримуються волонтерами в рамках самостійного проекту – RPMFusion.

Власне, репозиторій додаткових пакетів знаходиться тут. У ньому ми бачимо два каталоги - free і nonfree. Перший призначений для безумовно вільних програм (у головному репозиторіїFedora, до речі, тільки такі й є), другий — для програм, поширення яких накладаються деякі обмеження. Які саме до цього питання ми ще повернемося.

Внутрішня структура обох каталогів однакова. У них є підкаталоги el і fedora. Перший включає пакети, перенесені назад (backports) з RHEL і нас зараз не цікавить. Другий включає підкаталоги:

а також файли опису репозиторію.

Призначення каталогів більш-менш зрозуміло з їхніх імен (до цього питання ми ще повернемося), тому зупинимося тільки на каталозі releases . У ньому є підкаталоги для півдюжини останніх релізів — у тому числі й куди «глибших», ніж ті, що підтримуються в головному репозиторії. У кожному з них ми побачимо єдиний підкаталог Everything. А в ньому вже звичні «архітектурні» підкаталоги:

Далі вглиб (або вгору? - Залежить від використовуваної метафори) - останній рівень вкладеності - підкаталоги:

У першому, як легко здогадатися, — налагоджувальна інформація, яка нам зараз не цікава. А ось у другому вже власне пакети. У тому числі і основний пакет опису репозиторію - rpmfusion-free-release. Той самий, установка якого однозначно призводить до підключення цієї ріпи. А у відповідному підкаталозі каталогу nonfree аналогічний пакет і іменуватиметься відповідно - rpmfusion-nonfree-release.

Структура репозиторію RFRemix

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

  • build/ з файлами опису репозиторіїв,
  • releases/ з образами настановних дисків і LiveCD, і
  • russianfedora/, що містить власне пакети.

Наразі нас цікавить лише останній підкаталог. Він включає три підкаталоги:

  • fixes/ , що представляє свого роду дельту між базовими та додатковими пакетами оригінальної Fedora, з одного боку, і RFRemix - з іншого;
  • free/, призначений для повністю вільних пакетів проекту Russian Fedora;
  • nonfree/ , призначений для пакетів проекту Russian Fedora, поширення яких обмежено законами деяких країн (але не нашої).

Вона ідентична: кожен з них включає підкаталоги el/ і fedora/ того ж призначення, що і RPM Fusion. У підкаталозі fedora/, у свою чергу, виділяються підкатлоги development/, releases/ і updates/, а в підкаталозі releases/ — каталоги для номерів головних (мажорних) релізів, зараз — з 10 по 15-й.

У каталозі кожного релізу ми бачимо єдиний підкаталог Everything/, що включає підкаталоги для обох підтримуваних архітектур — i386/ і x86_64/, і підкаталог source/ для пакетів з вихідними текстами. Ну і врешті-решт поверхом нижче лежать підкаталоги debug/ і os/ зрозумілого (тобто того ж, що і в RPM Fusion) призначення.

Додаткові репозиторії

Описаних вище репозиторіїв більшості користувачів вистачить майже всі випадки життя. Однак у ряді випадків виникає й необхідність у додаткових пакетах, в офіційні «ріпи» з тих чи інших причин, не включених — можливо, поки не включених. Типовий на сьогоднішній день приклад - браузер Chromium: його не знайти ні в RPM Fusion, ні в Russian Fedora.

Логічна організація репозиторіїв

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

Класифікація програм

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

Основні репозиторії

Для початку розглянемо основні репозиторії, які автоматично підключаються під час встановлення RFRemix.

А ось у складі RPMFusion є як повністю вільні, так і невільні пакети. А тому в ньому відокремлюються два репозиторії - rpmfusion-free і rpmfusion-nonfree.

Внутрішній пристрій Russian Fedora ще «багатший» - у ньому є цілих три репозиторії:

  • russianfedora-fixes — це пакети, які є в репозиторіях fedora або rpmfusion, проте представлені версіями або новішими, або адаптованими до наших умов і кирилиці; пакети цього репозиторію не поділяються на вільні та невільні;
  • russianfedora-free - повністю вільні пакети, відсутні в репозиторіях fedora або rpmfusion;
  • russianfedora-nonfree - «не зовсім вільні», в зазначеному на минулій сторінці сенсі, пакети, які також відсутні в репозиторіях оригінальної Fedora.

Це основна гілка репозиторіїв кожному за релізу. Вона супроводжується кількома додатковими пакетами, що заповнюються,оновлюваними у проміжку між релізами:

  • updates - для себе Fedora;
  • rpmfusion-free-updates - для Rpmfusion-free;
  • rpmfusion-nonfree-updates - для rpmfusion-nonfree;
  • russianfedora-fixes-updates - для Russian Fedora Fixes;
  • russianfedora-free-updates - для Russian Fedora Free;
  • russianfedora-nonfree-updates для Russian Fedora Nonfree.

Крім того, кожному з основних репозиторіїв відповідають спеціальні гілки пакетів, що відладжуються і тестуються: fedora-debuginfo і fedora-updates-testing , відповідно - для основного репозиторію і освічені за образом і подобою - для всіх інших.

І, нарешті, існує гілка репозиторіїв rawhide . Вона містить пакети наступної, версії дистрибутива, що розробляється зараз, і, природно, включає в себе ті ж самі репозиторії, що і в гілках стабіольних релізів: fedora-rawhide, rpmfusion-free-rawhide, rpmfusion-nonfree-rawhide і так далі.

Сказане вище стосувалося репозиторій бінарних пакетів для архітектур i386 і x86_64 . Однак є ще й репозиторії вихідних текстів fedora-source, rpmfusion-free-source і так далі.