Алексей Федорчук
Поскольку пакетные менеджеры, которым будут посвящены части четвёртая и пятая, работают не с единичными пакетами, как описанные в прошлой части установщики, а с их репозиториями, они предваряются описанием воззрений кота Manual’а на официальные и неофцициальные репозитории дистрибутивов семейства Ubuntu, а также на методы их использования.
Репозитории
Пакеты, входящие в дистрибутив (или, если угодно, образующие дистрибутив), валяются не абы как — они организованы в репозитории. Что это такое?
В переводе на русский язык слово репозиторий означает «хранилище» — и именно его рекомендуют употреблять языковые пуристы. Однако, как это обычно бывает по жизни, в народе утвердилось иное их именование — repo или, говоря по нашему, по бразильскому кириллическому, «репы». Почему во множественном числе — станет понятно из дальнейшего рассказа.
Сам по себе репозиторий действительно можно в первом приближении определить как место хранения пакетов, специально собранных для данного дистрибутива, к которому возможен свободный (мы ведь ведём речь только о свободных системах, верно?) доступ.
Однако доступности сервера, хранящего пакеты, недостаточно, чтобы носить высокое званиезвание репозитория. Пакеты в репозитории должны быть структурированы по определённым, присущим данному дистрибутиву, принципам. Система хранения пакетов должна обеспечивать их пополнение, обновление, а главное — поддержку целостности и непротиворечивости пакетов в отношении зависимостей, причём для всех поддерживаемых на текущий момент версий дистрибутива.
Иными словами, пакеты в репозитории должны сопровождаться базами данных — теми самыми, которые используются системой управления пакетами данного дистрибутива.
Кроме того, весьма желательно, чтобы репозиторий зеркалировался на нескольких независимых серверах — по вполне понятным причинам. Правда, это не является непременным требованием. Тем не менее, наличие зеркал — одно из оснований для употребления слова репозитории во множественном числе.
В последние годы получила распространение точка зрения, что право на гордое имя настоящего дистрибутива даёт только собственный репозиторий пакетов, при его отсутствии ты в лучшем случае ремикс дрожащая, а то и вообще жалкий респин. Причём дистрибутив, претендующий на всенародную любовь, обязан иметь репозиторий тем более всеобъёмлющий, чем шире его претензии.
Автор этих строк и сам активно поддерживает озвученный взгляд. Почему до сих пор так и не набрался наглости величать нашу Cintu дистрибутивом. Ибо она основывается, с одной стороны, на официвальных репозиториях проекта Ubuntu, с другой — на нескольких PPA-репозиториях с Launchpad’а, которые и будут последовательно рассмотрены в ближайших разделах.
Устройство репозиториев Ubuntu
Официальные репозитории Ubuntu располагаются по адресу: archive.ubuntu.com/ubuntu. Это — «головное» хранилище пакетов, имеющее многочисленные региональные зеркала, принадлежность которых к стране указывается стандартным двухсимвольным префиксом, например ru.archive.ubuntu.com/ubuntu/ — российское зеркало.
Проще всего с устройством репозиториев с точки зрения применителя можно ознакомиться просмотром их списка в файле /etc/apt/sources.list
, который создаётся автоматически при инсталляции. В Ubuntu и любом её «чистом» (не обязательно официальном) клоне, в том числе и в Cintu, при согласии с предлагаемыми в ходе стандартной установки умолчаниями он в обязательном порядке содержит следующие строки:
deb http://ru.archive.ubuntu.com/ubuntu/ xenial main restricted deb http://ru.archive.ubuntu.com/ubuntu/ xenial universe deb http://ru.archive.ubuntu.com/ubuntu/ xenial multiverse
Здесь первый компонент в каждой строке, deb
, означает, что речь идёт о бинарных пакетах (про пакеты с исходниками я скажу чуть позже). Далее следует «базовый» URL репозитория, соответствующий тому зеркалу сервера, которое было выбрано при установке системы — в наших условиях оно будет или российским (как в примере), или официальным http://archive.ubuntu.com/ubuntu/. Последнее отнюдь не является показателем русофобии — известны прецеденты, когда обновления ысех зеркал существенно запаздывали супротив официоза.
Далее указывается кодовое имя релиза (в примере — xenial
) и его отдельных веток, коими по умолчанию будут:
- просто
xenial
— в неё входят собственно пакеты дистрибутива; xenial-updates
— «обычные» обновления пакетов, связанные со сменой версий, сборок и исправлением ошибок;xenial-security
— как нетрудно догадаться, обновления, латающие «дыры» в безопасности системы.
Кроме того, каждом релизе Ubuntu имеются ещё две ветки — в 16.04 они носят имена xenial-backport
и xenial-proposed
: обе они содержат обновлённые версии некоторых пакетов из последующих релизов, первая — уже офциально «утверждённые», вторая — проходящие «обкатку».
Для подключения ветки с backport’ированными пакетами при установке любого «чистого» клона Ubuntu нужно отметить соответствующую опцию, что в Cintu и авторских редакциях Neon’а сделано по умолчанию. Ветку xenial-proposed
можно (если нужно — а иногда такая необходимость возникает) подключить только вручную, внеся в файл /etc/apt/sources.list
такую строку:
deb http://ru.archive.ubuntu.com/ubuntu/ xenial-proposed main restricted universe multiverse
Наконец, в то же файле /etc/apt/sources.list
есть и такая строка:
# deb-src http://archive.canonical.com/ubuntu xenial partner
Это репозиторий для пакетов, в том числе и коммерческих, разрабатываемых партнёрами фирмы Canonical. Как можно видеть, по умолчанию после стандартной утсановки она закомментирована. Я, кажется, никогда ничего из этого репозитория не устанавливал, и потому и в Cintu, и в Neon’е он онтлючён. Для включения с него надо снять символ комментария.
Далее в каждой втеке репозиториев идёт перечень категорий пакетов. Их четыре:
main
— полностью свободные пакеты, официально поддерживаемые разработчиками Ubuntu;restricted
— пакеты, также официально поддерживаемые дистрибутивом, но не вполне свободные;universe
— полностью свободные программы, официально дистрибутивом не поддерживаемые и развивающиеся силами независимых разработчиков;multiverse
— пакеты, аналогично universe официально не поддерживаемые и, подобно restricted, не вполне свободные.
«Не вполне свобода» пакетов из категорий restricted
и multiverse
выражается в ограничениях на их распространение (например, мультимедиа-кодеки, использующие алгоритмы, патентованные в отдельных странах) или могут распространяться только в бинарном виде (например, фирменные драйверы для видеокарт).
До сих пор речь шла о репозиториях бинарных пакетов. Однако существуют и параллельные им репозитории с исходниками. Они подлючаются, если отметить соответствующую опцию при первичной установке системы, чего нет ни в Cintu, ни в Neon’е. Так что если исходники потребуются — надо снять символы комментария со строк
# deb-src http://ru.archive.ubuntu.com/ubuntu/ xenial main restricted
И им подобных.
PPA-репозитории
Кроме официального репозитория, для Ubuntu существует централизованное хранилище репозиториев дополнительных, объединяемых понятием PPA — Personal Packages Archive, то есть входящих в персональный архив пакетов, пополняемый сторонними разработчиками и майнтайнерами. А их, вследствие популярности дистрибутива, очень немало. И поэтому свежие версии многих программ, как популярных (что важно для начинающих применителей), так и весьма экзотических (что часто критично для применителей многоопытных), в первую очередь появляются как бинарники в PPA-репозиториях Ubuntu.
Для доступа к PPA-репозиториям фирмой Canonical разработан специальный онлайновый инструмент — Launchpad, размещённый на одноимённом сайте. Это — не открытая и не свободная система. Более того, она имеет и платную версию, предназначенную для разработчиков коммерческих пакетов. Однако нас, как применителей, это не касаются.
Описания подлючённых PPA-репозиториев даются в отдельных файлах каталога /etc/apt/sources.list.d/
, называемых в соответсвие с ppa-именем пакета и суффиксом *.list
. Откуда оно берётся, будет сказано позднее. А пока — как оно выглядит.
Большинство пакетов в PPA-репозиториях собирается и поддерживается майнтайнерами-индивидуалами, и потому здесь нередко можно видеть их имена, фамилии или ники. В других случаях это просто имя пакета, часто с отражением статуса разработки. Репозиторий может включать несколько связанных друг с другом пакетов — и тогда может называться по главному из них.
Возможны и более причудливые имена, например, ppa:mystic-mirage/komodo-edit
— репозиторий текстового редактора Komodo Edit. Важно, что они в обязательном порядке включают «префикс» ppa:
, который в имени соответствующего list-файла отбрасывается. Зато завершается последний обязательным компонентом — именем релиза. Например, для Komodo Edit имя list-файла, соответствующего релизу 16.04 — mystic-mirage-ubuntu-komodo-edit-xenial.list
.
Внутри такого файла — обычно две строки. Например, для пакета komodo-edit
они будут такими:
deb http://ppa.launchpad.net/mystic-mirage/komodo-edit/ubuntu xenial main deb-src http://ppa.launchpad.net/mystic-mirage/komodo-edit/ubuntu xenial main
То есть в одном файле описывается и репозиторий бинарников, и репозиторий исходников. Если последний отсутствует — соответствующей строки не будет. Впрочем, в PPA-репозиториях пакетов без исходников не водится. А вот среди «не вполне свободного» софта встречаются, примером чему — браузер Vivaldi: файл vivaldi.list
выглядит следующим образом:
deb http://repo.vivaldi.com/stable/deb/ stable main
Однако случаи, когда приходится искать пакеты за пределами PPA-репозиториев, достаточно редки. Ибо в них, как в Греции есть всё — и ещё немного больше, чем всё. Правда, чтобюы воспользоваться этим «греческим сокровищем», PPA-репозитории нужно подключить, о чём будет говориться в следующем разделе.
Подключение PPA-репозиториев
Подключение PPA-репозиториев во всех «чистых» клонах семейства Ubutnu можно выполнить разными способами. Первый из них — «ручной», о котором я скажу в конце этого раздела. Ничего принципиально сложного в еём нет, однако и прибегать к нему приходится редко. Ибо в Ubuntu и её клонах имеется специальная утилита add-apt-repository
— сценарий на Python’е, автоматизирующий данный процесс. Иногда в сети можно встретить для него имяapt-add-repository
, но это не более чем символическая ссылка на реальный скрипт.
Поскольку очевидно, что для подключения репозиториев требуются права администратора, команда эта должна быть дана в такой форме:
$ sudo add-apt-repository [ppa-name]
где [ppa-name] — так называемое PPA-имя, которое только и требуется знать для нужного репозитория. Как его определить?
Можно, конечно, походить по форумам Ubuntu’йской тематики, можно сделать запрос к Гоше или Яше, указав имя искомого пакета, можно… да много чего можно сделать, чтобы по прошествии изрядного или ещё большего времени получить нужный результат. А можно, действуя методично и планомерно, прибегнуть к универсальному способу, который и описывается ниже.
Первый шаг — заход на Launchpad.net. Далее в поле поиска следует набрать имя требующегося пакета или его фрагмент, например, systemback
:
Далее в списке выдачи результатов нужно отыскать нужную строку — Systemback: Kendek (почему, будет сказано в соответствующем трактате)
Теперь — по ссылке, и прочитать раздельчик, озаглавленный Adding this PPA to your system, где искомое ppa-имя будет выделено полужирным шрифтом:
Его и следует подставить в качестве аргумента команды:
$ sudo add-apt-repository ppa:nemh/systemback
Дабы развеять все сомнения, можно пройти по ссылке Read about installing. Появится всплывающее окошко, в котором процедура добавления PPA-репозитория будет описана подробно, с иллюстрациями:
После выполнив предыдущей команды нужно ни в коем случае не забыть проделать процедуру апдейта, о чём, впрочем, есть напомингание на странице:
$ sudo apt update
Теперь можно устанавливать пакеты из новообретённого репозитория. А ознакомиться со списком оных можно сразу. Правда, в данном примере — всего один пакет, но зато для всех актуальных релизов, включая и нужный нам Xenial:
Впрочем, как было сказано в начале раздела, можно обойдясь без команды add-apt-repository
: отыскав нужный репозиторий (пусть для разнообразия это будет PPA Цветко Цветкова с пакетами Cinnamon 3.2 для релиза Xenial), развернуть строку Technical details about this PPA:
Строки из поля ниже просто копируются в новый текстовый файл, создаваемый в каталоге /etc/apt/sources.list.d
под именем tsvetko_tsvetkov-ubuntu-cinnamon-3-2-xenial.list
. После чего следует добавить gpg-ключ — это символы после слеша в строке Signing key:. Что делается тремя командами:
$ sudo gpg --keyserver keyserver.ubuntu.com --recv DA2717C1 $ sudo gpg --export --armor DA2717C1 > /tmp/public.key $ sudo sudo apt-key add public.key
Две последние команды можно совместить в одном конвейере:
$ sudo sudo gpg --export --armor DA2717C1 | apt-key add --
И теперь остаётся только не забыть про обновление локального кеша:
$ sudo apt update
Не правда ли, любой из предложенных способов проще, чем беготня по форумам и блогам? Да и Гошу с Яшей не стоит беспокоить по пустякам.
Редко, но бывает так, что приходится устанавливать пакеты из какого-либо иного источника, нежели PPA-репозитории. Но в этом случае грамотно сделанный пакет при установке сам добавляет свой репозиторий в общий список — так, например, происходит при установке биаузеров Vivaldi и Opera. Либо, на худой конец, сопровождается сведениями о том, как это сделать самостоятельно (пример чему будет приведён в трактате про Virtualbox). Если ни того, ни другого не имеет места быть — возникает вопрос: а стоит ли связываться с таким пакетом?
Низкий поклон Вам за такое мелкоразжеванное изложение.