Иногда сервер или рабочая машина не имеет прямого доступа в интернет. Но поставить нужный софт все же нужно. Решение: собрать локальный оффлайн инсталлятор из уже установленных пакетов и их зависимостей.
▪️ Установка dpkg-repack. На машине с интернетом:
sudo apt install dpkg-repack
▪️ Репак пакета в .deb. Если пакет уже стоит в системе:
dpkg-repack htop
# создаст htop_3.0.5-1_amd64.deb
▪️ Репак с зависимостями. Чтобы вытащить пакет + его зависимости:
mkdir offline-installer && cd offline-installer
# пример для nginx
for pkg in $(apt-cache depends --recurse --no-recommends --no-suggests \
--no-conflicts --no-breaks --no-replaces --no-enhances \
nginx | grep "^\w"); do
dpkg-repack "$pkg"
done
▪️ Итог - "папка-инсталлятор". В каталоге будут все нужные .deb:
ls *.deb
nginx_1.24.0-1_amd64.deb
libpcre3_2:8.39-13_amd64.deb
libssl1.1_1.1.1n-0+deb11u5_amd64.deb
...
▪️ Установка на оффлайн серваке. Переносим папку, потом:
sudo dpkg -i *.deb
sudo apt -f install # подтянет зависимости из локальных .deb
Можно превратить папку в локальный APT-репозиторий:
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
и подключить его через sources.list.
BashTex 📱 #bash #utils