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

Обновлено: 21.11.2024

Часто вы хотите установить несколько пакетов, которых нет в репозиториях Ubuntu. Если у них есть какие-либо зависимости от других пакетов, попытка использовать dpkg может привести к тому, что вы попадете в «ад dpkg», а разрешение этих зависимостей за вас действительно поможет.

Существуют полномасштабные методы создания собственного локального репозитория, такие как Debarchiver или Dak. Это излишество, когда все, что вам нужно, это средство разрешения зависимостей нескольких пакетов, которые вы загрузили из Интернета (не для всего репозитория, который вы хотите использовать без подключения к Интернету; для этого используйте AptGet/Offline/Repository) . Простое решение — использовать dpkg-scanpackages, который создаст репозиторий, который вы сможете добавить в свой sources.list или apt-medium.

Установите dpkg-dev

Введите терминал

Каталог

Создайте каталог, в котором вы будете хранить свои пакеты. В этом примере мы будем использовать /usr/local/mydebs.

Теперь переместите свои пакеты в только что созданный каталог.

Ранее загруженные пакеты обычно хранятся в вашей системе в каталоге /var/cache/apt/archives. Если вы установили apt-cacher, в его каталоге /packages будут храниться дополнительные пакеты.

Скрипт update-mydebs

Это просто три строки:

Вырежьте и вставьте вышеуказанное в gedit и сохраните как update-mydebs в ~/bin. (тильда '~' означает ваш домашний каталог. Если ~/bin не существует, создайте его: Ubuntu поместит этот каталог в ваш PATH. Это хорошее место для размещения личных скриптов). Затем сделайте скрипт исполняемым:

Как работает скрипт:

dpkg-scanpackages просматривает все пакеты в mydebs, а результат сжимается и записывается в файл (Packages.gz), который может прочитать apt-get update (см. ниже справку, в которой это подробно объясняется). /dev/null — пустой файл; это замена файла переопределения, который содержит некоторую дополнительную информацию о пакетах, которая в данном случае на самом деле не нужна. См. deb-override(5), если хотите узнать об этом.

Источники.список

в ваш /etc/apt/sources.list, и все готово.

Вариант компакт-диска

Вы можете записать каталог, содержащий deb, на компакт-диск и использовать его в качестве репозитория (удобно для обмена между компьютерами). Чтобы использовать компакт-диск в качестве репозитория, просто запустите

Каждый раз, когда вы помещаете новый файл deb в каталог mydebs, запускайте

Теперь вашими локальными пакетами можно управлять с помощью Synaptic, aptitude и команд apt: apt-get, apt-cache и т. д. При попытке установить apt-get любые зависимости будут разрешены за вас, если они можно встретить.

Плохо сделанные пакеты, скорее всего, потерпят неудачу, но вы не переживете ад dpkg.

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

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

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

Для полного зеркального кэша на вашем сервере требуется не менее 120 ГБ свободного места, зарезервированного для локальных репозиториев.

Требования

  1. Минимум 120 ГБ свободного места.
  2. Сервер Proftpd установлен и настроен в анонимном режиме.

Шаг 1. Настройка сервера

<р>1. Первое, что вы можете сделать, это определить ближайшие и самые быстрые зеркала Ubuntu рядом с вами, посетив страницу Ubuntu Archive Mirror и выбрав свою страну.

Если в вашей стране есть больше зеркал, вам следует определить адрес зеркала и выполнить некоторые тесты на основе результатов ping или traceroute.

<р>2.Следующим шагом является установка необходимого программного обеспечения для настройки локального зеркального репозитория. Установите пакеты apt-mirror и proftpd и настройте proftpd как автономный системный демон.

<р>3. Теперь пришло время настроить сервер apt-mirror. Откройте и отредактируйте файл /etc/apt/mirror.list, добавив ближайшие местоположения (шаг 1) — необязательно, если зеркала по умолчанию достаточно быстры или вы не спешите — и выберите системный путь, по которому следует загружать пакеты. По умолчанию apt-mirror использует местоположение /var/spool/apt-mirror для локального кеша, но в этом руководстве мы собираемся использовать изменение системного пути и указать директиву base_path для установки местоположения /opt/apt-mirror.

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

Списки исходных текстов Debian можно найти на Debian Wiki или в Генераторе списков исходных текстов Debian.

<р>4. Все, что вам нужно сделать сейчас, это просто создать каталог пути и запустить команду apt-mirror, чтобы синхронизировать официальные репозитории Ubuntu с нашим локальным зеркалом.

Как вы можете видеть, apt-mirror продолжает индексацию и загрузку архивов, отображая общее количество загруженных пакетов и их размер. Как мы можем себе представить, 110–120 ГБ достаточно для того, чтобы загрузка заняла некоторое время.

Вы можете запустить команду ls для просмотра содержимого каталога.

После того как первоначальная загрузка будет завершена, будущие загрузки будут небольшими.

<р>5. Пока apt-mirror загружает пакеты, вы можете настроить свой сервер Proftpd. Первое, что вам нужно сделать, это создать анонимный файл конфигурации для proftpd, выполнив следующую команду.

Затем добавьте следующее содержимое в файл named.conf и перезапустите службу proftd.

<р>6. Следующий шаг — связать путь apt-mirror с путем proftpd, запустив монтирование привязки, введя команду.

Чтобы проверить это, запустите команду mount без параметров или опций.

<р>7. Последний шаг — убедиться, что сервер Proftpd автоматически запускается после перезагрузки системы, а каталог зеркального кэша также автоматически монтируется по пути ftp-сервера. Чтобы автоматически включить proftpd, выполните следующую команду.

Чтобы автоматически монтировать кеш apt-mirror на proftpd, откройте и отредактируйте файл /etc/rc.local.

Добавьте следующую строку перед директивой выхода 0. Также используйте 5-секундную задержку перед попыткой монтирования.

Если вы загружаете пакеты из репозиториев Debian, выполните следующие команды и убедитесь, что соответствующие настройки для указанного выше файла rc.local включены.

<р>8. Для ежедневной синхронизации apt-mirror вы также можете создать задание системного расписания, которое будет запускаться в 2 часа ночи каждый день. Запустите команду crontab, выберите предпочитаемый редактор и добавьте следующий синтаксис строки.

В последней строке добавьте следующую строку.

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

Шаг 2. Настройка клиентов

<р>10. Для просмотра репозиториев вы можете открыть браузер и указать IP-адрес вашего сервера или доменное имя, используя протокол FTP.

Та же система применима также к клиентам и серверам Debian, единственные необходимые изменения — это зеркало Debian и список источников.

Также, если вы устанавливаете новую систему Ubuntu или Debian, укажите локальное зеркало вручную по протоколу ftp, когда установщик спросит, какой репозиторий использовать.

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

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

Если вы цените то, что мы делаем здесь, в TecMint, вам следует подумать о следующем:

TecMint – это самый быстрорастущий и пользующийся наибольшим доверием сайт сообщества, где можно найти любые статьи, руководства и книги по Linux в Интернете. Миллионы людей посещают TecMint! для поиска или просмотра тысяч опубликованных статей, доступных всем БЕСПЛАТНО.

Если вам нравится то, что вы читаете, купите нам кофе (или 2) в знак признательности.

Мы благодарны за вашу бесконечную поддержку.

Похожие записи

16 мыслей о «Настройка локальных репозиториев с помощью apt-mirror в системах Ubuntu и Debian»

Моя проблема заключается в том, что машину на основе Debian необходимо перезагрузить через Интернет, но это невозможно, потому что в исходном ISO-образе ОС отсутствует обновление (с идиотскими зависимостями). Беспокойство заключалось в том, что система была загружена (около трех недель назад и работала) с _точной_ той же копией ISO-образа ОС и _точно_ тем же оборудованием.

Однако обновленное ядро, по-видимому, требует установки (и соответствия?) интернет-серверов, чтобы карта WiFi (Gen. 6) работала. (Замена Wi-Fi недоступна без дополнительных затрат. Сначала я установлю MS Windows.)

Поэтому мне нужна программа, которая будет загружать весь репозиторий с FTP-серверов в Интернете на USB-накопитель (в моем случае 270 ГБ) для автономной установки.

Конфигурация APT-MIRROR явно составлена ​​некомпетентно.

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

Как указать APT-MIRROR загружать в: /opt/apt-mirror?

Я обнаружил, что в этом руководстве отсутствуют необходимые командные строки.

Я проверил все логические места для загрузки файлов (/opt/apt-mirror & /tmp & /home/[USER] & /home/[USER]/Downloads), но они, кажется, просто исчезли.

Наблюдения и предложения:

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

Я думаю, что простой FTP [с его структурой каталогов], загруженный для каждой конкретной ОС (вариант и версия), будет намного проще для администрирования/обслуживания и поддержки конечных пользователей. Возможность выбора определенного места хранения (аналогично FTP-адресу, например: /media/USBDevice) во время установки ОС и обновлений ОС для пользователей в автономном режиме будет достаточно простой.

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

Это также позволит любой ОС загружать данные, необходимые для любой версии Unix/Linux, включая любые образы ISO, в одной простой программе (и, вероятно, уже доступной для большинства ОС сегодня).

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

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

Пример: я установил очень простой текстовый процессор, и он требовал устаревший «сетевой протокол»?! быть установлен вместе с ним. Ну, я бросил это быстро.

Вообще-то я полностью поддерживаю разнообразие (извините, у меня плохо с правописанием), но бесконечная головная боль зависимостей… АРГ!

Спасибо за ваше время.

Мы используем разные версии Ubuntu, т. е. 14, 16, 18 и 20. Для Ubuntu 14 у нас есть версии для настольных компьютеров, а другие — для серверов.

Как мы можем различать серверную и настольную ОС и как мы можем настроить локальное хранилище для обновления различных упомянутых версий?

Какую версию Ubuntu выбрать для локального сервера репозитория? Пожалуйста, предложите.

Привет, Матей Сезар, большое спасибо за этот замечательный урок, я закончил этот процесс, и теперь мой сетевой репозиторий работает очень хорошо.
но я также хочу добавить дополнительный пакет, отличный от репозитория mint и ubuntu по умолчанию, такого как google chrome, wpa office, короче говоря, мне нужен репозиторий, в котором я могу добавить свой собственный пакет deb или tar и установить его в свою сеть. жду вашего отличного ответа, заранее спасибо.

Я не рекомендую добавлять стороннее программное обеспечение в список apt-mirror, особенно несвободное программное обеспечение. Добавляйте только репозитории, поддерживаемые дистрибутивом. Насколько известно, Kingsoft Office не предоставляет никаких ppa для Ubuntu, только пакеты deb. Попробуйте скачать последние deb-пакеты для нужных вам приложений и поместить их в новый каталог на ftp-сервере (например, /srv/ftp/my_deb).

У меня есть 2 клиента Debian и один сервер Debian (резервный сервер). Позднее потребовалось менее 20 минут, чтобы перейти от Уизи к Джесси.
Как вы думаете, я сэкономлю пропускную способность, если создам репозиторий в основном для двух клиентов, учитывая, что при переходе от одной версии к другой мне придется снова загружать все пакеты новой версии.

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

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

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

перезапустите службу proftpd. теперь должно работать

У меня такая же проблема теперь, когда я перезапускаю службу, я получаю, что сайт недоступен, пожалуйста, помогите, как решить эту проблему?

Проверьте, запущена ли служба ftp и открыты ли соответствующие порты в брандмауэре.

Спасибо за ответ, теперь, когда я перезапустил службу ftp, служба работает, но теперь мой ftp://public ip не загружается. Пожалуйста, дайте мне знать в aws, какие порты мне нужно открыть. Я открыл порты 20 и 21 . Но безрезультатно.

Вы должны открыть пассивные входящие порты ftp. Обратитесь к файлу ftp conf, чтобы узнать диапазон пассивных портов, который вам нужно открыть на aws для вашего ftp-сервера (там должны быть указаны порты), или просто откройте весь входящий диапазон от 1024 до 65534. Кроме того, проверьте ftp://localhost, чтобы проверить, работает ли он. или используйте ssh-туннель для ftp-сервиса.

20,21 открыто входящие порты, 1024-65534 (или просто диапазон ftp) для исходящих.

Я запустил apt-mirror, и он загрузил кучу материала, пока все хорошо, но он создал только каталог ubuntu/pool, у меня нет необходимых каталогов, таких как ubuntu/dists, и это приводит к тому, что клиент сбой apt-получить обновление. Есть идеи, что может вызвать это и как это исправить?

Сталкиваюсь с той же проблемой. Пожалуйста, кто-нибудь предложите способ решить эту проблему.

Спасибо за отличный материал для чтения!
У меня не было возможности протестировать вашу установку в действии, но у меня есть одна установка с nginx в качестве репозитория веб-сервера. Его используют всего около 1000 клиентов, и он действительно быстрый.
Аппаратное обеспечение больше похоже на 2003–2004 года, но со своей задачей справляется безупречно.

Есть что сказать? Присоединяйтесь к обсуждению. Отменить ответ

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

Если вы упаковываете программное обеспечение для Debian Linux или (K)Ubuntu, иногда вам нужен не только один пакет, но вы должны предоставить зависимость, например библиотеку или что-то еще. Если этих зависимостей нет в официальных репозиториях, единственный способ выполнить эти зависимости — поместить ваш пакет в репозиторий.

Но что, если у вас нет разрешения на загрузку в основную/вселенную/мультивселенную? Итак, добавьте свои пакеты в среду pbuilder через локальный репозиторий apt-get.

В этом документе я опишу, как настроить локальный репозиторий apt-get, как загрузить его на корневой сервер через rsync и как изменить исходный список pbuilders.

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

Требования

  • построитель
  • вывод
  • мини-удаление
  • rsync

Установка

Установка pbuilder описана в PbuilderHowto, поэтому я не буду повторяться здесь. Другие инструменты, которые вы можете установить с помощью:

Конфигурация

Ну, вам нужно настроить инструменты dput и mini-dinstall. Я покажу вам, как выглядит моя конфигурация, чтобы вы могли настроить ее под свои нужды.

* Создайте файл $HOME/.dput.cf со следующим содержимым:

* Создайте необходимые каталоги

мини-удаление

Хорошо, это требует дополнительных пояснений, но сначала настройка:

* Создайте файл $HOME/.mini-dinstall.conf со следующим содержимым:

Готов к загрузке?

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

Допустим, что мы собираем пакеты для Ubuntu Breezy и они лежат в $HOME/myPackages/, вы должны увидеть после ls -la следующий листинг:< /p>

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

Что ж, если все прошло нормально, вы найдете в $HOME/archive/breezy/ это:

Это? Если нет, вернитесь к началу и повторите попытку

Изменение системы apt-get sources.list

Теперь вы готовы изменить список источников apt-get вашей локальной системы, чтобы сообщить ему о вашем локальном репозитории пакетов.

и добавьте к нему следующие строки (пожалуйста, замените $HOME на правильный путь к вашему дому):

После добавления этих двух строк обновите локальный кеш apt:

Вы должны увидеть, как apt читает ваш локальный репозиторий.

Если это работает, давайте внесем изменения в вашу среду pbuilder

Настройка Pbuilder для использования вашего репозитория

Что ж, если вы следовали PbuilderHowto, у вас должен быть каталог вида /etc/pbuilder/apt.config/. В этом каталоге также находится копия старого файла sources.list вашей системы.

Вы должны знать, что pbuilder работает в среде chroot, поэтому он ничего не знает о вашем каталоге $HOME. Это означает, что вам нужно настроить удаленный репозиторий для ваших пакетов.

Если у вас есть собственный сервер

У меня есть корневой сервер (хорошо, он работает с Gentoo, но какого черта ;)) и я использую веб-сервер Apache, поэтому я настраиваю виртуальный хост для своего собственного репозитория пакетов.< /p>

Если вы уже знаете магию rsync, вам будет легко это сделать, не запуская демон rsync. SSH + rsync — хорошие друзья

Хорошо, пришло время синхронизировать локальное с удаленным, попробуйте следующее:

Синхронизация завершена. Легко, не так ли?

Если у вас виртуальный хостинг

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

хорошо, теперь у вас есть собственный удаленный репозиторий пакетов. Пришло время настроить среду pbuilder.

Изменения в среде pbuilder

Хорошо, vi /etc/pbuilder/apt.config/sources.list

и добавьте эти две строки (замените своим URL)

сохраните его и обновите pbuilder:

Вы должны увидеть, как apt-get обновляется внутри своего кэша pbuilders.

Наконец-то

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

Если что-то непонятно, оставьте комментарий с помощью функции комментариев на этой странице.

LocalAptGetRepository (последний удаленный пользователь klynch 29.01.2010 08:02:51)

Материалы этой вики доступны по бесплатной лицензии, подробности см. в разделе Авторские права / Лицензия
Вы можете внести свой вклад в эту вики, подробности см. в Руководстве по вики

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

Я не думаю, что это дубликат. Чего Maythux хочет достичь, так это создать свой собственный сервер репозитория для использования с aptitude. Что делает Keryx, так это заменяет aptitude в качестве менеджера пакетов и создает внешние источники для пакетов.

10 ответов 10

Чтобы настроить простой репозиторий для себя, выполните 4 шага

1.Установите dpkg-dev
2.Поместите пакеты в каталог
3.Создайте сценарий, который будет сканировать пакеты и создавать файл обновления apt-get, может читать
4. Добавьте в свой sources.list строку, указывающую на ваш репозиторий

Установите dpkg-dev

Введите терминал

Каталог

>

Создайте каталог, в котором вы будете хранить свои пакеты. В этом примере мы будем использовать /usr/local/mydebs.

Теперь переместите ваши пакеты в только что созданный каталог.

Ранее загруженные пакеты обычно хранятся на вашем system в каталоге /var/cache/apt/archives. Если вы установили apt-cacher, дополнительные пакеты будут храниться в его каталоге /packages.

Скрипт update-mydebs

Это простой трехстрочный код:

Вырежьте и вставьте вышеприведенное в gedit и сохраните как update-mydebs в ~/bin. (тильда '~' означает ваш домашний каталог. Если ~/bin не существует, создайте его: Ubuntu поместит этот каталог в ваш PATH. Это хорошее место для размещения личных скриптов). Затем сделайте скрипт исполняемым:

dpkg-scanpackages просматривает все пакеты в mydebs, а результат сжимается и записывается в файл (Packages.gz), который может прочитать apt-get update (см. ниже). для ссылки, которая объясняет это в мучительных деталях). /dev/null — пустой файл; это замена файла переопределения, который содержит некоторую дополнительную информацию о пакетах, которая в данном случае на самом деле не нужна. См. deb-override(5), если хотите узнать об этом.

Sources.list

добавьте строку

в ваш /etc/apt/sources .list, и все готово.

Вариант компакт-диска

Вы можете записать каталог, содержащий deb, на компакт-диск и использовать его в качестве репозитория (удобно для обмена между компьютерами ). Чтобы использовать компакт-диск в качестве репозитория, просто запустите

Используя репозиторий

Каждый раз, когда вы помещаете новый deb в каталог mydebs, запускайте

Теперь ваши локальные пакеты можно манипулировать с помощью Synaptic, aptitude и команд apt: apt-get, apt-cache и т. д. Когда вы пытаетесь установить apt-get, любые зависимости будут разрешены для вас, если они могут быть удовлетворены.

Плохо сделанные пакеты, скорее всего, потерпят неудачу, но вы не переживете ад dpkg.

Не могли бы вы объяснить синтаксис строки dpkg-scanpackages . /dev/ноль | gzip -9c > Packages.gz . Что там делает /dev/null. Я также читал справочную страницу, но она не совсем ясна.

@blade19899 Мне нужно небольшое пояснение, пожалуйста. Мне нужен репозиторий с несколькими избранными пакетами, а не со всеми пакетами, к которым я когда-либо прикасался. Я прав, что эта техника даст мне эту способность? Цель здесь состоит в том, чтобы иметь репозиторий, который группа установки программного обеспечения может использовать в изолированной локальной сети, вдали от соблазна получить ненужное.

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