Как добавить репозиторий в ubuntu
Перейти к содержимому

Как добавить репозиторий в ubuntu

  • автор:

Create your own custom and authenticated APT repository

Internet is full of resources on how to create an APT local repository and how to expose it via HTTP. Unfortunately, APT changed quite a lot since these tutorials and howtos have been written: most of them do not work out of the box. Examples of changes are SHA1 removal, which broke many many repos, and turning on authenticated repositories by default since APT 1.1.

This howto works with Ubuntu 16.04.4 (latest LTS at the time of writing) and uses SHA256 signatures. It will help setting up GPG keys, draft a script to update your repo and provide many crunchy details about APT internals.

APT Repository Layout

The ultimate goal of the repository is to be exposed via HTTP (using apache httpd), so the best place we can store the repo is inside the DocumentRoot of httpd, which defaults to /var/www/html/ . We'll use a subfolder here, namely /var/www/html/repo .

The listing below shows the organisation inside this repository:

If you want more details, the complete repository format specification can be found here: https://wiki.debian.org/DebianRepository/Format

Setup GPG Key

The first step, also a one-off step, is to create a GPG key. This is rather simple, but you might be surprised that default gpg key still uses SHA1 and some extra work is needed to avoid this.

The following section assumes gnupg is installed.

Gnupg configuration

/.gnupg/gpg.conf file needs some tweaking:

Prompt-less generation of a GPG key

This part explains how to generate a GPG key without any prompted question. (But please keep in mind that this is a bad idea.)

The following snippet assumes that $KEYNAME and $EMAIL variables are set.

Generate a configuration file used to generate the key.

Generate the key. Two files will be created by the following line, respectively $.pub and $.key:

Now you can import the key, using the following commands:

Retrieving the key id

The next step is to retrieve the ID of your key to be able to export it in the right format. The following command will allow you to retrieve the ID of the key:

The key id is the hexstring after 4096R/, i.e. EAE1F4AA in the example below:

Export the key and store it within the APT repo to be imported by your repo users:

You’re all good, you have a key referred as $ created, exported and usable.

For the curious, more details about GPG and GPG migration are provided by the ubuntu Security team here: https://wiki.ubuntu.com/SecurityTeam/GPGMigration

APT Local Repository

The next task in our journey is to create a local APT repository. For this we’ll need to install a bunch of packages and generate the repo-specific files like Packages and Release.

Setup local repo

Let’s install a bunch of packages:

The apache2 package should have created /var/www/html/, and we’ll create our dedicated directory where we’ll store the packages and metadata:

This was easy. Next, create the metadata files.

Let’s move to our repository and assume all the later commands are run from this working directory:

Packages

There are tools to generate this Packages, mostly apt-ftparchive and dpkg-scanpackages. We’ll use here apt-ftparchive:

A gzip’ed version of the file can also be provided to save a bit of bandwidth (please ensure -k is used, i.e. both Packages and Packages.gz are present is the repository):

Release

For building the Release file, we’ll use again apt-ftparchive:

Now we can sign the Release file, in two version: a stand-alone Release.gpg file and a InRelease which embbeded the signature in the file.

The first rm statement is to ensure prompt-less command if the file already exists, i.e. this can be used in a script run every time you add a new deb packages in your repo.

Generate Release.gpg file

Generate InRelease file

Done! You know have a fully authenticated APT repository, which is exposed through HTTP. You’re no longer forced to use [trusted=yes] in your apt source list!

Using your APT repository from another server

Now you have a working and authenticated APT repository exposed through HTTP, you can configure apt-clients to use your repository via the following set of configuration.

We assume here that the HOST variable is set, for instance:

And importing the GPG key

Try it, i.e. running apt update should not throw any error:

Bonus: Signing a deb package

With the GPG setup detailed above, signing a deb package is straightforward. Still assuming the variable $ is set accordingly:

Repositories / CommandLine

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

IconsPage/important.pngIf 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

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

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

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

Explanation of the Repository Format

    All the lines beginning with one or two hashes (#) are comments, for information only.

Other Versions

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:

There are four similar lines for ‘multiverse’.

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

IconsPage/note.pngDepending 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:

Adding Partner Repositories

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

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!

Adding Launchpad PPA Repositories

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)

Enabling Repositories with a (non-interactive) Script

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

Как добавить репозиторий в ubuntu

При установке пакетов в линукс на основе дистрибутива Debian (Ubuntu, Linux Mint и др.) пакеты загружаются из одного или нескольких репозиториев программного обеспечения apt. Репозиторий – это сетевой сервер или локальный каталог, содержащий пакеты deb и файлы метаданных.

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

В этой заметке мы покажем Вам два способа добавления репозитория apt в системах на основе дистрибутива Debian. Первый способ заключается в использовании команды add-apt-repository, а второй – в ручном добавлении репозитория с помощью текстового редактора.

В Ubuntu (и всех других дистрибутивах Debian) репозитории программного обеспечения определены в файле /etc/apt/sources.list или в отдельных файлах в директории /etc/apt /sources.list.d/

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

Общий синтаксис принимает следующий вид:

deb http://repo.tld/ubuntu distro component

Первая запись в строке определяет тип архива. Тип архива может быть либо deb, либо deb-src. Deb подразумевает, что репозиторий содержит deb-пакеты, в то время как deb-src подразумевает исходные пакеты.
Вторая запись – это URL репозитория.
Третья запись указывает кодовое имя дистрибутива, например beaver, xenial и так далее.
Последние записи – это компоненты или категории репозитория. Репозитории Ubuntu по-умолчанию разделены на четыре компонента – main, restricted, universe и multiverse. Как правило, сторонние репозитории имеют только одну категорию.

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

Чтобы иметь возможность добавлять или удалять репозиторий, Вы должны войти в систему либо как пользователь с доступом sudo, либо как root.

1. Добавление через add-apt-repository

Сначала необходимо убедиться, что у Вас есть команда add-apt-repository. Если при ее выполнении видите: add-apt-repository command not found, значит ее нет, необходимо установить пакет software-properties-common.

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

Синтаксис добавления репозитория через add-apt-repository таков:

add-apt-repository [options] repository

Где repository – это репозиторий, который необходимо добавить в sources.list (например deb http://repo.tld/ubuntu distro component или PPA репозиторий в формате ppa:/).

Чтобы увидеть все возможности команды add-apt-repository выполните man add-apt-repository в терминале.

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

Допустим, мы хотим установить MongoDB из оффициального репозитория.

Первое, что необходимо сделать – установить public key (публичный ключ):

$ sudo apt-key adv —keyserver hkp://keyserver.ubuntu.com:80 —recv 9DA31620334BD75D9DCB49F368818C72E52529D4

Добавим теперь репозиторий MongoDB:

sudo add-apt-repository ‘deb [arch=amd64] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse’

А сейчас уже можно установить MongoDB:

$ sudo apt update && sudo apt install mongodb-org

Чтобы удалить репозиторий, используйте опцию –remove:

sudo add-apt-repository —remove ‘deb [arch=amd64] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse’

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

Personal Package Archives (PPA) это сервис, который позволяет пользователям загружать исходные пакеты Ubuntu, построенные и опубликованные с помощью Launchpad в качестве репозитория apt.

Когда Вы добавляете новый PPA репозиторий, команда add-apt-repository создает новый файл в директории /etc/apt/sources.list.d/

Для примера установим FFmpeg версии 4.x

$ sudo add-apt-repository ppa:jonathonf/ffmpeg-4

Нажмем Enter когда нас попросят об этом.

Press [ENTER] to continue or Ctrl-c to cancel adding it.

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

$ sudo apt update && sudo apt install ffmpeg

2. Ручное добавление репозитория

Если Вы хотите, то можете добавить необходимый репозиторий в файл /etc/apt/sources.list вручную.

Для примера включим репозиторий CouchDB и установим из него пакеты. CouchDB – это бесплатное, отказоустойчивое NoSQL решение с открытым исходным кодом, поддерживаемое Apache Software Foundation.

Откройте файл sources.list любимым редактором:

sudo vim /etc/apt/sources.list

И добавьте в конце файла новой строкой запись:

deb https://apache.bintray.com/couchdb-deb bionic main

Вместо редактирования файла, можно выполнить лишь одну такую команду:

echo «deb https://apache.bintray.com/couchdb-deb $(lsb_release -cs) main» | sudo tee -a /etc/apt/sources.list

$(lsb_release -cs) выведет кодовое имя Ubuntu. Например, если у Вас Ubuntu 18.04, тогда кодовое имя – bionic.

Более правильным, конечно, будет не добавление строки в файл sources.list, а вынесение репозитория в отдельный файл, который помещается в каталог /etc/apt/sources.list.d/ (как это описывали выше).

Далее нам необходимо загрузить публичный ключ. Это можно сделать командами wget или curl:

curl -L https://couchdb.apache.org/repo/bintray-pubkey.asc | sudo apt-key add —

Вывод должен быть просто OK, что значит GPG ключ успешно импортирован.

Перед установкой нового пакета, обновим список доступных репозиториев:

$ sudo apt update

А теперь установим:

$ sudo apt install couchdb

Заключение

Мы показали Вам, как добавить репозитории в Linux на базе Debian. Эти же инструкции применимы к любому дистрибутивам Ubuntu, Kubuntu, Linux Mint, Kali Linux, Elementary OS и др.

Не стесняйтесь оставлять комментарии, если у Вас есть какие-либо вопросы.

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

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

В одной из своих предыдущих статей я рассмотрел список полезных репозиториев для Ubuntu. В этой статье мы рассмотрим репозитории в Ubuntu более глобально, будет рассмотрена настройка репозиториев 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:

ubuntu

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

ubuntu1

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

ubuntu2

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

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

ubuntu3

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

ubuntu6

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 нажмите кнопку удалить:

ubuntu5

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

ubuntu8

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

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

ubuntu9

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

ubuntu4

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

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

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

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

ubuntu10

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

Добавление репозиториев в 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 —remove «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 можно такой же командой, как и в предыдущем примере:

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

Полностью удалить PPA из системы можно командой:

sudo ppa-purge ppa:репозиторий/ppa

Возможно, утилиту ppa-pure необходимо будет установить командой:

sudo apt-get install ppa-purge

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

sudo apt-get update

Выводы

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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *