Могу ли я легко создать «зеркало» хоста, которое кэширует загруженные пакеты Debian?

#!/bin/sh

# command that checks opk version number
#set -e

VERSION=3
version ()
{
  echo
  echo "`basename $1` version $VERSION"
  echo "command that checks opk version number"
  echo

  exit 0
}

usage ()
{
  echo "
Usage: `basename $1` <options> [ files for install partition ]

Mandatory options:
  --opk_file         file name (e.g ./my_package.opk)

Optional options:
  --version             Print version. 
"
  exit 1
}


# Process command line...
while [ $# -gt 0 ]; do
  case $1 in
    --help | -h)
      usage $0
      ;;
    --opk_file) shift; opk_file=$1; shift; ;;
    --version) version $0;;
    *) copy="$copy $1"; shift; ;;
  esac
done

test -z $opk_file && usage $0
###########################
end parsing command line
###########################
ar -x $opk_file control.tar.gz    #extract control.tar.gz from .opk
tar -zxvf control.tar.gz ./control > /dev/null 2>&1
# extract control file from control.tar.gz, silent stderr/stdout
cat control |grep Version | sed -e "s/Version:\s*\(\d*\)\D*/\1/"
# grep Version keyword and remove it
rm control
rm control.tar.gz
# clean up

Использование:

opkversion.sh --opk_file ./mypackage.opk

Пример вывода:

9999

Настройте команду sed , чтобы изменить политику фильтрации команды (номер версии пакета opk может быть очень сложным).

6
06.08.2017, 02:06
2 ответа

Поскольку у меня есть локальный кеш deb для сервера моей фермы серверов Debian, я предпочитаю использоватьapt-cacher-ng(кеширующий прокси-сервер для репозиториев программного обеспечения)

Это прокси-сервер, специально поддерживающий APT/deb, достаточно настраиваемый и может кэшировать ваши файлы deb на довольно долгое время (настраиваемый ).

Вы устанавливаете его с помощью:

apt-get install apt-cacher-ng

И по умолчанию кэширует репозитории/deb-файлы в /home/apt-cacher-ng. В этом каталоге он создает каталог для каждого репозитория, используемого на ваших серверах Debian/Ubuntu, а затем используемые дистрибутивы, что очень похоже на зеркальные структуры. В качестве дополнительного бонуса также гораздо проще вручную получить deb из кеша отсюда, чем с сервера Squid.

Чтобы использовать его на всех ваших серверах, добавьте в директорию /etc/apt/apt.conf.dфайл 02proxyс содержимым:

Acquire::http { Proxy "http://your_proxy_APT_server:3142"; };

После того, как вы добавите этот файл, менеджер пакетов Debian будет проксировать все настроенные репозитории через настроенный прокси http APT.

Он также получил интересную страницу статистики для просмотра его деятельности.

Вам также может понадобиться открыть 3142/TCP в ваших брандмауэрах, чтобы позволить серверам обмениваться данными с вашим новым прокси-сервером APT.

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

Как описано в Приложении B к Официальному руководству по установке , вы можете заставить свой DHCP-сервер выдавать файл preseed, добавив что-то подобное в его конфигурацию:

if substring (option vendor-class-identifier, 0, 3) = "d-i" {
    filename "http://host/preseed.cfg";
}

Затем, используя эти параметры preseed,вы можете настроить зеркало и прокси автоматически:

d-i mirror/protocol string http
d-i mirror/country string manual
d-i mirror/http/hostname string http.us.debian.org
d-i mirror/http/directory string /debian
d-i mirror/http/proxy string http://your_proxy_APT_server:3128/

См. также:Как настроить сервер кэширования Apt в Ubuntu или Debian

9
20.08.2021, 11:34

редактировать:Подход к предварительному заполнению, который я отредактировал в Ответ Руи Ф. Рибейро также работает со Squid или любым другим прокси-сервером, и (пока вы используете DHCP ), вероятно, лучший подход.


Во-первых, mirrorбудет дополнен именем системного домена, поэтому добавьте запись DNS для mirror.yourdomain.com. Укажите это на сервер с Apache; в этом примере на том же сервере работает Squid.

Убедитесь, что в Apache есть мод _прокси и мод _прокси _HTTP с включенным (например, a2enmod proxy; a2enmod proxy_httpв Debian ). Затем добавьте новый виртуальный хост:

<VirtualHost *:80>
    ServerName mirror.yourdomain.com
    ServerAlias mirror

    ProxyPass /debian http://http.us.debian.org/debian
    ProxyRemote http http://localhost:3128/
    ProxyVia off
</VirtualHost>

После перезапуска Apache загрузка пакетов с «зеркала» Debian должна проходить через кеш.

2
20.08.2021, 11:34

Теги

Похожие вопросы