Подключить локальный репозиторий ubuntu

Обновлено: 03.07.2024

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

Как работают репозитории пакетов в системах Linux?

Разработчики для поддержки своих дистрибутивов и комфортной работы пользователей снабжают системы управления пакетами (СУП) специальными ссылками. Они указывают на удалённые сервера, на которых хранятся самые актуальные и протестированные разработчиками пакеты ПО для данного дистрибутива. Благодаря этим ссылкам СУП «знает» когда и откуда загрузить и установить обновления пакетов. Эти ссылки могут указывать как на удалённый ресурс, так и на локальный. Во втором случае это может быть как другой компьютер в локальной сети, так и локальный накопитель и/или даже, если постараться — оптический привод.

Сами эти ссылки хранятся в файле sources.list, который в Ubuntu расположен по адресу /etc/apt/sources.lis t. Сама ссылка (для Ubuntu) выглядит примерно так:

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

Это репозиторий, созданный разработчиком среды разработки CodeLite, специально для Ubuntu. И эта ссылка была добавлена в файл sources.list уже вручную самим пользователем-администратором компьютера. После чего становится возможной автоматическая установка актуальных и стабильных версий пакетов CodeLite, а также их обновление. А вот так может выглядеть ссылка на репозиторий, хранимый на оптическом носителе:

Использование прокси для организации локального репозитория

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

  • на какой-либо клиентской машине в обычном порядке запрашивается какой-либо пакет для установки/обновления через компьютер-сервер;
  • запрошенный пакет скачивается сервером, сохраняется в специально отведённом хранилище-кеше и далее становится доступным всем остальным клиентам;
  • в качестве распространителя пакетов клиентам выступает веб-сервер Apache, поэтому его установка обязательна.

Итак, для начала необходимо установить всё необходимое, т. е. веб-сервер и саму утилиту кеширования пакетов:

При установке apt-cacher будет показан диалог настройки, в котором можно настроить нужное поведение утилиты, например задать автозапуск и работу в режиме демона. Также эти и некоторые другие важные настройки можно сделать (например с помощью редактора nano) в конфигурационном файле /etc/default/apt-cacher . Для включения автозапуска apt-cacher нужно установить параметр AUTOSTART в значение «1»:

Далее, необходимо определить, какие клиенты должны иметь доступ к кешу репозитория, отредактировав конфигурационный файл /etc/apt-cacher/apt-cacher.conf:

Как можно видеть, просто указывается диапазон нужных IP-адресов. После сохранения сделанных настроек необходимо перезапустить веб-сервер Apache:

Теперь необходимо указать клиентам, куда им нужно обращаться для установки пакетов и обновлений. Для этого на клиентских машинах нужно создать файл /etc/apt/apt.conf.d/01proxy с помощью того же редактора nano:

И добавить в него строку со следующей инструкцией:

Здесь в качестве адреса сервера, на котором установлен и работает apt-cacher указывается 192.168.1.100. Конечно, это может быть любой другой адрес, настроенный для этого сервера.

Теперь можно проверить работу локального репозитория (а точнее удалённого, но доступного через прокси), выполнив команду обновления данных о доступных пакетах:

APT-MIRROR – полноценный локальный репозиторий

Данный способ является более «продвинутым» по сравнению с использованием apt-cache. Поскольку предполагает наличие полноценного хранилища пакетов прямо на локальном компьютере/сервере или в локальной сети. Но сначала такое хранилище необходимо создать, загрузив в него все необходимые пакеты. Как и в случае с apt-cache, в качестве распространителя пакетов выступает веб-сервер Apache. Порядок настройки локального репозитория при помощи утилиты apt-mirror следующий:

  1. установка необходимых пакетов: apt-mirror и apache2;
  2. создание локального хранилища и настройка источников для загрузки, загрузка пакетов в хранилище;
  3. открытие доступа к готовому хранилищу для клиентов;
  4. настройка клиентов для использования локального репозитория.

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

Далее, нужно создать локальное хранилище пакетов, пусть это будет каталог /localrepo :

Теперь в конфигурационном файле /etc/apt/mirror.list нужно отредактировать строку с инструкцией «set base_path». Указав в ней только что созданный каталог для хранилища:

Далее, в этом же файле можно добавить необходимые репозитории, с которых будут загружены пакеты. Можно скопировать все стандартный репозитории из /etc/apt/sources.list .
Сохранив настройки можно запустить загрузку пакетов командой:

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

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

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

Теперь ссылка ubuntu будет использоваться для задания репозиториев на стороне клиентов с помощью редатирования файла /etc/apt/sources.list:
Открыв этот файл (с использованием команды sudo) с помощью редактора nano, нужно теперь добавить в него следующие репозитории:

Здесь адрес 192.168.1.100 — это IP-адрес компьютера, на котором был создан и настроен локальный репозиторий.
Теперь, для работы с пакетами можно использовать обычные команды apt:

Заключение

В заключение следует напомнить, что способы организации локальных репозиториев, описанные выше подходят для систем на базе формата debian-пакетов. Для систем, основанных на RPM следует использовать другие инструменты.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

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

Источники Apt

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

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

Общий синтаксис файла /etc/apt/sources.list имеет следующий формат:

Формат файлов в каталоге /etc/apt/sources.list.d/ такой же, как и для обычного файла sources.list .

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

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

Обычно инструкции по включению определенного репозитория включены в документацию по программному обеспечению.

Установка add-apt-repository (команда add-apt-repository не найдена)

Утилита add-apt-repository включена в software-properties-common . Для его установки выполните следующие команды:

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

Базовый синтаксис команды add-apt-repository следующий:

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

По умолчанию в ubuntu 18.04 и новее add-apt-repository также обновляет индекс пакета, если открытый ключ репозитория импортируется.

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

Сначала импортируйте открытый ключ репозитория:

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

Репозиторий будет добавлен в файл sources.list .

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

Если по каким-либо причинам вы хотите удалить ранее включенный репозиторий, используйте параметр --remove :

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

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

Например, чтобы добавить PPA Джонатона F, который предоставляет FFmpeg версии 4.x, вы должны запустить:

При появлении запроса нажмите Enter , и репозиторий будет включен.

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

Команда apt установит пакет и все его зависимости.

Добавление репозиториев вручную

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

Чтобы добавить репозиторий, откройте файл sources.list текстовом редакторе :

Добавьте строку репозитория в конец файла:

Вместо редактирования файла в текстовом редакторе вы можете использовать следующую команду, чтобы добавить строку репозитория в файл sources.list :

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

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

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

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

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

Выводы

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


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

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

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

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

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

Чтобы иметь возможность добавлять или удалять репозиторий, Вы должны войти в систему либо как пользователь с доступом 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

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

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

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

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

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

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

Добавление 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 вручную.

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

sudo vim /etc/apt/sources.list

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

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

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

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

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

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

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

$ sudo apt update

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

$ sudo apt install couchdb

Заключение

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

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


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

Локальный репозиторий очень желательно размещать на отдельном жёстком диске (в крайнем случае, разделе), чтобы в случае аварии не потерять всё нажитое непосильным трудом скачанное. Репозиторий дистрибутива Debian 8 для архитектуры amd64 весит более 40 гигабайт. Соответственно, если вам нужны ещё и i386-пакеты (32 бит), то объём удвоится. Итак, допустим в вашей системе есть отдельный жёсткий диск на 500 Гб, примонтированный в /media/repo . От этого и будем исходить. Начнём с Debian 8 Jessie.

Существует несколько способов создания локального репозитория в Debian/Ubuntu. Я воспользуюсь самым простым и проверенным временем - утилитой apt-mirror. Устанавливаем:

sudo apt install apt-mirror apache2

Создаём каталог для репозитория:

sudo mkdir /media/repo/debian

и служебные каталоги:

sudo mkdir -p /media/repo/debian/

Настраиваем. Открываем конфигурационный файл:

sudo nano /etc/apt/mirror.list

Сохраняем. Запускаем закачку репозитория:

После того как загрузятся индексные файлы, Apt-Mirror сообщит вам какой объём пакетов нужно скачать (объём будет весьма и весьма не маленький). Вам остаётся только ждать. Всё остальное система сделает сама. Для автоматической синхронизации и очистки зеркал нужно добавить строку в настройки cron и выставить подходящее время. Обновление официальных зеркал происходит каждые 6 часов: 3:00,9:00,15:00,21:00. Например так:

05 01 * * * apt-mirror >> /var/log/apt-mirror.log
05 03 * * * /media/repo/debian/var/clean.sh >> /var/log/apt-mirror.log

Для корректной работы обязательно необходимо добавить символические ссылки "stable","testing", "unstable" на jessie, stretch, sid соответственно (если они у вас есть). Пример для jessie:

Мы установили веб-сервер Apache неспроста. Он нам нужен чтобы раздавать пакеты из нашего локального репозитория по сети (локальной). Для начала, нужно настроить доступ к репозиторию. Для этого нужно создать одну символьную ссылку:

Теперь на клиентской машине (которой нужен доступ к локальному репозиторию), укажите адрес репозитория. Если у компьютера с репозиторием есть сетевое имя (к примеру server), то указывайте его. В противном случае, адресом указывайте его IP-адрес:

sudo nano /etc/apt/sources.list

Если вы указывали в конфиге загрузку 32-х битных пакетов (i386), то не забудьте добавить эту архитектуру в систему:

sudo dpkg --add-architecture i386

и обновите список пакетов:

sudo apt-get update

Дальше уже всё как обычно. Для Ubuntu всё то же самое, за исключением названий репозиториев и добавления 32-х битной архитектуры в 64-х битную систему (не нужно). Конфиг mirror.list для Ubuntu 14.04:

Ну и соответственно, нужно изменить символьную ссылку:

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

Читайте также: