Репозитории Ubuntu
В Ubuntu всё программное обеспечение делится на четыре секции, называемые компонентами, чтобы отразить разницу в лицензии и уровне доступной поддержки.
Пакеты распределяются по компонентам таким образом:
- Main – свободное ПО, официально поддерживаемое компанией Canonical.
- Restricted – проприетарное ПО (в основном — драйверы устройств), официально поддерживаемое компанией Canonical.
- Universe – свободное ПО, официально не поддерживаемое компанией Canonical (но поддерживаемое сообществом пользователей).
- Multiverse – проприетарное ПО, не поддерживаемое компанией Canonical.
Существует четыре основных репозитория Ubuntu.
- $release – это пакеты на момент выхода релиза.
- $release-security – пакеты критических обновлений безопасности.
- $release-updates – пакеты обновления системы (т.е. более поздние версии ПО, вышедшие уже после релиза).
- $release-backports – бэкпорты более новых версий некоторого ПО, которое доступно только в нестабильных версиях Ubuntu.
- partner – репозиторий содержищий ПО компаний-партнеров Canonical.
Устройство репозитория
Пример записи в файле Packages для пакета :
Package: abiword Priority: optional Section: gnome Installed-Size: 7808 Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com> Original-Maintainer: Masayuki Hatta (mhatta) <mhatta@debian.org> Architecture: i386 Version: 2.6.6-0ubuntu1 Replaces: abiword-gnome Provides: abiword-gnome Depends: libaiksaurus-1.2-0c2a (>= 1.2.1+dev-0.12), libaiksaurusgtk-1.2-0c2a (>= 1.2.1+dev-0.12), libart-2.0-2 (>= 2.3.18), libatk1.0-0 (>= 1.20.0), libc6 (>= 2.7), libcairo2 (>= 1.2.4), libenchant1c2a (>= 1.4.2), libexpat1 (>= 1.95.8), libfontconfig1 (>= 2.4.0), libfreetype6 (>= 2.3.5), libfribidi0 (>= 0.10.9), libgcc1 (>= 1:4.1.1), libglade2-0 (>= 1:2.6.1), libglib2.0-0 (>= 2.18.0), libgnomecanvas2-0 (>= 2.11.1), libgnomeprint2.2-0 (>= 2.17.0), libgnomeprintui2.2-0 (>= 2.17.0), libgsf-1-114 (>= 1.14.11), libgtk2.0-0 (>= 2.15.0), libice6 (>= 1:1.0.0), libidn11 (>= 0.5.18), libjpeg62, libloudmouth1-0 (>= 1.1.4-2), libncurses5 (>= 5.6+20071006-3), libots0, libpango1.0-0 (>= 1.22.0), libpng12-0 (>= 1.2.13-4), libpopt0 (>= 1.14), libreadline5 (>= 5.2), librsvg2-2 (>= 2.22.3), libsm6, libstdc++6 (>= 4.2.1), libwmf0.2-7 (>= 0.2.8.4), libwpd8c2a, libwpg-0.1-1, libwv-1.2-3 (>= 1.2.4), libx11-6, libxft2 (>> 2.1.1), libxml2 (>= 2.6.27), zlib1g (>= 1:1.1.4), abiword-common (>= 2.6.6-0ubuntu1), gsfonts Recommends: abiword-plugin-grammar, abiword-plugin-mathview, abiword-help, aspell-en | aspell-dictionary, poppler-utils Suggests: abiword-plugin-goffice Conflicts: abiword-gnome Filename: pool/main/a/abiword/abiword_2.6.6-0ubuntu1_i386.deb Size: 2969028 MD5sum: f70817557ecbf4183b498fd98051ec03 SHA1: 8c666220527fe78328b5f94fec93fd62eddd332f SHA256: 47de1dcf28866a33c0e4baefadb2d29ff9046ba4e4ae6e600801e5e3a6ec40c7 Description: efficient, featureful word processor with collaboration AbiWord is a full-featured, efficient word processing application. It is suitable for a wide variety of word processing tasks, and is extensible with a variety of plugins. . This package includes many of the available import/export plugins allowing AbiWord to interact with ODT, WordPerfect, and other formats. It also includes tools plugins, offering live collaboration with AbiWord users on Linux and Windows (using TCP or Jabber/XMPP), web translation and dictionary support, and more. . Additional plugins that require significant amounts of extra software to function are in the various abiword-plugin-* packages. Homepage: http://www.abisource.com/ Bugs: https://bugs.launchpad.net/ubuntu/+filebug Origin: Ubuntu Task: xubuntu-desktop
Файлов Packages.gz может быть несколько (например, по одному для каждой архитектуры). Файл Release содержит описание репозитория в целом и ссылки на различные Packages.gz
Общая же схема работы выглядит примерно так:
- Пользовательский компьютер подключается к репозиторию, и при наличии защиты, проверяет его истинность (см. главу ).
- Читает файл Release, находит и скачивает необходимые Packages.gz
- На основе скачанных Packages.gz обновляет локальную базу данных пакетов.
- Теперь пользовательский компьютер «знает» где находится тот или иной пакет и при необходимости легко может его скачать и установить.
Сторонние репозитории и PPA (не предоставляются Ubuntu)
Вышеупомянутые пять репозиториев предоставлены Ubuntu. Вы также можете добавить сторонние репозитории (это зависит от вас, если вы хотите это сделать), чтобы получить доступ к большему количеству программного обеспечения или к более новой версии программного обеспечения (так как Ubuntu может предоставить старую версию того же программного обеспечения).
Например, если вы добавите репозиторий, предоставленный VirtualBox, вы можете получить последнюю версию VurtualBox. Это добавит новую запись в ваш sources.list.
Вы также можете установить дополнительное приложение, используя PPA (Personal Package Archive).
Совет. Попробуйте НЕ добавлять ничего, кроме репозиториев Ubuntu, в свой файл sources.list. Вы должны держать этот файл в идеальном состоянии, потому что, если вы испортите его, вы не сможете обновить свою систему или (иногда) даже установить новые пакеты.
Что это такое?
Репозиторий – это специальное место, из которого пользователь операционной системы Ubunty может устанавливать всевозможные обновления или же программы. Если вы раньше пользовались операционными системами Mac и Windows, то вы, наверное, уже успели привыкнуть к тому, что программное обеспечение представляет собой какой-нибудь один или же несколько установочных файлов, которые пользователю предоставляются на определенных носителях или же могут скачиваться через Интернет. Для операционной системы Ubuntu также предусматривается такой вариант распространения программного обеспечения, но относится это больше к специализированным закрытым или же проприетарным программам.
Репозиторий – это место, где содержится большая часть программного обеспечения Ubuntu, которое запаковывается в специализированные файлы .deb с содержанием в них требуемых библиотек. Такие файлы достаточно часто можно найти в Интернете или же на каких-либо переносных носителях, даже на CD,с которого устанавливается сама операционная система.
Как добавить ключ?
Подключая хранилище, которое находится под защитой цифровой подписи, вам необходимо будет скачать специализированный открытый ключ, который должен быть добавлен в систему. Достаточно часто для скачивания может быть предоставлен пакет, доступный для установки, который полностью самостоятельно будет прописывать ключ репозитория. Если вы будете скачивать ключ непосредственно с сайта репозитория, то в таком случае вам будет предоставлен обычный файл с расширением .gpg, .key или же каким-нибудь другим. Добавить данный файл в систему можно будет при помощи консольной команды sudo apt-key add repo.key, но вместо .key указывается тот ключ репозитория, который был вами получен.
Защита репозиториев
Поскольку репозитории большей частью расположены в интернете, существует вероятность подмены репозитория злоумышленником на свой, содержащий модифицированные пакеты. Таким образом, пользователь может установить себе модифицированный пакет и тем самым поставить безопасность своей системы под угрозу. Многие репозитории имеют защиту от подмены. Такая защита реализована при помощи сверки цифровых подписей репозитория и клиента. В случае, когда репозиторий имеет цифровую подпись, а пользовательский компьютер содержит открытый ключ для этого репозитория — такой репозиторий считается доверенным.
В Ubuntu по умолчанию доверенными являются репозитории на установочных дисках и основные интернет репозитории — archive.ubuntu.com. При наличие на пользовательском компьютере нескольких подключенных репозиториев, предпочтение отдается доверенным.
При подключении репозитория, защищенного цифровой подписью Вам нужно скачать (обычно с ресурса, рассказывающего про этот репозиторий, или с сервера ключей, что является более предпочтительным в любом случае) открытый ключ и добавить его в систему. Иногда для скачивания предоставляется доступный для установки пакет, который в свою очередь при своей установке сам прописывает ключ репозитория. Если вы скачиваете ключ с сайта репозитория, то вы получите обычный файл с расширением .key, .gpg или другим. Добавить его в систему можно так:
sudo apt-key add repo.key
Где — полученный вами ключ репозитория.
Или при помощи графического интерфейса — запустите «Источники приложений» (Система→Администрирование→Источники приложений), перейдите на вкладку «Аутентификация» и нажмите на кнопку «Импортировать файл ключа…» — откроется диалог выбора файла. Выберите файл ключа и нажмите ОК.
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0x12345678
Где вместо keyserver.ubuntu.com можно подставить адрес другого сервера ключей, а вместо 12345678 необходимо написать идентификатор нужного вам ключа.
Совет: для того, чтобы разом попытаться импортировать все недостающие ключи репозиториев, выполните в консоли:
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com `sudo aptitude update 2>&1 | grep -o '\{16\}$' | xargs`
Создание Git-репозитория
Для создания Git-репозитория вы можете использовать два основных подхода.
Во-первых, импорт в Git уже существующего проекта или директории.
Во-вторых, клонирование существующего репозитория с другого сервера.
В обоих случаях вы получите готовый к работе Git репозиторий на вашем копьютере.
Создание репозитория в существующей директории
Если у вас уже есть проект в директории, которая не находится под версионным контролем Git, то для начала нужно перейти в эту директорию.
Если вы не делали этого раньше, то для разных операционных систем это выглядит по-разному:
для Linux:
для macOS:
для Windows:
а затем выполните команду:
Эта команда создаёт в текущей директории новую поддиректорию с именем , содержащую все необходимые файлы репозитория — структуру Git-репозитория.
На этом этапе ваш проект ещё не находится под версионным контролем.
(Подробное описание файлов содержащихся в только что созданной вами директории приведено в главе )
Если вы хотите добавить под версионный контроль существующие файлы (в отличие от пустого каталога), вам стоит добавить их в индекс и осуществить первый коммит изменений.
Добиться этого вы сможете запустив команду несколько раз, указав индексируемые файлы, а затем выполнив :
Мы разберем, что делают эти команды чуть позже.
Теперь у вас есть Git-репозиторий с отслеживаемыми файлами и начальным коммитом.
Клонирование существующего репозитория
Для получения копии существующего Git-репозитория, например, проекта, в который вы хотите внести свой вклад, необходимо использовать команду .
Если вы знакомы с другими системами контроля версий, такими как Subversion, то заметите, что команда называется «clone», а не «checkout».
Это важное различие – вместо того, чтобы просто получить рабочую копию, Git получает копию практически всех данных, которые есть на сервере.
При выполнении с сервера забирается (pulled) каждая версия каждого файла из истории проекта.
Фактически, если серверный диск выйдет из строя, вы можете использовать любой из клонов на любом из клиентов, для того, чтобы вернуть сервер в то состояние, в котором он находился в момент клонирования (вы можете потерять часть серверных хуков (server-side hooks) и т.п., но все данные, помещённые под версионный контроль, будут сохранены, подробнее об этом смотрите в главе Установка Git на сервер). Клонирование репозитория осуществляется командой .
Например, если вы хотите клонировать библиотеку , вы можете сделать это следующим образом:
Клонирование репозитория осуществляется командой .
Например, если вы хотите клонировать библиотеку , вы можете сделать это следующим образом:
Эта команда создаёт директорию , инициализирует в ней поддиректорию , скачивает все данные для этого репозитория и извлекает рабочую копию последней версии.
Если вы зайдёте в новую директорию , то увидите в ней файлы проекта, готовые для работы или использования.
Для того, чтобы клонировать репозиторий в директорию с именем, отличающимся от , необходимо указать желаемое имя, как параметр командной строки:
Эта команда делает всё то же самое, что и предыдущая, только результирующий каталог будет назван .
В Git реализовано несколько транспортных протоколов, которые вы можете использовать.
В предыдущем примере использовался протокол , вы также можете встретить или , использующий протокол передачи SSH.
В главе Установка Git на сервер мы познакомимся со всеми доступными вариантами конфигурации сервера для обеспечения доступа к вашему Git репозиторию, а также рассмотрим их достоинства и недостатки.
prev | next
Репозиторий как универсальное хранилище Ubuntu
Однако, видя такие файлы, многие пользователи могут даже не знать о том, что представляет собой репозиторий. Это специализированный сервер-хранилище, на котором располагаются такие файлы. Другими словами, репозитории можно назвать своеобразным источником приложений, так как пользователи со своих компьютеров подключаются к ним через Сеть или же Интернет, используя специализированные утилиты, после чего могут увидеть, какие пакеты на данный момент уже есть на компьютере, а какие можно будет установить. Стоит отметить, что преимущественное большинство утилит поддерживает процедуру простого поиска по ключевым словам, а также может разбивать пакеты на несколько групп по категориям.
Применение связки «программа-репозиторий» – это возможность использования достаточно простог, и в то же время централизованного метода установки или же удаления различного софта, а также для пользователей таким образом гораздо легче выкладываются различные обновления. В свежеустановленной операционной системе уже могут находиться требуемые репозитории, но при этом никто не запрещает применять также сторонние хранилища данных.
Репозитории Ubuntu содержат в себе огромнейшее количество самого разного программного обеспечения, поэтому зачастую нет ничего сложного в том, чтобы найти в них интересующую вас утилиту. Конечно, вы можете просто из Интернета скачать какой-нибудь пакет файлов .deb или даже попробовать самостоятельно собрать программу из исходников, но при этом вы должны понимать, что этот вариант является более трудоемким и далеко не всегда в конечном итоге оказывается действенным.
Репозитории Ubuntu: Main, Universe, Multiverse, Restricted и Partner
Программное обеспечение в репозитории Ubuntu подразделяется на пять категорий: Main, Universe, Multiverse, Restricted и Partner.
Почему Ubuntu это делает? Почему бы не поместить все программное обеспечение в один репозиторий? Чтобы ответить на этот вопрос, давайте посмотрим, что это за репозитории:
Main — Основной
Когда вы устанавливаете Ubuntu, это хранилище включается по умолчанию. Основной репозиторий состоит только из FOSS (бесплатное программное обеспечение с открытым исходным кодом), которое может распространяться свободно без каких-либо ограничений.
Программное обеспечение в этом хранилище полностью поддерживается разработчиками Ubuntu. Это то, что Ubuntu будет предоставлять обновления безопасности, пока ваша система не достигнет конца срока службы.
Universe — Универсальный
Этот репозиторий также состоит из бесплатного программного обеспечения с открытым исходным кодом, но Ubuntu не гарантирует регулярные обновления безопасности для программного обеспечения в этой категории.
Программное обеспечение в этой категории упаковано и поддерживается сообществом. В репозитории Universe имеется огромное количество программного обеспечения с открытым исходным кодом, что позволяет вам иметь доступ к огромному количеству программного обеспечения через менеджер пакетов apt.
Multiverse — Мультиуниверсальный
Multiverse содержит программное обеспечение, которое не является FOSS. Из-за лицензионных и юридических проблем Ubuntu не может включить этот репозиторий по умолчанию и не может предоставлять исправления и обновления.
Вам решать, хотите ли вы использовать Multiverse репозиторий и проверить, имеете ли вы право на использование программного обеспечения.
Restricted — Ограниченный
Ubuntu старается предоставлять только бесплатное программное обеспечение с открытым исходным кодом, но это не всегда возможно, особенно когда речь идет о поддержке аппаратного обеспечения.
Ограниченные репозитории состоят из проприетарных драйверов.
Partner — Партнерский
Этот репозиторий состоит из проприетарного программного обеспечения, упакованного Ubuntu для их партнеров. Ранее Ubuntu предоставляла Skype через этот репозиторий.
Итоги
- Подготовка новой версии дистрибутива к сертификации больше не является головной болью. На период сертификации мы фиксируем состав дистрибутива, и если нужно что-то пофиксить оперативно, то с большой вероятностью в выпущенном хотфиксе не будет ошибок из-за изменения окружения.
- Все feature-сборки получают управляемое состояние внешних репозиториев.
- Ускоряются выкатка хотфиксов и проверка через QA с предсказуемым, быстрым и успешным результатом.
- Feature-стенды получают после развертывания заранее определенную, неизменяемую среду выполнения.
- Продуктовые команды получили полностью самостоятельный контроль над составом внешних репозиториев для любых задач.
snapshot.debian.orgАвторыНикита ДрачёвАлександр ПаздниковТимур Гильмуллин