Я хотел бы создать свой локальный репозиторий в своей локальной сети, чтобы машины в локальной сети могли обновляться и обновляться с него. Я хочу загрузить пакеты и сохранить их на своем локальном сервере, чтобы я мог обновлять, обновлять, устанавливать и т. Д. С него, не используя Интернет.
apt
repository
grooveplex
источник
источник
Ответы:
Из справочной вики Ubuntu :
источник
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
. Что/dev/null
там происходит. Я тоже читал справочную страницу, но это было не совсем понятно.* Сделать автономный репозиторий по локальной сети *
Установить локальный веб-сервер Apache
По умолчанию пакет Apache Debian настроит веб-сайт
/var/www
в вашей системе. Для наших целей это нормально, поэтому нет причин делать что-либо еще. Вы можете легко протестировать его, указав свой любимый браузер на.http://localhost
Вы должны увидеть веб-страницу по умолчанию после установки, которая фактически хранится в папке/var/www/index.html
Создать каталог репозитория пакетов Debian, выбранной
для создания каталога.
/var/www/debs
за это. Под ним вы должны создать «архитектурные» каталоги, по одному для каждой архитектуры, которую вам нужно поддерживать. Если вы используете только один компьютер (или тип компьютера), то вам понадобится только один - обычно «i386» для 32-разрядных систем или «amd64» для 64-разрядных. Если вы используете какую-то другую архитектуру, я предполагаю, что вы, вероятно, уже знаете об этом. Теперь просто скопируйте файлы пакета ".deb" для данной архитектуры в соответствующие каталоги. Если вы сейчасhttp://localhost/debs/amd64
укажете свой любимый веб-браузер на (например), вы увидите список пакетов для 64-битных систем.Создайте файл Packages.gz
Теперь нам нужно создать файл каталога для использования APT. Это делается с помощью утилиты dpkg-scanpackages. Вот'
Сделайте хранилище известным для APT
Теперь осталось только сообщить APT о вашем хранилище. Вы делаете это, обновляя файл /etc/apt/sources.list. Вам понадобится такая запись:
Я использовал фактическое имя хоста моей системы вместо localhost - таким образом, код одинаков для всех компьютеров в моей локальной сети, но localhost будет хорошо работать, если вы используете только один компьютер.
Теперь обновите APT:
источник
/var/www/debs
в этом ответе вам может потребоваться заменить на/var/www/html/debs
. Или вам понадобятся дополнительные шаги, чтобы вручную отредактировать вашу конфигурацию apache/etc/apache2
Создание аутентифицированного репозитория
Я посмотрел ответы здесь и на других сайтах, и у большинства из них (ИМХО большой) недостаток в том, что вы устанавливаете хранилище без аутентификации. Это означает, что вам нужно запустить
apt-get
с помощью--allow-unauthenticated
установки пакетов из него. Это может быть угрозой безопасности, особенно в сценариях, где устанавливаемые вами пакеты могут быть не все из вашего локального репозитория.Обратите внимание, что я здесь не описал, как сделать его доступным через локальную сеть, но это довольно общая конфигурация с использованием Apache или nginx (см. Другие ответы здесь).
Настройте каталог репо
Затем добавьте следующую строку
sources.list
:Добавление и удаление пакетов
удалить пакеты
добавить пакеты
Теперь запустите следующий скрипт, который генерирует файлы Packages, Release и InRelease и подписывает их закрытым ключом gpg:
Пример Содержимое файла conf / distribution
Origin: My_Local_Repo Label: My_Local_Repo Codename: xenial Architectures: i386 amd64 Components: main Description: My local APT repository SignWith: 12345ABC
связи
https://wiki.debian.org/RepositoryFormat
http://ubuntuforums.org/showthread.php?t=1090731
https://help.ubuntu.com/community/CreateAuthenticatedRepository
источник
date -Rc
, я исправил его,date -Ru
предполагая, что это то, что вы имели в виду из описания редактированияВы также можете настроить локальный исходный сервер с помощью nginx иprepro:
Установить пакеты Debian
создайте каталоги для редактора и редактируйте его
/ SRV / reprepro / убунт / CONF / Распределение
/ SRV / reprepro / убунту / CONF / опции
Включите его в репрепро, соберите
Конфиг nginx:
/etc/nginx/sites-available/vhost-packages.conf
Оптимизировать размер ковша:
/etc/nginx/conf.d/server_names_hash_bucket_size.conf
Ссылка на руководство по установке Ссылка
источник
Возможно, вы захотите взглянуть на
apt-mirror
иapt-cacher
.Вот руководство о том, как установить и использовать его.
источник
Инструкции в ответе @ BigSack и официальном вики-посте Ubuntu не работали для меня в Ubuntu 18.04, пока я не сделал эти два изменения:
Создать простой несжатый
Packages
файл (при его выполнении рабочий каталог должен находиться там, где расположены все пакеты)Добавьте следующую запись в
/etc/apt/sources.list
источник
Читать дальше
1 Источник: создание репозитория Ubuntu.
источник
Чтобы сделать автономный локальный репозиторий
1. сделать каталог доступным (по крайней мере, root)
источник
Я пытался использовать,
apt-rdepends
как в выбранном ответе, но когда я попытался установить пакет из моего локального репозитория, он жаловался на отсутствие зависимостей.apt-rdepends
не перечислял некоторые зависимости для моего пакета. Я подозреваю, что это как-то связано с тем, чтоapt-cache show
показывает несколько записей для него.Вместо этого я использовал
apt-cache depends
, и это сделало трюк:Получение рекурсивного списка зависимостей
-i
: только важные зависимости--recurse
: рекурсивныйПреврати его в легко усваиваемый список
| tr -d "|,<,>, "
| sed -e 's/^Depends://g' | sed -e 's/^PreDepends://g'
| sort
| uniq > list.txt
Завершить команду:
Скачать пакеты
Просканируйте пакеты и превратите их в Packages.gz
источник
Я сделал с помощью apt-mirror.
Это хорошо, но вам нужно больше места на жестком диске, поскольку он будет синхронизироваться с сервером репозитория.
источник