It’s FOSS: Ubuntu и сторонние PPA-репозитории

Всё, что вы хотели знать о сторонних PPA-репозиториях в Ubuntu, но боялись спросить. Подробное объяснение устройства сторонних репозиториев от редакции сайта It’s FOSS.

Всё, что вы хотели знать о сторонних PPA-репозиториях в Ubuntu, но боялись спросить. Подробное объяснение устройства сторонних репозиториев от редакции сайта It's FOSS.

Cторонние PPA-репозитори в Ubuntu

Если вы используете Ubuntu или любой другой основанный на Ubuntu дистрибутив (например, Linux Mint, Linux Lite, ZorinOS и т.д.), эти три волшебные строчки вы, скорее всего, уже где-то встречали:

sudo add-apt-repository ppa:dr-akulavich/lighttable
sudo apt-get update
sudo apt-get install lighttable-installer

Иногда на сайте разработчика вместо нативных для вашей операционной системы пакетов публикуют инструкции по установки приложения из стороннего PPA-репозитория.

Что это? Зачем нужны дополнительные репозитории? Безопасно ли их использовать? Нужно ли их настраивать? У вас наверняка скопилось множество вопросов, на которые мы постараемся ответить.

Важно: прямо сейчас на моём ПК запущена именно Ubuntu, и именно Ubuntu я буду использовать в качестве примера. Но всё это применимо и к другим дистрибутивам из семейства Ubuntu/Debian.


Всё, что вы хотели знать о сторонних PPA-репозиториях в Ubuntu, но боялись спросить. Подробное объяснение устройства сторонних репозиториев от редакции сайта It's FOSS.-2

Что такое PPA-репозитории?

PPA – это аббревиатура: Personal Package Archive. PPA позволяет пользователям и разработчикам приложений создавать собственные репозитории с нужным им софтом. Из PPA-репозиториев можно устанавливать и обновлять программы, которые пока нет в официальных репозиториях Ubuntu.

Надо ли оно вам? Не факт…

Но, чтобы разобраться в PPA-репозиториях, сперва нужно чётко понимать, как вообще работают репозитории в Linux.

Репозитории и управление пакетами

Репозиторий – это коллекция файлов с информацией о программном обеспечении, его версиях, контрольных суммах и т.д. У каждой версии Ubuntu свои репозитории:

  • Main – бесплатные приложения с открытым кодом, которые поддерживаются непосредственно Canonical.
  • Universe – бесплатные приложения с открытым кодом, поддержкой которых занимается само сообщество.
  • Restricted – проприетарные драйверы.
  • Multiverse – приложения, защищённые авторским правом и закрытыми лицензиями.

У каждой версии Ubuntu есть подобные репозитории, и при необходимости, вы можете проверить, какие приложения в них содержатся. Например, основной репозиторий Ubuntu 16.04 можно найти вот тут.

По факту репозиторий – это просто URL-адрес, по которому ваша ОС может найти информацию о нужных ей приложениях. Откуда система знает, с какими репозиториями ей можно взаимодействовать? Эта информация содержится в файле source.list в директории /etc/apt/. Загляните в него, и увидите, какие репозитории у вас уже подключены (строчки, начинающиеся с #, – это комментарии, которые ни на что не влияют):

Всё, что вы хотели знать о сторонних PPA-репозиториях в Ubuntu, но боялись спросить. Подробное объяснение устройства сторонних репозиториев от редакции сайта It's FOSS.-3

Когда вы запускаете команду sudo apt update, ваша система обновляет информацию о доступных приложениях и их версиях. Если после этого вы введёте команду sudo apt instal package_name, система найдёт нужный пакет в доступных репозиториях и установит его. Если же в репозиториях нет информации о нужном вам пакете, вы увидите соответствующее предупреждение:

E: Unable to locate package

На этом этапе мы бы рекомендовали вам ознакомиться с нашим руководством по командам apt. Это даст вам хотя бы базовое понимание того, как это всё работает.

Итак, речь вроде бы шла о репозиториях? Так как же в это всё вписываются сторонние PPA-репозитории?


Зачем нужны PPA-репозитории?

Если вы пользуетесь дистрибутивом из семейства Ubuntu, то, какое программное обеспечение и какие его версии будут вам доступны, решаете не вы, а руководство Canonical. То есть то, как быстро на вашем ПК окажется новая версия нужного вам приложения, решаете не вы и даже не его разработчик. И это как-то странно и не всегда удобно.

Canonical тщательно проверяет новые версии доступных в Ubuntu приложений, а на это им нужно определённое время. Задержка в релизах в обмен на стабильность системы. Иногда вам приходится ждать по несколько недель или даже месяцев прежде, чем до актуальной версии Ubuntu доберётся актуальная версия нужного вам приложения. И нравится такой подход далеко не всем.

Если же вы сами разрабатываете какой-то софт, вам, скорее всего, тоже хочется, чтобы пользователи получали новые версии как можно быстрее, но вам тоже приходится ждать, пока Canonical загрузит новый билд в свои репозитории. И не забывайте про бета-версии. В официальных репозиториях их вообще не бывает (это противоречит самой концепции). Так что, если вам нужно расшарить бету и собрать фидбэк, без собственного репозитория не обойтись.


Как использовать PPA-репозитории?

Как уже было оговорено выше, PPA – это персональный архив с каким-то софтом (Personal Package Archive). Персональными такие репозитории называют из-за того, что обычно за ними стоит разработчик конкретного приложения, а к разработчикам самого дистрибутива такие репозитории никакого отношения не имеют.

Благодаря Launchpad сторонние разработчики программного обеспечения могут создавать собственные репозитории для Ubuntu, а пользователи (то есть мы с вами) могут добавить сторонний репозиторий в свой source.list и автоматически загружать и обновлять доступные в нём программы. И для этого нужна всего одна простенькая команда:

sudo add-apt-repository ppa:dr-akulavich/lighttable
sudo apt-get update
sudo apt-get install lighttable-installer
  • sudo add-apt-repository <PPA_info> добавляет репозиторий в ваш source.list
  • sudo apt-get update обновляет список доступных к установке пакетов
  • sudo apt-get install <package_in_PPA> устанавливает нужный пакет

Чтобы система обновила список доступных после подключения нового репозитория пакетов понадобится команда sudo apt update. Ubuntu 18.04 и более поздние версии автоматически запускают процесс обновления, но насчёт других дистрибутивов я не уверен. Так что запустить команду вручную лишним точно не будет.

А теперь давайте подробнее разберёмся со следующей командой:

sudo add-apt-repository ppa:dr-akulavich/lighttable

Заметили, что тут нет URL-адреса? Так и должно быть. Команда add-apt-repository позволяет вам добавлять репозитории, не вписывая команды вручную:

deb http://ppa.launchpad.net/dr-akulavich/lighttable/ubuntu YOUR_UBUNTU_VERSION_HERE main
deb-src http://ppa.launchpad.net/dr-akulavich/lighttable/ubuntu YOUR_UBUNTU_VERSION_HERE main

Вот так выглядит традиционный способ добавления в source.list новых репозиториев, но PPA делает это автоматически, а значит, вам не нужно знать точный URL-адрес нужного вам репозитория.

Важно отметить, что после добавления очередного PPA-репозитория, source.list на всякий случай остаётся нетронутым и сохраняется в ту же директорию с пометкой save.

Всё, что вы хотели знать о сторонних PPA-репозиториях в Ubuntu, но боялись спросить. Подробное объяснение устройства сторонних репозиториев от редакции сайта It's FOSS.-4

Как раз в файлах с пометкой list и содержатся команды, добавляющие информацию о репозиториях.

Всё, что вы хотели знать о сторонних PPA-репозиториях в Ubuntu, но боялись спросить. Подробное объяснение устройства сторонних репозиториев от редакции сайта It's FOSS.-5

В случае, если что-то пойдёт не так, вы всегда сможете восстановить старый список репозиториев из резервной копии.


Зачем нам PPA-репозитории, если можно просто скачать deb-пакет?

Зачем заморачиваться с PPA и терминалом, если можно не заморачиваться и просто скачать на сайте разработчика нужный deb-пакет и установить его всего в пару кликов?

Всё просто: из-за обновлений. Если вы установите приложение из deb-пакета, нет никаких гарантий того, что оно будет нормально обновляться. В этом случае вам даже sudo apt update && sudo apt upgrade не помогут, ведь система обновляет лишь то, что записано в source.list.

Означает ли это, что скаченные вами deb-пакеты вообще никогда не будут обновляться? Не совсем так. Всё зависит от того, как именно был собран конкретный пакет: некоторые разработчики автоматически добавляют запись о своих репозиториях в source.list (например, Google Chrome или Vivaldi), некоторые этого не делают, но добавляют в интерфейс уведомления о возможности загрузить новую версию (как, например, Virtual Box), а кто-то и вовсе игнорирует возможность обновления (зачастую это происходит с бета-версиями). И именно поэтому PPA-репозитории всё-таки надёжнее, чем deb-пакеты, скаченные из интернета.


Официальные и неофициальные PPA-репозитории

Время от времени вам будут попадаться так называемые официальные и неофициальные PPA-репозитории. В чём между ними разница? Если репозиторий создал сам разработчик, он считается официальным. Если же репозиторий собрал кто-то из пользователей, он считается неофициальным.

Зачем нужны неофициальные репозитории от сообщества и отдельных пользователей? Дело в том, что иногда разработчики не выкладывают свой софт в пригодном для установки формате, публикуя лишь его исходный код. А собирать пакеты из исходников готовы далеко не все. Но кто-то всё-таки готов, и этот кто-то может взять на себя нелёгкую задачу поддерживать репозиторий для удобства других пользователей. Ведь ввести в терминал три команды в разы проще, чем самому собрать нужный пакет.

Как узнать, является ли нужный вам репозиторий официальным? На самом деле, если разработчик нигде открыто об этом не заявлял, явных указаний на это попросту нет.


Как убедиться, что PPA-репозиторий доступен в вашей версии ОС?

Несмотря на всю простоту, есть несколько моментов, о которых вам стоит знать: во-первых, далеко не все PPA-репозитории будут работать в конкретной версии дистрибутива. То есть прежде, чем подключать репозиторий, нужно узнать, на какой версии Ubuntu или Debian основан наш дистрибутив, а на странице репозитория обычно указываю, с какими версиями Ubuntu он будет работать (узнать версию Ubuntu можно в /etc/os-release/).

Всё, что вы хотели знать о сторонних PPA-репозиториях в Ubuntu, но боялись спросить. Подробное объяснение устройства сторонних репозиториев от редакции сайта It's FOSS.-6

Как узнать URL-адрес репозитория? Просто загуглите по названию: например, по запросу ppa:dr-akulavich/lighttable поисковик выдаст вам сайт Launchpad, на котором вы, скорее всего, без труда найдёте нужный репозиторий.

Если забить на проверки совместимости и попытаться подключить репозиторий, который в вашей системе не поддерживается, терминал выдаст следующую ошибку:

E: Unable to locate package

А хуже всего то, что только что вы добавили репозиторий в свой source.list, а значит, каждый раз, когда вы будете обновлять систему, терминал снова и снова будет выдавать сообщение об ошибке: «Не удалось загрузить информацию о репозитории».

Всё, что вы хотели знать о сторонних PPA-репозиториях в Ubuntu, но боялись спросить. Подробное объяснение устройства сторонних репозиториев от редакции сайта It's FOSS.-7

Если ввести в терминал команду sudo apt update, он выдаст более подробную информацию о конфликтующем репозитории.

W: Failed to fetch http://ppa.launchpad.net/venerix/pkg/ubuntu/dists/raring/main/binary-i386/Packages  404  Not Found
E: Some index files failed to download. They have been ignored, or old ones used instead.

Почему PPA-репозитории могут быть недоступны в некоторых версиях Ubuntu?

Дело в том, что для этого кто-то должен сперва собрать программное обеспечение, а затем создать под него отдельный репозиторий под конкретную версию ОС. Учитывая, что новая версия Ubuntu выходит каждые шесть месяцев, обновлять PPA-репозитории под каждую версию было бы проблематично. Поверьте, не у всех разработчиков есть на это время.


Как установить приложение, если PPA-репозиторий в вашей версии ОС недоступен?

Допустим, есть какое-то приложение, которого нет в официальных репозиториях Ubuntu и которое вы бы хотели установить в свою систему, но, прочитав эту статью, вы осознали, что PPA-репозиторий с ним у вас тоже подключить не выйдет. Что делать?

Попробуйте найти репозиторий на Light Table и проверьте сведения о пакете:

Всё, что вы хотели знать о сторонних PPA-репозиториях в Ubuntu, но боялись спросить. Подробное объяснение устройства сторонних репозиториев от редакции сайта It's FOSS.-8

Иногда здесь можно найти и нужный вам deb-пакет:

Всё, что вы хотели знать о сторонних PPA-репозиториях в Ubuntu, но боялись спросить. Подробное объяснение устройства сторонних репозиториев от редакции сайта It's FOSS.-9

Для установки deb-пакетов вместо стандартного Центра приложений Ubuntu мы бы советовали использовать приложение Gdebi (оно заметно лучше справляется с зависимостями), но обратите внимание: установленные таким образом пакеты не будут получать никаких обновлений.


Как удалить ненужный PPA-репозиторий?

Когда-то мы уже писали о том, как удалять ненужные PPA-репозитории. Придётся слегка повториться.

Прежде, чем удалить PPA-репозиторий, я бы советовал удалить и установленные через него приложения. Если же вы просто удалите репозиторий, эти программы останутся нетронутыми, но обновляться уже не смогут.


Как найти пакеты, установленные через конкретный PPA-репозиторий?

Центр приложений Ubuntu тут бесполезен, понадобится пакетный менеджер Synaptic. Выглядит он похуже, зато в разы функциональнее. Установить его можно с помощью следующей команды:

sudo apt install synaptic

После установки запустите Synaptic и нажмите кнопку Происхождение (Origin). PPA-репозитории будут отмечены соответствующим префиксом. Кликните по нужному репозиторию, чтобы посмотреть, какие пакеты в нём доступны.

Всё, что вы хотели знать о сторонних PPA-репозиториях в Ubuntu, но боялись спросить. Подробное объяснение устройства сторонних репозиториев от редакции сайта It's FOSS.-10

Выберите установленные из репозитория пакеты, отметьте их для удаления и примените изменения. Ну или просто воспользуйтесь следующей командой:

sudo apt remove package_name

После удаления пакетов из ненужного PPA-репозитория можно удалить и сам репозиторий.


Удаление PPA-репозиториев с помощью графических утилит

Перейдите в раздел Приложения и обновления (Software & Updates), откройте вкладку Другое ПО (Other Software) и найдите PPA-репозиторий, который собираетесь удалить:

Всё, что вы хотели знать о сторонних PPA-репозиториях в Ubuntu, но боялись спросить. Подробное объяснение устройства сторонних репозиториев от редакции сайта It's FOSS.-11

Перед удалением ОС спросит, действительно ли вы уверены в том, что собираетесь сделать. Если вы просто отключите репозиторий, система отметит его как неактивный. Если же вы выберите полное удаление, запись о репозитории будет удалена из source.list. В обоих случаях ppa_name.list останется в директории /etc/apt/source.list.d.


Безопасно ли использовать PPA-репозитории?

Вопрос сложный и во многом субъективный. Кто-то не доверяет PPA из-за того, что не всегда ясно, кто именно стоит за репозиторием и софтом, который в него загружен. Кто-то наоборот предпочитает использовать именно сторонние репозитории, ведь обновляются они заметно быстрее официальных.

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

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

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


Что в итоге?

Знаю, что тут слишком много букв, но хотелось раскрыть тему максимально подробно и понятно. Надеюсь, кому-то этот текст будет полезен.

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

Абхишек Пракаш,
It’s FOSS
31 октября 2023

Comment