Skip to main content

Создание локального репозитория

Установите inotify-tools, если еще не установлены:

sudo apt-get install inotify-tools
=================================================

Скрипт переноса файлов из кэша (script_cashe.sh):

---------

#!/bin/bash

WATCH_DIR="/var/cache/apt/archives"
DEST_DIR="/home/repo_local"

# Проверяем права доступа к каталогам
if [ ! -d "$WATCH_DIR" ]; then
    echo "Каталог $WATCH_DIR не существует. Проверьте путь."
    exit 1
fi

if [ ! -d "$DEST_DIR" ]; then
    echo "Каталог $DEST_DIR не существует. Создаем..."
    mkdir -p "$DEST_DIR"
fi

# Запускаем inotifywait для отслеживания событий в каталоге
inotifywait -m -e close_write,moved_to --format '%w%f' "$WATCH_DIR" | while read NEWFILE
do
    echo "Обнаружен файл: $NEWFILE"
    if [[ $NEWFILE == *.deb ]]; then
        BASENAME=$(basename "$NEWFILE")
        if [ ! -f "$DEST_DIR/$BASENAME" ]; then
            cp "$NEWFILE" "$DEST_DIR"
            if [ $? -eq 0 ]; then
                echo "Скопирован $NEWFILE в $DEST_DIR"
            else
                echo "Ошибка при копировании $NEWFILE"
            fi
        else
            echo "Файл $BASENAME уже существует в $DEST_DIR, пропускаем."
        fi
    fi
done

-----------------------------------------------------
=====================================================

Этот скрипт будет отслеживать появление новых .deb файлов в каталоге /var/cache/apt/archives и копировать их в каталог /home/repo_local.

После того как пакеты скопированы в /home/repo_local, можно создать локальный репозиторий. Для этого:

Установите dpkg-scanpackages (если еще не установлен):

sudo apt-get install dpkg-dev
-------------------------

Перейдите в каталог /home/repo_local и выполните следующие команды:

cd /home/repo_local
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
-------------------------

Добавьте локальный репозиторий в /etc/apt/sources.list или создайте файл в /etc/apt/sources.list.d/, например, localrepo.list с содержимым:

deb [trusted=yes] file:/home/repo_local ./
------------------------

Обновите список пакетов:

sudo apt-get update
------------------------

Теперь, при установке пакетов, apt будет использовать ваш локальный репозиторий, если там есть нужные пакеты. 
===================================================
===================================================

ВТОРОЙ ВАРИАНТ СОЗДАНИЯ РЕПОЗИТОРИЯ ИЗ СКОПИРОВАННЫХ ФАЙЛОВ
-------------------------------------------------------------
apt-get install dpkg-dev

Создайте директорию для локального репозитория
mkdir -p /var/local/repo

Скопируйте пакеты в эту директорию
cp /home/repo_local/*.deb /var/local/repo/

Создайте файл Packages.gz для репозитория
cd /var/local/repo
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz

Добавьте локальный репозиторий в sources.list:
Откройте файл /etc/apt/sources.list в текстовом редакторе с правами суперпользователя
mcedit /etc/apt/sources.list

Добавьте следующую строку в конец файла
deb [trusted=yes] file:/var/local/repo ./

Сохраните изменения и закройте редактор.
Обновите списки пакетов
apt update