Создание аутентифицированного репозитория
Я рассмотрел ответы здесь и на других сайтах, и большинство из них (недостаток IMHO) - это то, что вы настраиваете не прошедший проверку подлинность репозиторий. Это означает, что вам нужно запустить apt-get с помощью --allow-unauthenticated, чтобы установить из него пакеты. Это может быть угрозой безопасности, особенно в сценариях, где пакеты, которые вы устанавливаете, могут быть не все из вашего локального репозитория.
Обратите внимание, что я не рассматривал здесь, как сделать его доступным через локальную сеть, но это довольно общая конфигурация, использующая Apache или nginx (см. другие ответы здесь).
Установите каталог репо
mkdir /home/srv/packages/local-xenial
cd /home/srv/packages/local-xenial
Затем добавьте строку, подобную этой, в sources.list: [ ! d6]
deb file:/home/srv/packages/local-xenial/ ./
Создание аутентифицированного репозитория
Установить каталог репо
rm /home/srv/packages/local-xenial/some_package_idont_like
добавить пакеты
cp /some/dir/apackage.deb /home/srv/packages/local-xenial
Добавить пакеты
#!/bin/bash
if [ -z "$1" ]; then
echo -e "usage: `basename $0` DISTRO
where DISTRO is the Ubuntu version codename (e.g. 14.04 is trusty)\n
The way to use this script is to do the changes to the repo first, i.e. delete or copy in the .deb file to /srv/packages/local-DISTRO, and then run this script\n
This script can be run as an unprivileged user - root is not needed so long as your user can write to the local repository directory"
else
cd /srv/packages/local-"$1"
# Generate the Packages file
dpkg-scanpackages . /dev/null > Packages
gzip --keep --force -9 Packages
# Generate the Release file
cat conf/distributions > Release
# The Date: field has the same format as the Debian package changelog entries,
# that is, RFC 2822 with time zone +0000
echo -e "Date: `LANG=C date -Ru`" >> Release
# Release must contain MD5 sums of all repository files (in a simple repo just the Packages and Packages.gz files)
echo -e 'MD5Sum:' >> Release
printf ' '$(md5sum Packages.gz | cut --delimiter=' ' --fields=1)' %16d Packages.gz' $(wc --bytes Packages.gz | cut --delimiter=' ' --fields=1) >> Release
printf '\n '$(md5sum Packages | cut --delimiter=' ' --fields=1)' %16d Packages' $(wc --bytes Packages | cut --delimiter=' ' --fields=1) >> Release
# Release must contain SHA256 sums of all repository files (in a simple repo just the Packages and Packages.gz files)
echo -e '\nSHA256:' >> Release
printf ' '$(sha256sum Packages.gz | cut --delimiter=' ' --fields=1)' %16d Packages.gz' $(wc --bytes Packages.gz | cut --delimiter=' ' --fields=1) >> Release
printf '\n '$(sha256sum Packages | cut --delimiter=' ' --fields=1)' %16d Packages' $(wc --bytes Packages | cut --delimiter=' ' --fields=1) >> Release
# Clearsign the Release file (that is, sign it without encrypting it)
gpg --clearsign --digest-algo SHA512 --local-user $USER -o InRelease Release
# Release.gpg only need for older apt versions
# gpg -abs --digest-algo SHA512 --local-user $USER -o Release.gpg Release
# Get apt to see the changes
sudo apt-get update
fi
Пример Содержание файла conf / distributions
Origin: My_Local_Repo Label: My_Local_Repo Codename: xenial Architectures: i386 amd64 Components: main Description: My local APT repository SignWith: 12345ABC
Пример Содержание файла conf / distributions
https://wiki.debian.org/RepositoryFormat
https: // wiki .debian.org / RepositoryFormat
https://help.ubuntu.com/community/CreateAuthenticatedRepository