Как найти репозиторий в линукс

Из этой статьи вы узнаете что такое репозитории в Linux. Мы научимся их настраивать на примере Debian 11 и Ubuntu 22.04.

Что такое репозиторий

Репозиторий – это своеобразное хранилище приложений. У многих GNU/Linux дистрибутивов есть свои репозитории. А также разработчики какого-нибудь отдельного программного обеспечения могут создать свой репозиторий. Но в этом случае такой репозиторий нужно разделить на ветки, одна ветка будет подходить для одной Linux системы, а другая для другой.

В репозиториях, которые подходят для Debian и Ubuntu приложения хранятся в виде архивов. Такие архивы называются пакетами. Эти пакеты имеют особый формат – deb. Есть ещё другой, популярный, формат пакетов – rpm, но системы полагающиеся на такие пакеты я не рассматриваю.

Linux сервера и их репозитории

Linux сервера и их репозитории

Репозитории могут быть доступны с использованием различных протоколов, но самым распространённым является http. Такие репозитории могут быть открыты с помощью обычного браузера. И от туда можно скачать необходимый пакет для установки. Но правильнее устанавливать пакеты в систему из репозиториев с помощью специальных утилит – пакетных менеджеров.

На этом уроке мы познакомимся с подключением системных и сторонних репозиториев. А пакетные менеджеры рассмотрим позже.

Конфиги со списком репозиториев

Пакетные менеджеры, которые умеют устанавливать пакеты из репозиториев, должны знать адреса репозиториев. И эти адреса записываются в конфиг – /etc/apt/sources.list. А также можно создавать дополнительные конфиги с расширением .list в каталоге /etc/apt/sources.list.d/. Всё это справедливо и для Debian и для Ubuntu.

Если помните, в процессе установки систем мы выбирали репозиторий:

  • для Debian – deb.debian.org;
  • для Ubuntu – ru.archive.ubuntu.com.

Давайте теперь посмотрим какие репозитории прописались на наших Linux системах (с помощью egrep -v '^#|^$' я убрал комментарии, а с помощью cat -n добавил нумерацию строк):

alex@ubu:~$ egrep -v '^#|^$' /etc/apt/sources.list | cat -n
    1 deb http://ru.archive.ubuntu.com/ubuntu jammy main restricted
    2 deb http://ru.archive.ubuntu.com/ubuntu jammy-updates main restricted
    3 deb http://ru.archive.ubuntu.com/ubuntu jammy universe
    4 deb http://ru.archive.ubuntu.com/ubuntu jammy-updates universe
    5 deb http://ru.archive.ubuntu.com/ubuntu jammy multiverse
    6 deb http://ru.archive.ubuntu.com/ubuntu jammy-updates multiverse
    7 deb http://ru.archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse
    8 deb http://ru.archive.ubuntu.com/ubuntu jammy-security main restricted
    9 deb http://ru.archive.ubuntu.com/ubuntu jammy-security universe
    10 deb http://ru.archive.ubuntu.com/ubuntu jammy-security multiverse

alex@deb:~$ egrep -v '^#|^$' /etc/apt/sources.list | cat -n
     1  deb http://deb.debian.org/debian/ bullseye main
     2  deb-src http://deb.debian.org/debian/ bullseye main
     3  deb http://security.debian.org/debian-security bullseye-security main
     4  deb-src http://security.debian.org/debian-security bullseye-security main
     5  deb http://deb.debian.org/debian/ bullseye-updates main
     6  deb-src http://deb.debian.org/debian/ bullseye-updates main

Разбираем конфиг

Этот файл состоит из строк, а строки состоят из следующих столбцов:

  • Тип пакетов:
    • deb — архив с уже откомпилированной и готовой к установке программой;
    • deb-src — архив с исходным кодом программы, который перед установкой нужно будет откомпилировать.
  • Адрес репозитория:
    • http://ru.archive.ubuntu.com/ubuntu – для Ubuntu;
    • http://deb.debian.org/debian/ – для Debian;
    • http://security.debian.org/debian-security – обновления безопасности для Debian.
  • Ветки репозитория:
    • для Ubuntu:
      • jammy – приложения для этой версии Ubuntu;
      • jammy-updates – рекомендуемые обновления;
      • jammy-backports – обновления из более новой системы. Допустим для Ubuntu 20.04 определённый пакет уже не обновляется, но из этой ветки можно попробовать его обновить (конечно есть вероятность повредить систему);
      • jammy-security – важные обновления безопасности, без которых ваш сервер легче будет взломать.
    • для Debian:
      • bullseye – приложения для этой версии Debian;
      • bullseye-updates – рекомендуемые обновления;
      • bullseye-security – важные обновления безопасности, без которых ваш сервер легче будет взломать.
  • И в самом конце компоненты, их можно записывать через пробел в одной строке:
    • Для Ubuntu:
      • main – здесь находятся пакеты, которые официально поддерживаются компанией Canonical;
      • restricted – содержит поддерживаемое ПО с закрытым исходным кодом, например MP3 или Flash;
      • universe – содержит ПО, которое поддерживается сообществом пользователей и разработчиков Ubuntu;
      • multiverse – содержит ПО, которое каким-либо образом ограничено либо условиями лицензии, либо юрисдикцией.
    • Для Debian компоненты делятся по критериям свободного ПО (DFSG)
      • main – пакеты полностью соответствуют критериям DFSG. Эти пакеты считаются частью дистрибуции Debian;
      • contrib – пакеты тоже соответствуют критериям DFSG, но зависят от других пакетов, которые не соответствуют этим критериям;
      • non-free – содержит всё остальное ПО, которое не соответствует DFSG.

Классы релизов в Debian

Рассматривая выше ветки репозиториев Debian мы увидели следующее:

  • bullseye;
  • bullseye-updates;
  • bullseye-security.

Но, помимо кодовых имён версий системы, в названиях веток, можно использовать специальные классы релизов:

  • stable – ссылается на текущей стабильный репозиторий Debian, сейчас это bullseye. Как только выйдет новая версия Debian, то stable будет ссылаться на более новую версию;
  • oldstable – ссылается на предыдущий стабильный репозиторий;
  • testing – ссылается на специальную ветку репозитория для разработки нового стабильного релиза;
  • unstable – ссылается на самые свежие, но не протестированные пакеты;
  • experimental – здесь хранятся пакеты, которые только начали разрабатывать;
  • backports – ссылается на testing и unstable, но только для обновлений безопасности.

То есть вы можете изменить свои репозитории на testing, и быть на острие прогресса:

### Это только пример, существует большая вероятность что система очень скоро повредится из за непроверенных обновлений ###
deb http://deb.debian.org/debian/ testing main
deb-src http://deb.debian.org/debian/ testing main
deb http://security.debian.org/debian-security testing-security main
deb-src http://security.debian.org/debian-security testing-security main
deb http://deb.debian.org/debian/ testing-updates main
deb-src http://deb.debian.org/debian/ testing-updates main

Файл Release

Каждый репозиторий, для каждой ветки содержит текстовый файл Release. Например, откройте в браузере репозиторий для Ubuntu: http://ru.archive.ubuntu.com/ubuntu/. Дальше откройте ветку (dists) для jammy. И здесь вы можете скачать и посмотреть файл Release.

Файл Release в репозитории для Ubuntu Jammy

Файл Release в репозитории для Ubuntu Jammy

Он содержит информацию о данной ветке репозитория, например для Ubuntu Jammy файл содержит следующее:

Origin: Ubuntu
Label: Ubuntu
Suite: jammy
Version: 22.04
Codename: jammy
Date: Thu, 21 Apr 2022 17:16:08 UTC
Architectures: amd64 arm64 armhf i386 ppc64el riscv64 s390x
Components: main restricted universe multiverse
Description: Ubuntu Jammy 22.04
MD5Sum:
 *** а здесь контрольные суммы для каждого пакета из репозитория ***

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

Архитектура пакетов

Если вы ещё раз посмотрите на файл Release в репозитории, то можете заметить там строчку:

Architectures: amd64 arm64 armhf i386 ppc64el riscv64 s390x

Здесь прописаны архитектуры пакетов, которые хранятся в репозитории. Прописывая источник репозитория, например в конфиге /etc/apt/sources.list вы можете указать определённую архитектуру, чтобы предотвратить скачивание и установку пакетов для других архитектур.

Это делается таким способом:

### Пример для Debian ###
deb [arch=amd64] http://deb.debian.org/debian/ bullseye main

Вариант использования официальных репозиториев

Для того чтобы уменьшить вероятность поломки вашей системы из-за непроверенных обновлений, можно немного сократить количество репозиториев в системах Debian и в Ubuntu.

Вообще в Debian дан список самых безопасных репозиториев по умолчанию. Можем лишь закомментировать репозитории с исходниками, так как скорее всего вам они пока не понадобятся. Напомню, что такие строки начинаются со слова deb-src. А если понадобятся вы их просто раскомментируете. После правки у нас осталось 3 источника пакетов:

alex@deb:~$ egrep -v '^#|^$' /etc/apt/sources.list | cat -n
     1  deb http://deb.debian.org/debian/ bullseye main
     2  deb http://security.debian.org/debian-security bullseye-security main
     3  deb http://deb.debian.org/debian/ bullseye-updates main

Ubuntu при установке прописала намного больше своих репозиториев. Но их тоже можно свести к трем. Например, я считаю нужным отключить universe, multiverse и jammy-backports репозитории на сервере. После правки список репозиториев также состоит из 3-ёх строк:

alex@ubu:~$ egrep -v '^#|^$' /etc/apt/sources.list | cat -n
     1  deb http://ru.archive.ubuntu.com/ubuntu jammy main restricted
     2  deb http://ru.archive.ubuntu.com/ubuntu jammy-updates main restricted
     3  deb http://ru.archive.ubuntu.com/ubuntu jammy-security main restricted

Чтобы применить изменения, выполните на обоих системах команду:

$ sudo apt update

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

А если хотите обновить систему, то выполните команду:

$ sudo apt upgrade

Эта команда уже скачивает все обновления и устанавливает их.

Кстати утилита apt – это и есть менеджер пакетов. Рассмотрим её и другие менеджеры пакетов в следующих статьях.

Добавление сторонних репозиториев

Источник репозитория

Некоторые разработчики создают свои собственные репозитории. Например у веб сервера Nginx есть свой репозиторий для разных систем, в том числе для Debian и Ubuntu. Вот его адрес: https://nginx.org/packages/mainline/.

Добавлять репозитории можно в основной конфиг: /etc/apt/sources.list или создавать отдельные конфиги в каталоге /etc/apt/sources.list.d/. Сам я считаю что правильнее для каждого стороннего репозитория создавать отдельные конфиги.

Например, чтобы подключить репозиторий nginx создайте следующий конфиг. Для Debian:

alex@deb:~$ sudo nano /etc/apt/sources.list.d/nginx.list 
deb http://nginx.org/packages/debian bullseye nginx 

Или для Ubutnu:

alex@ubu:~$ sudo nano /etc/apt/sources.list.d/nginx.list 
deb http://nginx.org/packages/ubuntu jammy nginx

Приоритет репозитория

Допустим, мы прописали дополнительный репозиторий для nginx, но как системе понять из какого репозитория брать пакет для установки? Ведь пакеты для nginx есть и в системном репозитории и в репозитории от самого nginx. Чтобы ответить на этот вопрос придумали приоритеты репозиториев.

Чтобы задать приоритет репозитория нужно создать файл /etc/apt/preferences.d/XX<имя_репозитория>, где XX это номер файла, чем он выше, тем обработается позднее, то есть будет иметь приоритет над другими настройками.

По нашему примеру для nginx нужно создать следующий файл:

$ sudo nano /etc/apt/preferences.d/99nginx
Package: *
Pin: origin nginx.org
Pin: release o=nginx
Pin-Priority: 900

Разберём написанное:

  • Package: имя пакета. Можно поставить знак * чтобы применить приоритет для всех пакетов из этого репозитория. Также можно указать несколько имён через пробел;
  • Pin: опции прикрепления. Существует много опций, я разберу лишь некоторые:
    • origin “имя автора или поставщика”;
    • release o=nginx – означает что в файле Release репозитория есть поставщик (Origin = o) с именем nginx;
    • release l=Debian – означает что в файле Release репозитория есть Label (l) с именем Debian;
  • Pin-Priority: приоритет.

То-есть Package и Pin это условия для назначения приоритета, а Pin-Priority это действие (назначение приоритета). В нашем примере получается следующее: если имя пакета любое, но владелец репозитория nginx.org и в файле Release прописано “Origin: nginx“, то для таких пакетов ставим приоритет 900.

Приоритет может быть в следующих диапазонах:

  • P >= 1000 – пакет будет установлен из этого репозитория, даже если это приведет к понижению версии уже установленного пакета;
  • 990 <= P < 1000 – пакет будет установлен из этого репозитория, если не установлена более новая версия;
  • 500 <= P < 990 – пакет будет установлен, если нет пакета принадлежащего к целевому выпуску или не установлена более новая версия;
  • 100 <= P < 500 – пакет будет установлен, если нет кандидатов из других репозиториев или установленного пакета более новой версии;
  • 0 < P < 100 – пакет будет установлен, только если он ещё не установлен (любой версии) и если нет кандидатов из других репозиториев;
  • P < 0 – пакет не будет установлен ни при каких условиях;
  • P = 0 – не используется.

Целевой выпуск

Приоритеты с 500 по 990 и с 990 по 1000 очень похожи. Чтобы их отличить нужно понять что такое целевой выпуск. Для Ubuntu или Debian это название версии дистрибутива. Например для Ubuntu – jammy, а для Debian – bullseye. Но это имя ещё нужно задать таким способом:

alex@deb:~$ sudo nano /etc/apt/apt.conf.d/default
APT::Default-Release "bullseye";

alex@ubu:~$ sudo nano /etc/apt/apt.conf.d/default
APT::Default-Release "jammy";

Открытый ключ репозитория

И так, репозиторий мы добавили, приоритет настроили. Давайте попробуем применить изменения:

alex@deb:~$ sudo apt update
Пол:1 http://nginx.org/packages/debian bullseye InRelease [2 860 B]
Ошб:1 http://nginx.org/packages/debian bullseye InRelease
  Следующие подписи не могут быть проверены, так как недоступен открытый ключ: NO_PUBKEY ABF5BD827BD9BF62
Пол:2 http://security.debian.org/debian-security bullseye-security InRelease [44,1 kB]
Сущ:3 http://deb.debian.org/debian bullseye InRelease
Пол:4 http://deb.debian.org/debian bullseye-updates InRelease [39,4 kB]
Чтение списков пакетов… Готово
W: Ошибка GPG: http://nginx.org/packages/debian bullseye InRelease: Следующие подписи не могут быть проверены, так как недоступен открытый ключ: NO_PUBKEY ABF5BD827BD9BF62
E: Репозиторий «http://nginx.org/packages/debian bullseye InRelease» не подписан.
N: Обновление из этого репозитория нельзя выполнить безопасным способом, поэтому по умолчанию он отключён.
N: Информацию о создании репозитория и настройках пользователя смотрите в справочной странице apt-secure(8).

И тут мы видим ошибку, что нам не хватает открытого ключа. Я привёл пример для Debian, но в Ubuntu будет подобная ситуация. Дело в том что современные репозитории шифруются с помощью закрытого ключа и чтобы его использовать, нам нужно установить в систему открытый ключ.

Чтобы это сделать, вначале установим необходимые инструменты:

### Для Debian ###
alex@deb:~$ sudo apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring

### Для Ubuntu ###
alex@ubu:~$ sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
Внимание! Утилита gnupg2 для Ubuntu доступна только в репозитории universe, если вы закомментировали эти источники, то разкомментируете их. Это строчки:
deb http://ru.archive.ubuntu.com/ubuntu jammy universe
deb http://ru.archive.ubuntu.com/ubuntu jammy-updates universe
И не забудьте применить изменения, выполнив:
$ sudo apt update

А дальше скачаем открытый ключ (с помощью wget):

$ wget https://nginx.org/keys/nginx_signing.key

Дальше выполняется конвейер команд, это когда вывод одной команды идет на вход другой команде. Такие конвейеры мы будем проходить позже. Но всё равно постараюсь объяснить следующую команду. С помощью cat мы читаем файл ключа, и прочитанное передаём утилите gpg. Утилита gpg переводит прочитанное в необходимый формат и передаёт вывод уже следующей команде tee. Утилита tee (под sudo) сохраняет полученный текст в файл. В конце добавляем >/dev/null, чтобы не было никакого вывода на терминал. Вот сама команда:

$ cat nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Вот так мы получили открытый ключ, который теперь хранится в файле /usr/share/keyrings/nginx-archive-keyring.gpg.

Или можно сразу в одной команде скачать файл (с помощью wget или curl) и сохранить ключ в формате gpg:

### Пример для wget ###
$ wget -O- https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

### Пример для curl ###
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

После этого необходимо указать в конфиге репозитория, что нужно использовать этот ключ. Для этого в конфиге репозитория между deb и адресом репозитория вставляем [signed-by=/путь/к/ключу]:

alex@deb:~$ sudo nano /etc/apt/sources.list.d/nginx.list
deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/debian bullseye nginx

И пробуем ещё раз применить изменения:

alex@deb:~$ sudo apt update
Сущ:1 http://security.debian.org/debian-security bullseye-security InRelease
Сущ:2 http://deb.debian.org/debian bullseye InRelease
Сущ:3 http://deb.debian.org/debian bullseye-updates InRelease
Пол:4 http://nginx.org/packages/debian bullseye InRelease [2 860 B]
Пол:5 http://nginx.org/packages/debian bullseye/nginx amd64 Packages [7 633 B]
Получено 7 633 B за 1с (9 420 B/s)
Чтение списков пакетов… Готово
Построение дерева зависимостей… Готово
Чтение информации о состоянии… Готово
Все пакеты имеют последние версии.

На этот раз всё прошло успешно.

Кстати, если вы хотите в источнике пакетов прописать архитектуру и открытый ключ, то это делается через пробел:

### Пример ###
deb [arch=amd64 signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/debian bullseye nginx

Проверка добавленного репозитория

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

alex@deb:~$ apt-cache policy nginx
nginx:
  Установлен: (отсутствует)
  Кандидат:   1.20.2-1~bullseye
  Таблица версий:
     1.20.2-1~bullseye 990
        990 http://nginx.org/packages/debian bullseye/nginx amd64 Packages
     1.20.1-1~bullseye 990
        990 http://nginx.org/packages/debian bullseye/nginx amd64 Packages
     1.18.0-6.1 990
        990 http://deb.debian.org/debian bullseye/main amd64 Packages

Из вывода становится ясно что пакет nginx ещё не установлен в систему, а кандидатом на установку является пакет с версией 1.20.2 из репозитория http://nginx.org/packages/debian. Приоритет у всех пакетов, кстати стал равным = 990. Это произошло после того, как мы установили целевой выпуск = bullseye. Так как все репозитории относятся к этому выпуску, то на назначенный мною приоритет система перестала смотреть, а назначила репозиториям для bullseye такой приоритет.

Итог

Мы узнали что такое репозитории. Узнали что есть официальные репозитории для системы и они прописываются в конфиг /etc/apt/sources.list. А также есть сторонние репозитории и для них лучше создавать свои конфиги в каталоге /etc/apt/sources.list.d/.

Научились добавлять сторонний репозиторий на примере nginx. Узнали про приоритеты репозиториев и открытые ключи. А также узнали что такое целевой выпуск.

Полезные источники:

  • Очень хорошо про приоритеты и повышение или понижение версий пакетов написано здесь.
  • Инструкция для подключения nginx репозитория в различные системы.
  • Существует Репозиторий от Yandex – он хранит ветки для большинства систем Linux.
  • Репозиторий Ubuntu
  • Репозиторий Debian

Сводка

Репозитории Linux

Имя статьи

Репозитории Linux

Описание

Из этой статьи вы узнаете что такое репозитории в Linux. Мы научимся их настраивать на примере Debian 11 и Ubuntu 22.04

Как вручную добавить репозитории программного обеспечения в Linux

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

Когда вы ищете пакет в Linux через командную строку, менеджер пакетов вашей системы ищет пакет в различных репозиториях. По умолчанию каждый дистрибутив Linux имеет несколько официальных репозиториев, содержащих стабильные пакеты, поддерживаемые командой дистрибутива.

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

Давайте посмотрим, как вы можете добавить новые репозитории в список источников вашей системы.

В дистрибутивах Ubuntu и Debian

Дистрибутивы на базе Debian, включая Ubuntu, используют инструмент Advanced Package Tool (APT) для установки и обновления пакетов. Вы можете найти информацию о репозитории программного обеспечения в файле /etc/apt/sources.list вашей установки Linux на базе Debian.

Хотя вы можете вручную ввести сведения о репозитории в файл, это может быстро стать утомительной работой. Лучший способ добавить их в вашу систему – использовать инструмент add-apt-repository .

Установите add-apt-repository

Вы не найдете утилиту add-apt-repository, установленную в вашей системе по умолчанию. Это часть пакета software-properties-common . Чтобы установить add-apt-repository с помощью диспетчера пакетов APT, введите:

Как вручную добавить репозитории программного обеспечения в Linux

Добавление репозиториев с помощью add-apt-repository

Теперь, когда вы установили пакет, пришло время добавить в вашу систему сторонний репозиторий программного обеспечения. Основным синтаксисом добавления репозиториев является:

Как вручную добавить репозитории программного обеспечения в Linux

..где repository – это формат, используемый файлом sources.list.

Формат ввода файла по умолчанию:

Как вручную добавить репозитории программного обеспечения в Linux

Например, чтобы добавить репозиторий Ubuntu universe в вашу систему:

Как вручную добавить репозитории программного обеспечения в Linux

Вы также можете добавить PPA с помощью add-apt-repository, используя следующий синтаксис команды:

Как вручную добавить репозитории программного обеспечения в Linux

..где user и name – это имя владельца и имя PPA соответственно.

Чтобы добавить PHP PPA от Ondrej с помощью add-apt-repository:

Как вручную добавить репозитории программного обеспечения в Linux

Ручное добавление репозиториев в Fedora и CentOS

Fedora, CentOS и другие дистрибутивы на основе RHEL используют менеджеры пакетов DNF и yum. В отличие от APT, DNF имеет встроенный метод config-manager, который позволяет пользователям легко добавлять, удалять и отключать сторонние репозитории.

Использование DNF Package Manager

Чтобы добавить новый репозиторий с помощью DNF:

Как вручную добавить репозитории программного обеспечения в Linux

…где repository – это URL-адрес репозитория программного обеспечения.

Чтобы включить репозиторий, введите:

Как вручную добавить репозитории программного обеспечения в Linux

Использование yum-config-manager

Кроме того, вы также можете использовать утилиту yum-config-manager для добавления репозиториев и управления ими в вашей системе. Yum-config-manager по умолчанию не установлен в дистрибутивах на основе RHEL, поэтому вам придется установить его вручную. Это часть пакета yum-utils. Чтобы установить его, введите:

Как вручную добавить репозитории программного обеспечения в Linux

Формат команды yum-config-manager аналогичен DNF. Вы можете добавить новый репозиторий с помощью yum-config-manager следующим образом:

Как вручную добавить репозитории программного обеспечения в Linux

Включить репозиторий тоже очень просто.

Как вручную добавить репозитории программного обеспечения в Linux

Arch Linux и AUR

Если вы используете Arch Linux, возможно, вы уже знаете, что пользователи не могут добавлять репозитории в Arch. Но это не значит, что вы не можете загружать дополнительные пакеты в свою систему.

В Arch Linux есть AUR, пользовательский репозиторий Arch, который содержит тысячи сторонних пакетов, разработанных пользователями. Вы можете получить доступ к AUR с помощью менеджера пакетов AUR. Pacman, который является менеджером пакетов по умолчанию в Arch Linux, не может получить доступ к пакетам, хранящимся в пользовательском репозитории Arch.

Есть несколько менеджеров пакетов AUR, самый известный из которых – yay. Вы можете легко установить yay в свою систему, клонировав репозиторий git.

Как вручную добавить репозитории программного обеспечения в Linux

Измените разрешения загруженной папки:

Как вручную добавить репозитории программного обеспечения в Linux

Измените каталог и используйте команду makepkg для установки yay:

Как вручную добавить репозитории программного обеспечения в Linux

Управление списком репозиториев вашей системы

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

Установка ПО в системах Linux выполняется из репозиториев, которые по умолчанию содержат большое количество пакетов. Однако иногда необходимого софта нет в комплекте или его версия устарела. В этом случае вы можете добавить требуемый репозиторий и произвести установку из него. В статье мы подробно рассмотрим, как настроить репозитории в Ubuntu 20.04.

Будьте осторожны при выполнении таких операций, потому что такие сборки могут содержать экспериментальные версии системного ПО или даже ядро Linux. Поэтому следует пристально изучить информацию о стороннем репозитории, а также менеджер обновлений.

Ниже мы настроим репозитории на облачном сервере с Ubuntu 20.04.

Список репозиториев в Ubuntu

Просмотреть все репозитории:

nano /etc/apt/sources.list

Они также могут находиться в одном из файлов в папке /etc/apt/sources.list.d/

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

# deb http://archive.ubuntu.com/ubuntu focal multiverse

Добавление репозиториев в Ubuntu

Чтобы добавить репозиторий, необходимо узнать его адрес у разработчика ПО и использовать команду apt-add-repository с подобным синтаксисом:

apt-add-repository ‘deb http://repository_address version branch’

Иногда требуется сначала установить ключ GPG. В качестве примера возьмем MariaDB.

apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'

Команда, используемая для добавления репозитория:

add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirror.mephi.ru/mariadb/repo/10.5/ubuntu focal main'

Удаление репозиториев

Команда, используемая для удаления:

add-apt-repository --remove 'deb [arch=amd64,arm64,ppc64el] http://mirror.mephi.ru/mariadb/repo/10.5/ubuntu focal main'

PPA-репозиторий в Ubuntu

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

apt-add-repository ppa:repository/ppa

Для удаления PPA-репозитория:

apt-add-repository --remove ppa:repository/ppa

После редактирования списка репозиториев не забудьте обновить список пакетов.

apt update

Вам также может быть интересно

  • VPS/VDS сервер c предустановленными ОС и приложениями
  • Что такое Docker?
  • Все статьи по Ubuntu

Аverage rating : 3.5

Оценок: 6

191028
Санкт-Петербург
Литейный пр., д. 26, Лит. А

+7 (812) 403-06-99

700
300

ООО «ИТГЛОБАЛКОМ ЛАБС»

191028
Санкт-Петербург
Литейный пр., д. 26, Лит. А

+7 (812) 403-06-99

700
300

ООО «ИТГЛОБАЛКОМ ЛАБС»

700
300

Contents

  1. The Basics

    1. Explanation of the Repository Format
    2. Other Versions
  2. Adding Repositories

    1. Adding the Universe and Multiverse Repositories
    2. Adding Partner Repositories
    3. Adding Other Repositories
    4. Adding Launchpad PPA Repositories
    5. Enabling Repositories with a (non-interactive) Script
  3. Suggestions & Recommendations
  4. Further Reading

IconsPage/terminal.png This page describes how to manage software repositories from the command line. (GUI tools are also available: Managing Repositories in Ubuntu or Kubuntu).

IconsPage/important.png If you are using a minimal install or server install you will need to be familiar with a terminal based text editor like nano. If you are using a GUI install you can use Nano or GEdit.

The Basics

Ubuntu uses apt for package management. Apt stores a list of repositories or software channels in the file

/etc/apt/sources.list

and in any file with the suffix .list under the directory

/etc/apt/sources.list.d/

See man sources.list for more about this storage mechanism.

By editing these files from the command line, we can add, remove, or temporarily disable software repositories.

  • IconsPage/note.png Note: It’s always a good idea to backup a configuration file like sources.list before you edit it. To do so, issue the following command:

    sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup

Typically, the beginning of the file /etc/apt/sources.list looks like this:

# sources.list
#deb cdrom:[Ubuntu 13.10 _Saucy Salamander_ - Release i386 (20131016.1)]/ saucy main restricted

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://ch.archive.ubuntu.com/ubuntu/ saucy main restricted
deb-src http://ch.archive.ubuntu.com/ubuntu/ saucy main restricted
#...

Explanation of the Repository Format

  • All the lines beginning with one or two hashes (#) are comments, for information only.
  • The lines without hashes are apt repository lines. Here’s what they say:

    • deb: These repositories contain binaries or precompiled packages. These repositories are required for most users.

    • deb-src: These repositories contain the source code of the packages. Useful for developers.

    • http://archive.ubuntu.com/ubuntu: The URI (Uniform Resource Identifier), in this case a location on the internet. See the official mirror list or the self-maintained mirror list to find other mirrors.

    • saucy is the release name or version of your distribution.

    • main & restricted are the section names or components. There can be several section names, separated by spaces.

Other Versions

  • IconsPage/note.png For other Ubuntu releases you would replace the ‘saucy’ with the current version you have installed (‘precise’, ‘quantal’, ‘raring’, ‘saucy’, ‘trusty’, …) Type lsb_release -sc to find out your release.

Adding Repositories

Adding the Universe and Multiverse Repositories

Additional software repositories such as Universe and Multiverse can be enabled by uncommenting the corresponding apt lines (i.e. delete the ‘#’ at the beginning of the line). For Universe, uncomment those lines:

  • deb http://us.archive.ubuntu.com/ubuntu/ saucy universe
    deb-src http://us.archive.ubuntu.com/ubuntu/ saucy universe
    deb http://us.archive.ubuntu.com/ubuntu/ saucy-updates universe
    deb-src http://us.archive.ubuntu.com/ubuntu/ saucy-updates universe

There are four similar lines for ‘multiverse’.

OR you may use the add-apt-repository command. If your release is ‘saucy’:

  • sudo add-apt-repository "deb http://us.archive.ubuntu.com/ubuntu/ saucy universe multiverse"
    sudo add-apt-repository "deb http://us.archive.ubuntu.com/ubuntu/ saucy-updates universe multiverse"

IconsPage/note.png Depending on your location, you should replace ‘us.’ by another country code, referring to a mirror server in your region. Check sources.list to see what is used!

Type lsb_release -sc to find out your release. You may repeat the commands with “deb-src” instead of “deb” in order to install the source files.

Don’t forget to retrieve the updated package lists:

  • sudo apt-get update

Adding Partner Repositories

You can add the partner repositories by uncommenting the following lines in your /etc/apt/sources.list file:

  • deb http://archive.canonical.com/ubuntu saucy partner
    deb-src http://archive.canonical.com/ubuntu saucy partner

Then update as before:

  • sudo apt-get update

    IconsPage/important.png Be aware that the software contained within this repository is NOT open source.

Adding Other Repositories

There are some reasons for which you might want to add non-Ubuntu repositories to your list of software sources. Caution: To avoid trouble with your sytem, only add repositories that are trustworthy and that are known to work on Ubuntu systems!


  • You can add custom software repositories by adding the apt repository line of your software source to the end of the sources.list file. It should look something like this:

    deb http://mirror3.ubuntulinux.nl/ hardy-seveas freenx

  • Don’t forget to make apt aware of your changes:
    sudo apt-get update

Adding Launchpad PPA Repositories

Adding Launchpad PPA (Personal Package Archive) is possible conveniently via the command: add-apt-repository. This command is similar to “addrepo” on Debian.

  • The command updates your sources.list file or adds/edits files under sources.list.d/. Type man add-apt-repository for detailed help.

  • If a public key is required and available it is automatically downloaded and registered.
  • Should be installed by default. On older or minimal Ubuntu releases, you may have to install software-properties-common and/or python-software-properties first (sudo apt-get install python-software-properties)

    sudo add-apt-repository ppa:<repository-name>

    Example: sudo add-apt-repository ppa:nhandler/ppa

Enabling Repositories with a (non-interactive) Script

IconsPage/note.png This section seemed obsolete due to the add-apt-repository command, thus it has been removed.

Suggestions & Recommendations

  • It is always a good idea to back up configuration files like /etc/apt/sources.list before you begin editing. You can then revert your changes if needed.

  • If you decide to add other repositories to sources.list, make sure that the repository is meant to work (and known to work) with Ubuntu. Repositories that are not designed to work with your version of Ubuntu can introduce inconsistencies in your system and might force you to re-install. Also, make sure that you really need to add external repositories as the software package(s) you are looking for may already have been introduced into the official repositories!

  • Please keep in mind that it may not be legal (typically because of export restrictions) to enable some non-Ubuntu software repositories in some countries.

  • You may be asked enter a security key when adding a non-Ubuntu repository to your sources. See Managing Authentication Keys for instructions.

  • Remember to retrieve updated package lists by issuing a sudo apt-get update when you’re done editing sources.list.

Further Reading

  • The Debian Apt User Manual

  • Apt-get

  • Software Management

  • Secure Apt on the Debian Wiki


CategoryCommandLine CategoryPackageManagement

A package repository (repo in short) is a location where software packages are stored and can be retrieved from. It is organized in a special directory tree, and usually contains an index file and the metadata needed by Linux package managers to access the packages in the repo and their dependencies.

Package managers such as APT (Advanced Packaging Tool – the default on Debian-like systems) enable you to automatically install and upgrade packages from a configured repo.

They also feature dependency resolution capabilities and software update checking. Besides, all package managers if not most, enable removing a package that is no longer needed.

Attention: Before we proceed, remember to only add software repositories from sources that you trust!

This guide shows how to add a package repository in Debian and Ubuntu Linux, as well as their derivatives such as Linux Mint.

Table of Contents

1

Understanding APT Repository on Debian and Ubuntu

The APT package manager fetches packages from various repositories. A repository can be binary or source, and automatic or trivial. It can also be online or offline (for example on a CD-ROM) but the former is the more common use. Additionally, a repo can be official (maintained by Debian or Ubuntu/Canonical) or unofficial (third party).

A repository is defined in the /etc/apt/sources.list configuration file or in a file stored under the /etc/apt/sources.list.d directory. Every repo file must end with the .list extension.

$ ls /etc/apt/sources.list.d/

List All APT Repositories

List All APT Repositories

In a repository file, each line has the following syntax.

deb  URI  distribution component1  component2 … componentN
OR
deb-src  URI  distribution   component1  component2 … componentN

The first parameter specifies the archive type (deb – for binary or deb-src – for source files), next is the URI – the root of the repository, then the distribution, and one or more components.

APT Repository File

APT Repository File

Automatic APT Repositories

To define an automatic repository, you must specify one distribution and one or more components and the distribution must not end with a slash.

The following are examples of automatic repo definitions:

deb http://repository.spotify.com  stable  non-free
deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/focal  pgadmin4  main
deb https://download.mono-project.com/repo/ubuntu stable-focal main

Non-Automatic or Trivial APT Repositories

For non-automatic repos, the distribution specifies the relative path to the index files and it must end with a slash. Besides, no components may be specified.

Here are some examples:

deb http://cloud.r-project.org/bin/linux/debian bullseye-cran40/
deb file:///home/tecmint/rep-exact  binary/

Importantly, APT relies on the local package index, a database of available packages from the repositories defined in the /etc/apt/sources.list file and files under the /etc/apt/sources.list.d directory. You can find the package index files under the /var/lib/apt/lists/ directory.

After making changes to the repo configurations, you must always update the local package index before installing or updating packages.

$ sudo apt update
OR
$ sudo apt-get update 

Note: Usually, software owners or maintainers will provide a means either manually or automatically to add the required repository from which you can install their package(s) on your Linux system.

Let’s look at how to add the apt repository, as explained below.

Manually Adding APT Repository on Debian and Ubuntu

To add a repository manually, simply create the repo file under the /etc/apt/sources.list.d directory. We don’t recommend adding all repositories in the /etc/apt/sources.list file.

This example shows how to add the R software environment packages repository.

$ sudo vim /etc/apt/sources.list.d/r-packages.list

Copy and paste the repo configuration into the file and make sure that the parameters such as URI and distribution and components match what is defined in the repository:

deb https://cloud.r-project.org/bin/linux/ubuntu  focal-cran40/

Manually Add APT Repository

Manually Add APT Repository

Then add the repository key using the following wget command.

$ wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | sudo tee -a /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc 

Alternatively, you can also add the repo using the echo and tee commands as follows:

$ echo "deb https://cloud.r-project.org/bin/linux/ubuntu  focal-cran40/" | sudo tee /etc/apt/sources.list.d/r-packages.list
$ wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | sudo tee -a /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc

Next, you need to update the local package index with the latest changes made in the repositories and then install a package from the repository, as follows:

$ sudo apt update
$ sudo apt install --no-install-recommends r-base

To disable an apt repository, simply comment it out in the repository configuration file as shown in the following screenshot.

Disable APT Repository

Disable APT Repository

Adding APT Repository Using apt-add-repository Command

The add-apt-repository command-line utility is used to add a repository into the /etc/apt/sources.list file or /etc/apt/sources.list.d directory. If a repository already exists, it can remove it using the -r flag.

If the add-apt-repository utility is not available on your system, you can install the software-properties-common package which provides it:

$ sudo apt update
$ sudo apt install software-properties-common

Let’s look at the following example. The first command adds the repo and the second one retrieves the repo key using the wget utility and saves it to the specified file using the tee utility:

$ sudo add-apt-repository "deb https://cloud.r-project.org/bin/linux/ubuntu $(lsb_release -cs)-cran40/"
$ wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | sudo tee -a /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc

If you try to add a repo that already exists, the add-apt-repository command will show the message “Repository already exists” as shown in the following screenshot.

Repository Already Exists

Repository Already Exists

The next step is to update the apt package index and install a package from the repository, as shown before:

$ sudo apt update
$ sudo apt install --no-install-recommends r-base

Adding Personal Package Archives (PPAs)

PPAs are software repositories for publishing user-contributed software packages via Launchpad. This example shows how to add the Shutter screenshot tool’s official PPA.

$ sudo add-apt-repository ppa:shutter/ppa
$ sudo apt-get update
$ sudo apt install shutter

Removing a PPA Repository

To remove a repo using the apt-add-repository utility, use its -r or --remove flag as mentioned earlier:

$ sudo add-apt-repository -r "deb https://cloud.r-project.org/bin/linux/ubuntu $(lsb_release -cs)-cran40/"

Adding a Package Repository Using GUI Utilities

Last but not least, you can also add a repo to your system using a GUI application. On Ubuntu, open Software & Updates via the Activities search bar.

Then switch to the Other Software tab as highlighted in the following screenshot. Next, click Add and enter the repo configuration and follow the prompts.

Software & Updates Window

Software & Updates Window

On Linux Mint, open your system menu and search for Software Sources, then open it. When asked to authenticate, enter your password to invoke the application with root privileges.

Next, click on the Additional Repositories tab, then click the Add button.

Additional Repositories

Additional Repositories

In the pop window, add the repo and click OK.

Add APT Repository

Add APT Repository

Once the repo has been added successfully, a message will display at the bottom of the window. Click OK to proceed.

APT Repository Added

APT Repository Added

Then wait for the local package index to update. Once it is OK, you can proceed to install packages from the just added repo.

Updating APT Cache

Updating APT Cache

That’s it for now! In this guide, we have shown different ways to add a package repository in Debian and Ubuntu Linux, and their derivatives such as Linux Mint. For any comments or questions, reach us via the feedback form below.

Добавить комментарий