Что такое репозитории в линукс. Что такое репозиторий. Настройка репозиториев в Ubuntu

Способы установки программ в системах Windows и Linux (а также BSD) отличаются. Можно сказать, что отличается даже сама идеология установки программ. Пользователи Windows привыкли, что программа поставляется в виде установочного файла (или группы файлов). Эти файлы нужно скачать из интернета или получить на CD/DVD. Для Linux такой способ нехарактерен, хотя он тоже есть.

Собственно, репозиторий — это хранилище файлов . Система Linux подразумевает, что человек, желающий установить программу, обратится к репозиторию, в котором эта программа хранится. Делается это через терминал.

Например, я хочу установить в свой Linux Mint 17.1 программу для виртуализации Virtual Box. Я запускаю терминал и ввожу следующую команду:

sudo apt-get install virtualbox-4.3

Установка должна производиться с правами суперадминистратора, поэтому мы добавляем к команде слово sudo. Терминал спрашивает у нас пароль суперадминистратора и сообщает информацию по пакетам, которые Вы собираетесь установить.


Установка VirtualBox через терминал

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

Сам процесс установки выглядит следующим образом:


Установка VirtualBox в Linux Mint

После установки программу можно будет найти в списке других установленных программ.


VirtualBox в Linux Mint

Кто может создавать репозитории?

Кто угодно. Что касается того, из каких репозиториев берет программы операционная система, то это, в первую очередь, репозитории самой системы. Отдельные программы также имеют свои репозитории (версии программ на них, как правило, более свежие), но такие хранилища нужно добавлять в настройках операционной системы вручную. Делает это либо через Менеджер пакетов, либо через соответствующие команды в терминале.

Как видим, в моем случае в репозитории Linux Mint уже имелись файлы VirtualBox, поэтому выполнять дополнительных действий не пришлось. Что мне пришлось бы делать, если бы в репозитории системы такой программы не нашлось? Добавлять репозиторий разработчиков самой программы.

Например, найдя в меню Linux Mint пунк «Источники приложений», а там раздел «Дополнительные репозитории».


Добавление репозитория в Linux Mint

Или прописав в терминале

sudo sh -c "echo "deb http://download.virtualbox.org/virtualbox/debian trusty contrib" >> /etc/apt/sources.list"

Это путь к конкретному репозиторию VirtualBox. В случае с другими программами путь будет другой. После этого обновляем кэш пакетов:

sudo apt-get update

При добавлении ссылки на репозиторий через менеджер пакетов она так же должна быть вида deb [ссылка на репозиторий в Интернете] . Кроме того, возможно, вы заметили на скриншоте раздел с PPA-репозиториями. Им отведена .

На этом, пожалуй, всё. И помните, приручить пингвина не так сложно, как кажется.

Приветствую Всех!

В прошлой статье мы разобрались как установить обновления и дополнительные программы из официальных репозиториев Linux Ubuntu Как установить обновления и дополнительные программы для Linux Ubuntu!

Что же такое Linux репозитории.
Репозито́рий Linux, хранилище - место, где хранятся и поддерживаются какие-либо данные. Чаще всего данные в репозитории хранятся в виде файлов, доступных для дальнейшего распространения по сети.

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

Защита реализована при помощи сверки цифровых подписей Linux репозитория и клиента.

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

В Linux Ubuntu по умолчанию доверенными являются репозитории на установочных дисках и основные интернет репозитории - archive.ubuntu.com. При наличии на компьютере нескольких подключенных Linux репозиториев, предпочтение отдается доверенным.

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

Для закрепления теории рассмотрим на практике добавление дополнительного Linux репозитория на примере бесплатной кроссплатформенной виртуальной машине Oracle VirtualBox версии 5.0

Открываем терминал для работы в командной строке ()

Для редактирования файла /etc/apt/sources.list в командной строке набираем (mcedit-текстовый редактор, как его установить смотрите )

sudo mcedit /etc/apt/sources.list

Для получения дополнительных привилегий необходимо ввести пароль пользователя и нажать на клавиатуре клавишу «Enter».

В конец файла добавляем строку
deb http://download.virtualbox.org/virtualbox/debian trusty contrib

Для сохранения внесенных изменений нажимаем на клавиатуре клавишу «F2» и подтверждаем перезапись файла нажав кнопку «Сохранить».

Для возвращения в командную строку выйдем из файла, нажав на клавиатуре клавишу «F10».
Следующим шагом скачаем открытый ключ и добавим его к себе в систему.
Для этого копируем следующую строку

sudo wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -

и нажимаем на клавиатуре клавишу «Enter».

После добавления ключа получаем ответ, что все хорошо.

Мы рассмотрели как добавить новый Linux репозиторий и открытый ключ. В дальнейшем вы сможете добавлять новые репозитории Linux самостоятельно. Всю необходимую информацию Вы сможете найти на сайте разработчика этого программного обеспечения.
Для того чтобы установить VirtualBox версии 5.0. необходимо обновить списки пакетов (как это сделать смотрите ) и только после этого запустить установку (как это сделать смотрите )
В командной строке необходимо набрать следующую строку
sudo apt-get install virtualbox-5.0
и нажать на клавиатуре клавишу «Enter».

Для того чтобы запустить программу virtualbox-5.0. нажимаем на значок в левом верхнем углу экрана «Поиск на компьютере...»
В поисковой строке вводим «virt»
И выбираем программу «Oracle VM VirtualBox» кликнув левой кнопки мыши.

Для того, чтобы посмотреть версию установленной программы, в верхней панели выбираем «Справка», «О программе»

Видим, что у нас установлена программа VirtualBox Версия 5.10 r104061

О том, как работать с VirtualBox мы рассматривали в статье
Установка и настройка программы для работы с виртуальными машинами – Oracle VirtualBox)

Для того, чтобы каждый раз не искать необходимую программу, мы можем закрепить ее на панели. Для этого щелкаем правой кнопкой мыши на значке и выбираем «Закрепить на панели»

После закрытия программы значок остается на панели.

Данным способом вы можете закреплять на панели необходимые вам программы.

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

Но не у всех программ есть репозиторий Linux. И эти программы можно устанавливать и обновлять только вручную. Ярким примером является Skype.

Для установки скачиваем пакет с официального сайта. Так как нет пакета для нашей версии 14.04, то выбираем ближайший 12.04.

Соглашаемся и сохраняем файл.

Выбираем загруженный файл и указываем открыть папку со скачанным файлом.

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

Щелкаем правой кнопкой мыши на значке и выбираем «Открыть с помощью «Центр приложений»».

Откроется центр приложений. Для установки пакета нажимаем кнопку «Установить».

Начнется процесс установки. Об этом нам сообщает центр приложений Linux Ubuntu в верхней части окна и слева в виде шкалы загрузки.

Для установки дополнительных программ для Linux Ubuntu нам потребуются дополнительные привилегии.
Для их получения система просит нас ввести наш пароль. Вводим его и нажимает кнопку «Аутентифицировать»

После окончания установки откроем Skype. Нажимаем на значок в левом верхнем углу экрана «Поиск на компьютере...»
В поисковой строке введем «sky»

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

Мы рассмотрели как добавить дополнительные Linux репозитории и установить программу из пакета. Теперь вы сможете сами устанавливать требуемые вам программы в Linux Ubuntu. И если остались непонятные вопросы по данной теме и есть предложения, то прошу их писать в комментариях. Всем пока!

Персональные архивы пакетов или PPA (Personal Package Archives) - это и есть репозиторий (сервер-хранилище).
Репозиторий, хранилище - место, где хранятся и поддерживаются какие-либо данные. Чаще всего данные в репозитории хранятся в виде файлов, доступных для дальнейшего распространения по сети. Репозитории подразделяются на официальные и неофициальные. Большинство дистрибутивов Linux , имеют официальные репозитории.

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

Официальные репозитории создаются разработчиками дистрибутива для поддержания в актуальном и безопасном состоянии системы. Если вы откроете в Ubuntu текстовый файл но адресу: /etc/apt/sources.list , то найдёте в нём следующие строки:


Закомментированные строки (строки, перед которыми стоит знак решётки (# ), считаются закомментированными), как правило не читаются системой, а служат для пояснения администратору системы (администратор системы - пользователь, который во время установки системы ввёл свой пароль) к действующему официальному репозиторию или той строке, которая раскомментирована (без знака решётки - #) и следует за описанием.

Для управления официальными репозиториями предназначена программа Программы и обновления (Источники приложений), в вкладке Программное обеспечение Ubuntu :


Все изменения: обновление пакетов программ; изменения в системе безопасности; обновление ядра, исправление ошибок и т.п., внесённые в данные репозитории разработчиками Ubuntu , пользователь получает через штатное обновление дистрибутива - Обновление приложений . Периодически система автоматически просматривает все прописанные в ней репозитории и скачивает новые индексы.


Приложения отображённые в Менеджере приложений Ubuntu также находятся в официальных репозиториях, а это значит что они прошли проверку на совместимость и безопасность, и могут быть в любое время установлены в системе (по мере необходимости).


Неофициальные репозитории

К неофициальным репозиториям относятся хранилища файлов пакета/пакетов, созданные обычными пользователями, так называемые Собственные репозитории .

Для чего создаются Собственные (неофициальные) репозитории ?

Предположим вы хотите установить дополнительно какую-то программу из Менеджера программ Ubuntu , но в нём более поздняя версия для установки, чем на официальном сайте программы или этой программы просто нет в Менеджере программ , но она существует.
Один из продвинутых пользователей Linux создаёт свой собственный репозиторий с актуальной версией программы, где учтены все зависимости пакета и их совместимость с системными файлами. Специально для создания собственного репозитория создана площадка/ресурс под названием launchpad.net .

Как установить программу из Неофициального репозитория ?

Сделать это можно как графически, так и в терминале.

1. Терминальный вариант.

Если вы являетесь новичком или просто обычным пользователем Ubuntu , то скорее всего обратили внимание, что на сайтах подобных Compizomania , установка приложения иногда производится с помощью терминальных команд. Для примера я выбрал установку программы i-nex .
I-Nex - это программа с графическим интерфейсом, позволяющая посредством вкладок просмотр информации аппаратных устройствах вашего компьютера, пдкючённых устройствах стационарного компьютера: мышь, клавиатура и т.д., а также об установленной системе, используемом ядре, оперативной памяти и многом другом.


Данной программы нет в Менеджере программ , поэтому как один из возможных способов её установки, это установка с помощью терминальных команд и подключения стороннего репозитория:

sudo add-apt-repository
sudo apt update
sudo apt install i-nex

Разберём эти команды по порядку.

Первая команда sudo add-apt-repository ppa:i-nex-development-team/daily подключает репозиторий программы (выделено красным), созданный непосредственно разработчиком.

Вторая команда sudo apt update , делает обновление системных файлов.

И третья команда sudo apt install i-nex , служит для непосредственной установки пакета i-nex .

2. Графический вариант.

Графический вариант подключения репозитория и установки программы, делает тоже самое, только "в картинках", т.е. в окнах приложений.

Прежде всего заходим на launchpad.net , вводим в поиск название программы и нажимаем кнопку Search Launchpad :


Выбираете нужный репозиторий:


Просматриваете совместимость репозитория с вашим дистрибутивом и копируете название репозитория:


Откройте Программы и обновления , вкладка Другое ПО , нажмите кнопку Добавить , в Строку APT вставьте скопированный репозиторий и Добавить источник :


После ввода пароля, добавленный сторонний репозиторий отобразится в перечне уже добавленных (если вы ранее добавляли неофициальные репозитории). Нажмите кнопку Закрыть.


И обновите системные файлы:


Остаётся последнее, установить саму программу:

sudo apt install i-nex

Примечание . Все подключёные Неофициальные репозитории отображаются в приложении Программы и обновления , в вкладке Другое ПО . Независимо от того, как вы их подключали, посредством терминала или графически. А также в папке по адресу: /etc/apt/sources.list.d .

Заключение.

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

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

Но в то же время Неофициальный репозиторий может иметь "подводные камни", которые порой приводят к сбоям в системе.

Отчего это происходит?

1 . Прежде всего, несмотря на благие намерения пользователя, создавшего репозиторий, он не всегда может быть компетентен в вопросах совместимости и безопасности создаваемых пакетов в репозитории, что приводит порой к конфликту пакетов и сбою в системе.
2. Создатель собственного (неофициального) репозитория программы может просто забросить свой проект, потешив своё самолюбие, победой над собой. И тогда в последующих версиях дистрибутива вы не сможете устанавливать программы из этого репозитория.

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

Repository commonly refers to a storage location, often for safety or preservation.
- Wikipedia

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

Репозиторий как коллекция

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

Я хочу внести ясность в этот вопрос. Репозиторий - это коллекция. Коллекция, которая содержит сущности и может фильтровать и возвращать результат обратно в зависимости от требований вашего приложения. Где и как он хранит эти объекты является ДЕТАЛЬЮ РЕАЛИЗАЦИИ.

В мире PHP мы привыкли к циклу запрос/ответ, который оканчивается смертью процесса. Все, что пришло извне и не сохранилось - ушло навсегда, в этой точке. Так вот, не все платформы работают именно так.

Хорошим способом понять как работают репозитории является представление вашего приложения постоянно работающим, в этом случае все объекты остаются в памяти. Вероятность критических сбоев и реакцию на них в этом эксперименте можно пренебречь. Представьте, что у вас есть Singleton-экземпляр репозитория для сущностей Member , MemberRepository .

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

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

Взаимодействие с Репозиторием

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

$member = Member::register($email, $password); $memberRepository->save($member);
Теперь мы можем получить доступ к объекту позже. Примерно так:

$member = $memberRepository->findByEmail($email); // or $members = $memberRepository->getAll();
Мы можем хранить объекты в одной части нашего приложения, а затем извлекать их из другой.

Должны ли репозитории создавать сущности?

Вы можете встретить такие примеры:

$member = $memberRepository->create($email, $password);
Я видел множество аргументов приводящихся в пользу этого, но совершенно не заинтересован в подобном подходе.

Прежде всего, репозитории - это коллекции. Я не уверен в том, зачем коллекция должна быть коллекцией и фабрикой. Я слышал аргументы вроде «если обращаться удобнее так, то почему бы не повесить обработчик на подобные действия» ?

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

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

В чем выгода использования репозиториев?

Основное преимущество репозиториев - это абстрактный механизм хранения для коллекций сущностей.

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

Class ArrayMemberRepository implements MemberRepository { private $members = ; public function save(Member $member) { $this->members[(string)$member->getId()] = $member; } public function getAll() { return $this->members; } public function findById(MemberId $memberId) { if (isset($this->members[(string)$memberId])) { return $this->

Class RedisMemberRepository implements MemberRepository { public function save(Member $member) { // ... } // you get the point }
Таким образом, большинство наших приложений знает только абстрактное понятие MemberRepository и его использование может быть отделено от фактической реализации. Это очень раскрепощает.

К чему относятся репозитории: Domain или Application Service Layer?

Итак, вот интересный вопрос. Во-первых, давайте определим, что Application Service Layer - это многоуровневая архитектура, которая отвечает за специфические детали реализации приложения, такие как целостность базы данных, и различные реализации работы с интернет-протоколами (отправка электронной почты, API) и др.

Определим термин Domain Layer как слой многоуровневой архитектуры, которая отвечает за бизнес-правила и бизнес-логику.

Куда же попадет репозиторий при таком подходе?

Давайте посмотрим на нашем примере. Вот код, написанный ранее.

Class ArrayMemberRepository implements MemberRepository { private $members = ; public function save(Member $member) { $this->members[(string) $member->getId()] = $member; } public function getAll() { return $this->members; } public function findById(MemberId $memberId) { if (isset($this->members[(string)$memberId])) { return $this->members[(string)$memberId]; } } }
В этом примере я вижу много деталей реализации. Они, несомненно, должны входить в слой приложения

А теперь давайте удалим все детали реализации из этого класса…

Class ArrayMemberRepository implements MemberRepository { public function save(Member $member) { } public function getAll() { } public function findById(MemberId $memberId) { } }
Хм… это начинает выглядеть знакомо… Что же мы забыли?

Возможно, получившийся код напоминает вам это?

Interface MemberRepository { public function save(Member $member); public function getAll(); public function findById(MemberId $memberId); }
Это означает, что интерфейс находится на границе слоев. и на самом деле может содержать доменно-специфические концепты, но сама реализация не должна этого делать.

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

Свобода смены хранилищ данных

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

По-моему, это не совсем правда… я бы даже сказал, что это очень плохой аргумент. Самой большой проблемой объяснения концепции репозиториев является то, что сразу напрашивается вопрос «вы действительно хотите это делать?» . Я НЕ хочу чтобы подобные вопросы влияли на использование паттерна репозитория.

Любое достаточно хорошо спроектированное объектно-ориентированное приложение автоматически подходит под приведенное преемущество. Центральной концепцией ООП является инкапсуляция. Вы можете предоставить доступ к API и скрыть реализацию.

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

Тестирование при использовании паттерна «Репозиторий»

Ну, тут все просто. Давайте предположим, что у вас есть объект, который обрабатывает что-то вроде регистрации участников…

Class RegisterMemberHandler { private $members; public function __construct(MemberRepository $members) { $this->members = $members; } public function handle(RegisterMember $command) { $member = Member::register($command->email, $command->password); $this->members->save($member); } }
Во время очередной операции, я могу взять экземпляр DoctrineMemberRepository . Однако, во время тестирования легко можно заменить его на экземпляр ArrayMemberRepository. Они оба реализуют один и тот же интерфейс.

Упрощенный пример теста может выглядеть примерно так…

$repo = new ArrayMemberRepository; $handler = new RegisterMemberHandler($repo); $request = $this->createRequest(["email" => "[email protected]", "password" => "angelofdestruction"]); $handler->handle(RegisterMember::usingForm($request)); AssertCount(1, $repo->findByEmail("[email protected]"));
В этом примере мы тестируем обработчик. Нам не нужно проверять корректность хранения данных репозитория в БД (или еще где). Мы тестируем конкретное поведение этого объекта: регистрируем пользователя на основе данных формы, а затем передаем их в репозиторий.

Коллекция или Состояние

В книге Implementing Domain-Driven Design Vaughn Vernon делает различие между типами репозиториев. Идея коллекцио-ориентированного репозитория (ориг. - collection-oriented repository) в том, что работа с репозиторием идет в памяти, как с массивом. Репозиторий, ориентированный на хранение состояний (ориг. - persistence-oriented repository) содержит в себе идею, что в нем будет какая-то более глубокая и продуманная система хранения. По сути различия лишь в названиях.

// collection-oriented $memberRepository->add($member); // vs persistence-oriented $memberRepository->save($member);
Замечу, что это лишь мое мнение и пока что я придерживаюсь именно его в вопросах использования репозиториев. Однако, хотел бы предупредить, что возможно могу передумать. В конце-концов, я сосредотачиваюсь на них как на коллекциях объектов с теми же обязанностями, что и у любого другого объекта-коллекции.

Дополнительная информация

everzet создал проект на Github о репозиториях на который, безусловно, стоит посмотреть. Внутри вы найдете примеры работы с хранением в памяти и файлах.

Итоги

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

Если у вас есть вопросы или если ваше мнение отличается от моего, пожалуйста, пишите комментарии ниже.

Как всегда, я намерен обновлять статью, чтобы синхронизировать ее с моим текущим мнением.

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

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

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

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

Вторая группа веток более интересная. Дело в том что в Ubuntu есть несколько веток для различного рода программного обеспечения:

  • Main - основная ветка - стабильное официально поддерживаемое Canonical ПО
  • Restricted - официально поддерживаемое ПО распространяемое не под лицензией GPL
  • Universe - программы, поддерживаемые сообществом Ubuntu
  • Multiverse - ветка проприетарного программного обеспечения

Такой структуры придерживаются официальные репозитории, сторонние ppa могут же иметь другую структуру или просто ветку main.

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

Настройка репозиториев в Ubuntu

Настройки репозиториев Ubuntu находятся в нескольких файлах в каталоге /etc/apt.

Все официальные репозитории записываются в файл репозиториев Ubuntu - /etc/apt/sources.list. Для каждого PPA репозитория создается отдельный файл в каталоге /etc/apt/sources.list.d/*

Таким образом, вы уже знаете как примитивным способом посмотреть список репозиториев в Ubuntu. По сути, уже можно открыть этот файл и добавить репозиторий Ubuntu прямо туда в конец файла, но для таких действий в системе есть специальные инструменты и далее мы их рассмотрим.

Настройка репозиториев в GUI

Управление репозиториями можно осуществлять с помощью утилиты настроек системы. Запустите Настройки системы, затем откройте Программы и обновления или сразу же запустите Программы и обновления из меню Dash:

На первой вкладке вы можете включить или отключить ветки официальных репозиториев (main, restricted ...), а также выбрать ближайшее к вам зеркало:

Для добавления репозитория в Ubuntu перейдите на вкладку другое ПО на этой вкладке вы можете видеть весь список репозиториев Ubuntu которые были подключены к системе:

Чтобы иметь доступ к дополнительным программам рекомендуется подключить сторонний репозиторий партнеров Canonical. Для этого просто поставьте напротив него галочку.

Для добавления репозитория Ubuntu нажмите кнопку Добавить :

Здесь в единственном поле нужно ввести apt строку репозитория и нажать кнопку добавить источник .

Apt строка репозитория имеет такой синтаксис:

deb http://адрес_репозитория версия_дистрибутива ветки

Например:

deb http://ua.archive.ubuntu.com/ubuntu/ xenial main restricted

deb https://apt-mo.trafficmanager.net/repos/dotnet/ trusty main

Первая строка - официальный репозиторий, вторая - PPA репозиторий ubuntu. Как видите, выглядят они одинаково. С версией дистрибутива все понятно, это кодовое имя, с веткой тоже - это main. А вот где брать адрес? Это уже ваше дело, вы можете искать репозитории где угодно, на форумах, в поисковых системах или в нашей статье, где собран список лучших репозиториев.

Установка репозитория Ubuntu завершена и он появился в списке. Чтобы его отключить достаточно просто снять галочку. А чтобы удалить репозиторий Ubuntu нажмите кнопку удалить :

Для сторонних репозиториев необходимо импортировать GPG ключ для правильной работы в системе, если ключ не добавить, то во время обновления репозиториев Ubuntu apt выдаст ошибку проверки подписи. Это делается, чтобы никто не мог подменить пакеты и вы не установили вирусов. Перейдите на вкладку Аутентификация, затем выберите импортировать ключ из файла :

Как правило, в описании репозитория, если для него требуется ключ, указана ссылка где его можно скачать. Скачать ключ можно с помощью браузера, или консольной утилитой wget, например:

wget http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0xFC6D7D9D009ED615

Удалять ключи также можно кнопкой удалить:

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

Если были добавлены новые репозитории, при выходе программа предложит выполнить обновление репозиториев Ubuntu, это нужно чтобы загрузить списки пакетов из только что подключенных источников. Также обновление можно выполнить через терминал, но об этом ниже.

Настройка репозиториев Ubuntu PPA

PPA репозитории Ubuntu находятся на сайте, созданном Canonical - launchpad.net. Ubuntu способна автоматически различать, находить apt строку и скачивать GPG ключи для таких репозиториев. Достаточно указать адрес ppa вместо apt сроки при добавлении репозитория в Ubuntu, например:

На самом деле PPA репозитории такие, же как и обычные репозитории. Если вы хотите добавить репозиторий вручную, вы можете узнать apt строку и ключ, раскрыв спойлер Technical details about this PPA на странице описания репозитория:

Теперь его можно добавить в систему, так же как описано выше.

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

Во многих инструкциях мы видим команды для подключения репозитория в Ubuntu через терминал. Действительно, это немного удобнее чем запускать утилиту, загружать ключи и делать все мышкой. Чтобы добавить репозиторий Ubuntu через терминал используйте команду: apt-add-repository:

sudo apt-add-repository "deb http://ppa.launchpad.net/shutter/ppa/ubuntu wily main"

В кавычках указана apt строка репозитория. Также можно просто добавить строчку в /etc/apt/sources.list:

echo "deb http://ppa.launchpad.net/shutter/ppa/ubuntu wily main" >> /etc/apt/sources.list

Для добавления ключей безопасности GPG существует команда apt-key. Вы можете добавить ключ из файла, или скачать ключ с помощью curl и перенаправить ее вывод и apt-key:

curl -L http://debian.datastax.com/debian/repo_key | sudo apt-key add

Добавить репозиторий в Ubuntu через терминал намного проще чем в графическом интерфейсе.

Как удалить репозиторий в Ubuntu

Удалить репозиторий Ubuntu через терминал можно той же командой с опцией remove:

sudo apt-add-repository --repository "deb http://ppa.launchpad.net/shutter/ppa/ubuntu wily main"

Или же просто закомментировать deb строку в файле /etc/apt/sources.list или в одном из файлов /etc/apt/sources.list.d/*.

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

Добавить репозиторий PPA в Ubuntu можно той же командой. Как я уже говорил система автоматически распознает репозиторий и скачает нужные ключи. Формат записи такой:

sudo apt-add-repository ppa:репозиторий/ppa

Например:

sudo apt-add-repository ppa:shutter/ppa

Как удалить репозиторий PPA в Ubuntu

Удалить репозиторий в Ubuntu можно такой же командой, как и в предыдущем примере.