Есть ли простой способ настроить apt-get для оптимизации загрузок с использованием локального apt-mirror, если он доступен?

Есть ли простой способ настроить apt-get для оптимизации загрузок с использованием локального apt-mirror, если он доступен?

У меня есть ноутбук и локальная копия нескольких репозиториев на внешнем жестком диске, подключенном к моему маршрутизатору. Мой маршрутизатор предоставляет доступ к этим файлам (с учетными данными) как к общим папкам samba и/или ftp-серверу.

Я хотел бы настроить apt-get для проверки этих репозиториев, когда они доступны, и загрузки из них обновлений, чтобы ускорить процесс, когда это возможно.

Чтобы быть более ясным: я хочу, чтобы apt-get проверял как обычные репозитории в интернете, так и мой локальный, когда мой ноутбук подключен к моему Wi-Fi. Если файлы во внешних репозиториях новее, чем в моем локальном зеркале или если зеркало недоступно, apt-get должен загрузить файлы из интернета.

решение1

4 шага для создания собственного репозитория

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

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

Откройте терминал:

sudo apt-get install dpkg-dev

Справочник

Создайте каталог для хранения ваших пакетов. Для этого примера мы будем использовать /usr/local/lan-repo.

sudo mkdir -p /usr/local/lan-repo

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

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

Создайте скрипт с именемupdate-lan-repo

Это очень простой скрипт из трех строк:

#! /bin/bash
cd /usr/local/lan-repo
sudo dpkg-scanpackages . /dev/null | gzip -9c > packages.gz

Скопируйте и вставьте указанное выше в ваш любимый текстовый редактор и сохраните как update-lan-repo. ~/bin( ~означает домашний каталог. Если ~/binего еще нет, создайте его. Ubuntu автоматически добавит этот каталог в ваш PATH. Это делает его хорошим местом для размещения личных скриптов.)

Теперь сделаем скрипт исполняемым:

chmod u+x ~/bin/update-lan-repo

Вот как работает этот скрипт:

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

Нам нужно добавить ваш локальный репозиторий в ваш файл sources.list

echo "deb file:/usr/local/lan-repo ./" >> /etc/apt/sources.list

и все готово.

Опция CD/DVD

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

просто выполните команду:

sudo apt-cdrom add

с использованием нового репозитория.

Затем всякий раз, когда вы сохраняете новый пакет Debian в каталоге lan-repo, запускайте:

sudo update-lan-repo
sudo apt-get update

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

решение2

Мне наконец-то удалось решить эту проблему, и она работает довольно хорошо, поэтому я хочу поделиться ею с людьми, которые хотят реализовать что-то подобное.

Моя первая проблема заключалась в том, что моя система поддерживает многоархитектурность, поэтому зеркалированные репозитории должны содержать как пакеты i386, так и amd64 (я не зеркалировал исходники), чтобы избежать ошибок загрузки. Это делается в/etc/apt/mirror.listкак показано в этом примере:

deb-i386  http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse

Мойбазовый_путьОпределено в этом файле/mnt/apt-зеркалаи запускаю скрипт, который монтирует внешний жесткий диск, подключенный к USB-порту моего маршрутизатора, как общий ресурс Samba (скрипт можно увидеть здесь: как использовать apt-mirror для сохранения файлов на жестком диске, подключенном к маршрутизатору локальной сети

Я хотел получить доступ к зеркальным репозиториям с других компьютеров в локальной сети, поэтому другой частью решения является добавление определений FTP-репозиториев.в началев/etc/apt/sources.list. Эта установка делаетapt-getдля использования FTP-репозиториев в первую очередь при загрузке файлов, а затем тех, которые определены в/etc/apt/sources.list.d, при условии, что зеркальные копии обновлены.

Локальные репозитории определяются следующим образом:

deb [arch=amd64,i386] ftp://user:password@lan-resource/apt-mirrors/mirror/archive.ubuntu.com/ubuntu trusty main restricted universe multiverse

где вы заменяетепользовательс именем пользователя, которому предоставлен доступ к FTP-серверу,:парольс паролем, если требуется для подключения (в противном случае удалите), иlan-ресурсс адресом FTP-сервера в вашей локальной сети (я решил отредактировать/etc/хостычтобы избежать повторения жестко закодированного IP-адреса, где я определил 192.168.0.1 какlanftpсервердля использования в этой области).

Связанный контент