Debian — Создание локального репозитория (apt-mirror). Как создать локальный репозиторий APT? Ubuntu локальный репозиторий

Постепенный перевод предприятия на GNU/Linux порождает необходимость соответствующих изменений в инфраструктуре. Сегодня мы решаем проблему глобального обновления клиентских машин путем создания локального репозитория. Процесс изначально документировался как памятка на будущее, потому заранее прошу прощенья за возможные несуразности в тексте. Итак.
Для начала следует определиться, посредством чего лучше сделать это. Интернеты выделяют двух фаворитов rsync и debmirror . Выбрал последний, ввиду его большей гибкости.

1. Получение ключей

Для создания зеркала репозитория необходимо получить ключ «Ubuntu Archive Automatic Signing Key ». Для этого в терминале от суперюзера вводим:
gpg --no-default-keyring --keyring trustedkeys.gpg --recv-keys 437D05B5

2. Подготовка пространства

Создаем папку для репозитория:
sudo mkdir /path/to/repository
Важно! Потрудитесь проследить за наличием свободного места в указанном пути. Даже две архитектуры i386 и amd64 займут приличное его количество.

3. Получение пакетов

Зеркалирование проходит в три этапа:
  • Удаление неизвестных файлов (отключается опцией --nocleanup ниже);
  • Построение списка по индексным архивам и проверка на наличие в локальном репозитории.Для реализации вышеперечисленного создадим файл repo_update.sh со следующим содержанием.
  • #!/bin/sh
    #Это конфигурация нашего репозитория. В зависимости от параметров, указанных
    #здесь, мы получим нужное нам его содержимое.

    #Опция cleanup. Включена по умолчанию. После закачки пакетов удаляет ранние
    #версии. Для отключения опции необходим параметр --nocleanup
    clean=--nocleanup
    #Опция source. Закачивает исходные коды пакетов. Если вы не пользуетесь
    #исходными кодами для изучения и модификации приложений (что свойственно для
    #бинарных дистрибутивов), смело ставьте опцию --no-source
    src=--source

    #Host. Имя сервера, откуда мы берем пакеты.
    servername=mirror.yandex.ru

    #Root. Корневая директория на выбранном нами сервере.
    rdir=/ubuntu

    #Имя релиза Ubuntu. Настройки для 10.04 версии.
    release=lucid,lucid-backports,lucid-proposed,lucid-security,lucid-updates

    #Секции.
    section=main,restricted,universe,multiverse

    #Протокол синхронизации. Debmirror поддерживает следующие способы: http,
    #hftp, ftp, rsync
    sync_protocol=rsync

    #Архитектура. Если используются исключительно 32 или 64х битные системы.
    #Одну из архитектур можно убрать. Также если используются иные архитектуры,
    #их следует добавить.
    arch=i386,amd64

    #Местоположение репозитория. Указывайте локальную папку, созданную. в п 2.
    path=/path/to/repository

    Debmirror --progress --verbose $clean $src --md5sums --host=$servername --root=$rdir \
    --dist=$release -s=$section --method=$sync_protocol -a=$arch $path

    Теперь поместим его в директорию /usr/local/bin и сделаем исполняемым.
    chmod +x repo_update.sh
    sudo cp repo_update.sh /usr/local/bin/

    Далее запустим получившийся скрипт и дождемся завершения процесса. Процесс достаточно долгий. Время выполнения сильно зависит от ширины вашего интернет-канала.
    sudo /usr/local/bin/repo_update.sh
    Внимание! Размер скачиваемого переваливает за десятки гигабайт, а казеный интернет редко бывает безлимитным. Более того, debmirror чувствителен к стабильности соединения, 120 секунд простоя и все придется начинать сначала.

    4. Настройка web-сервера

    Дабы не совершать лишних плясок с бубном выберем протокол http , как традиционный метод предоставления доступа к репозиторию. Выбор web-сервера остается за Вами. Из фаворитов ngnix , apache и lighttpd , выбрал последний ввиду отсутствия опыта работы с оным (приятное с полезным, да). Итак.

    Установка сервера.

    Sudo apt-get install lighttpd
    Здесь все просто. Если Вы не планируете использовать в качестве www директории отличную от умолчания, то сервер в настройке не нуждается. Все, что сам нужно сделать, это создать символьную ссылку в директории /var/www
    ln -s /path/to/repository /var/www/ubuntu

    Проверим доступность репозитория из браузера: http:///ubuntu/

    5. Настройка клиентов

    Здесь мы применим маленькую хитрость. Дабы не вносить изменений в /etc/apt/sources.list  (мало ли что случится). Добавим в файл /etc/hosts пару строчек.
    ru.archive.ubuntu.com
    security.ubuntu.com
    Примечание. При наличии DNS сервера можно все это прописать в нем, а на сервере репозитория прописать истинные адреса вышеупомянутых имен.

    6. Автоматизация

    А теперь самое сладкое. Заставим все это крутиться самостоятельно.
    6.1 Серверная часть
    В пункте #3 мы создавали скрипт, при помощи которого получали пакеты. Настроим его автозапуск средствами демона cron .
    sudo crontab -e

    В который добавим заветную строчку:

    0 0 * * * /usr/local/bin/repo_update.sh
    Теперь ежедневно в 0:00 наш скрипт будет делать за нас всю рутинную работу.

    6.2 Клиентская часть
    На клиентах создадим скрипт system_upd.sh в директории /usr/local/bin следующего содержания:
    #!/bin/sh
    apt-get -y update && apt-get -y upgrade && apt-get -y clean

    Не забудем сделать его исполняемым.
    sudo chmod +x /usr/local/bin/system_upd.sh

    После чего открываем cron :
    sudo crontab -e

    И добавляем строчку:
    40 17 * * * /usr/local/bin/system_upd.sh

    Теперь каждый день в 17:40 система будет опрашивать наш репозиторий на предмет наличия обновлений и обновляться, если таковые будут найдены.

    Внимание! При работе с crontab следует не забывать, что после строчек с заданиями обязательно должна быть пустая строка, которая обозначается знаком "# ".
    p.s : Прошу прощения за отсутствие прилагаемых изображений, но в данном случае считаю их наличие просто неуместным.

    Вместо использования dpkg -i package_name.deb для установки, можно создать локальный репозиторий для пакетов, принесенных на флешке или другом носителе, а потом использовать synaptic/kynaptic (или apt-get install package_name).

    1. Все действия лучше проводить как root

    sudo su

    2.Теперь установите пакет dpkg-dev. Он будет содержать утилиту dpkg-scanpackages, которая нам и нужна.

    apt-get install dpkg-dev

    3.Поместите все.deb пакеты в директорию например, /myrepo (причем не непосредственно в эту директорию, а в поддиректории, расположенные в этой директории)

    4. Выполните

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

    5. Теперь нужно внести новый репозиторий в /etc/apt/sources.list. Вставьте в /etc/apt/sources.list строчку (лучше вставить ближе к началу, т.к. apt-get (synaptic/kynaptic) ставит более высокий приоритет источнику, находящемуся раньше остальных)

    deb file:/myrepo ./

    6. Обновление списка репозиториев

    apt-get update

    Если изменится содержимое директории с пакетами, повторите шаги 1,4.

    Если вы системный администратор, то вам нужно часто устанавливать новый софт, обновления безопасности и другие патчи в ваших системах. Если бы компьютер был один, то это бы не вызвало проблем, но обычно в сети несколько компьютеров и всем им нужны обновления. Это может снизить пропускную способность сети. В каждой системе приложения будут скачиваться и устанавливаться непосредственно из репозиториев Ubuntu.

    Но есть выход, можно сохранить все приложения на сервере в локальной сети, а затем распространять их на другие компьютеры этой сети когда потребуется. Локальный репозиторий Ubuntu - действительно быстрый и эффективный способ развертывания приложений, так как все необходимые приложения будут мгновенно получены с локального сервера на большой скорости. Таким образом, можно снизить трафик интернет и в итоге уменьшить ежегодные расходы на оплату интернета.

    В этой инструкции я расскажу как настроить локальный репозиторий Ubuntu 16.04 двумя способами.

    В этом способе мы скачаем все пакеты из публичного репозитория на жесткий диск сервера Ubuntu. Сначала нужно установить веб-сервер Apache. Он необходим для распространения пакетов по локальной сети:

    sudo apt-get install apache2

    Теперь установите apt-mirror:

    sudo apt-get install apt-mirror

    Создайте директорию куда будут скачиваться все пакеты:

    sudo mkdir /myrepo

    Теперь откройте файл /etc/apt/mirror.list и добавьте следующую строчку:

    sudo vi /etc/apt/mirror.list

    ############ config ##################
    #
    # set base_path /var/spool/apt-mirror

    set base_path /myrepo

    Здесь /myrepo - адрес только что созданной папки. Также в этом конфигурационном файле можете указать репозитории, которые хотите использовать, мы будем использовать стандартные, но вы можете добавить и PPA. Если вы хотите использовать обе архитектуры и x64 и x32, репозитории для них нужно указать в файле отдельно.

    Например, для x32 строчка будет начинаться deb-i386 а для х64: deb-amd64. Когда завершите с настройкой запустите загрузку пакетов командой:

    В терминал будет выведено что-то вроде:

    Downloading 162 index files using 20 threads...
    Begin time: Wed Aug 5 16:09:16 2015
    ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...

    Сейчас все пакеты из публичного репозитория Ubuntu загружаются и сохраняются в локальной папке. В нашем случае в папке /myrepo. В зависимости от вашей скорости интернет это может занять несколько часов. Отменить загрузку можно в любое время, когда вы ее возобновите она продолжится там, где вы ее прервали.

    Не нужно вручную запускать эту команду каждый день для обновления репозитория, можно запланировать задание Cron. Для этого раскоментируйте следующую строчку в файле /etc/cron.d/apt-mirror:

    sudo vi /etc/cron.d/apt-mirror

    # Regular cron jobs for the apt-mirror package
    #
    0 4 * * * apt-mirror /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log

    В этом примере Cron будет запускать обновление пакетов в четыре утра каждый день.

    После заввершения загрузки проверим есть ли пакеты в каталоге /myrepo

    Теперь нужно сделать пакеты доступными по сети. Для этого создадим символическую ссылку:

    sudo ln -s /myrepo/mirror/us.archive.ubuntu.com/ubuntu/ ubuntu

    Конфигурация клиентов

    Настройка на клиентской машине не вызовет никаких трудностей. Просто откройте файл /etc/apt/sources.list и добавьте свой локальный репозиторий, так же как вы добавляли удаленный, только используйте ваш ip адрес вашей машины:

    sudo vi /etc/apt/sources.list

    [...]
    deb http://192.168.1.102/ubuntu trusty universe
    deb http://192.168.1.102/ubuntu trusty main restricted
    deb http://192.168.1.102/ubuntu trusty-updates main restricted
    [...]

    Вот и все, здесь 192.168.1.102 - адрес сервера с репозиторием. Теперь обновим списки пакетов:

    sudo apt-get update

    Для установки программы достаточно выполнить стандартную команду:

    sudo apt-get install package-name

    Настройка apt-mirror ubuntu 16.04 завершена. Теперь клиентам не нужно подключение к интернету для загрузки пакетов. Они будут получать все пакеты и обновления с локального репозитория Ubuntu.

    Способ 2: APT-Cacher

    Создание локального репозитория ubuntu возможно не только одним способом. Apt-cacher немного отличается от apt-mirror. Он не скачивает все пакеты из репозитория, а только сохраняет и делает доступными для всех, те которые были один раз запрошены.

    Сначала установите сервер Apache:

    sudo apt-get install apache2

    Затем apt-cahcer:

    sudo apt-get install apt-cacher

    Выберите способ запуска - daemon и нажмите ок:

    Теперь нужно отредактировать /etc/default/apt-cacher, установив параметр autostart в 1.

    sudo vi /etc/default/apt-cacher

    apt-cacher daemon startup configuration file

    # Set to 1 to run apt-cacher as a standalone daemon, set to 0 if you are going
    # to run apt-cacher from /etc/inetd or in CGI mode (deprecated). Alternatively,
    # invoking "dpkg-reconfigure apt-cacher" should do the work for you.
    #
    AUTOSTART=1

    # extra settings to override the ones in apt-cacher.conf
    # EXTRAOPT=" daemon_port=3142 limit=30 "

    Также можно настроить с каких ip можно будет получить доступ к кэшу, для этого откройте файл /etc/apt-cacher/apt-cacher.conf и отредактируйте соответствующую строчку: Например, разрешим подключение только компьютерам с ip от 192.168.1.20 до 192.168.1.30:

    sudo vi /etc/apt-cacher/apt-cacher.conf

    [...]
    ## Uncomment and set the IP range ##
    allowed_hosts = 192.168.1.20 - 192.168.1.30
    #denied_hosts =
    [...]

    После завершения настроек перезапустите apache:

    sudo systemctl restart apache2

    sudo service apache2 restart

    Настройка на стороне клиента

    Создайте файл sudo nano /etc/apt/apt.conf.d/01proxy и добавьте в него следующую строчку:

    sudo nano /etc/apt/apt.conf.d/01proxy

    Acquire::http::Proxy "http://192.168.1.102:3142";

    Здесь 192.168.1.102 адрес нашего локального репозитория. Осталось обновить списки пакетов:

    sudo apt-get update

    Здесь мы не добавляем локальный репозиторий Ubuntu, а всего лишь используем прокси для загрузки пакетов.

    Выводы

    Вот и все. Эта технология будет очень полезной системным администраторам, а также обычным пользователям, у которых слабый интернет. Если у вас остались вопросы, спрашивайте в комментариях!

    Для системных администраторов данная тема является чуть ли не первоочередной по важности. Ведь обычно любая организация, заботясь о безопасности и надёжности работы своих серверов и вообще сетей, разрабатывает и внедряет определённые политики безопасности. Которые, в свою очередь, предусматривают ограничения на доступ в открытый интернет для большинства клиентских машин из локальной сети. Однако и без этого никак нельзя, поскольку при их обслуживании необходимо проводить обновления программного обеспечения (ПО). Распространение этих обновлений при помощи сменных носителей очень неудобно, а при наличии большого числа компьютеров в обслуживаемой локальной сети практически невозможно. В данном случае, рациональным вариантом является организация локальных репозиториев пакетов, предварительно загруженных из Интернет. О двух основных подходах при решении данной задачи на примере систем Ubuntu будет далее изложено в данной статье.

    Как работают репозитории пакетов в системах Linux?

    Разработчики для поддержки своих дистрибутивов и комфортной работы пользователей снабжают (СУП) специальными ссылками. Они указывают на удалённые сервера, на которых хранятся самые актуальные и протестированные разработчиками пакеты ПО для данного дистрибутива. Благодаря этим ссылкам СУП «знает» когда и откуда загрузить и установить обновления пакетов. Эти ссылки могут указывать как на удалённый ресурс, так и на локальный. Во втором случае это может быть как другой компьютер в локальной сети, так и локальный накопитель и/или даже, если постараться - оптический привод.

    Deb http://ru.archive.ubuntu.com/ubuntu/ bionic universe

    Это и есть один из системных репозиториев, включенный в дистрибутив изначально. Существуют также репозитории, организованные отдельными проверенными пользователями, например:

    Deb https://repos.codelite.org/ubuntu/ bionic universe

    Это репозиторий, созданный разработчиком среды разработки CodeLite, специально для Ubuntu. И эта ссылка была добавлена в файл sources.list уже вручную самим пользователем-администратором компьютера. После чего становится возможной автоматическая установка актуальных и стабильных версий пакетов CodeLite, а также их обновление. А вот так может выглядеть ссылка на репозиторий, хранимый на оптическом носителе:

    Deb cdrom:/ bionic main multiverse restricted universe

    Как видно, ключевым словом, определяющим протокол доступа является значение, следующее после «deb». Для оптического носителя это «cdrom», а для доступа по сети - «https».
    Получается, что источники репозиториев можно дополнять по собственному усмотрению, предварительно организовав соответствующим образом хранилище пакетов.

    Использование прокси для организации локального репозитория

    Данный метод подразумевает доступ к репозиториям через кеш на прокси-компьютере, который имеет прямое подключение в Интернет. Механизм работы такого локального репозитория заключается в следующем:

    • на какой-либо клиентской машине в обычном порядке запрашивается какой-либо пакет для установки/обновления через компьютер-сервер;
    • запрошенный пакет скачивается сервером, сохраняется в специально отведённом хранилище-кеше и далее становится доступным всем остальным клиентам;
    • в качестве распространителя пакетов клиентам выступает веб-сервер Apache, поэтому его установка обязательна.

    Итак, для начала необходимо установить всё необходимое, т. е. веб-сервер и саму утилиту кеширования пакетов:

    $ sudo apt-get install apache2 apt-cacher

    При установке apt-cacher будет показан диалог настройки, в котором можно настроить нужное поведение утилиты, например задать автозапуск и работу в режиме демона. Также эти и некоторые другие важные настройки можно сделать (например с помощью редактора ) в конфигурационном файле /etc/default/apt-cacher . Для включения автозапуска apt-cacher нужно установить параметр AUTOSTART в значение «1»:

    $ sudo nano /etc/default/apt-cacher . . . # Set to 1 to run apt-cacher as a standalone daemon, set to 0 if you are going # to run apt-cacher from /etc/inetd or in CGI mode (deprecated). Alternatively, # invoking "dpkg-reconfigure apt-cacher" should do the work for you. # AUTOSTART=1 . . .

    $ sudo nano /etc/apt-cacher/apt-cacher.conf . . . ## Uncomment and set the IP range ## allowed_hosts = 192.168.1.105 - 192.168.1.125 #denied_hosts = . . .

    Как можно видеть, просто указывается диапазон нужных IP-адресов. После сохранения сделанных настроек необходимо перезапустить веб-сервер Apache:

    $ sudo service apache2 restart

    $ sudo systemctl restart apache2

    Теперь необходимо указать клиентам, куда им нужно обращаться для установки пакетов и обновлений. Для этого на клиентских машинах нужно создать файл /etc/apt/apt.conf.d/01proxy с помощью того же редактора nano:

    $ sudo nano /etc/apt/apt.conf.d/01proxy

    И добавить в него строку со следующей инструкцией:

    Acquire::http::Proxy "http://192.168.1.100:3142";

    Здесь в качестве адреса сервера, на котором установлен и работает apt-cacher указывается 192.168.1.100. Конечно, это может быть любой другой адрес, настроенный для этого сервера.

    Теперь можно проверить работу локального репозитория (а точнее удалённого, но доступного через прокси), выполнив команду обновления данных о доступных пакетах:

    $ sudo apt-get update

    APT-MIRROR – полноценный локальный репозиторий

    Данный способ является более «продвинутым» по сравнению с использованием apt-cache. Поскольку предполагает наличие полноценного хранилища пакетов прямо на локальном компьютере/сервере или в локальной сети. Но сначала такое хранилище необходимо создать, загрузив в него все необходимые пакеты. Как и в случае с apt-cache , в качестве распространителя пакетов выступает веб-сервер . Порядок настройки локального репозитория при помощи утилиты apt-mirror следующий:

    1. установка необходимых пакетов: apt-mirror и apache2;
    2. создание локального хранилища и настройка источников для загрузки, загрузка пакетов в хранилище;
    3. открытие доступа к готовому хранилищу для клиентов;
    4. настройка клиентов для использования локального репозитория.

    Итак, установка необходимых утилит и пакетов:

    $ sudo apt-get install apache2 apt-mirror

    $ sudo mkdir /localrepo

    Теперь в конфигурационном файле /etc/apt/mirror.list нужно отредактировать строку с инструкцией «set base_path». Указав в ней только что созданный каталог для хранилища:

    $ sudo nano /etc/apt/mirror.list ############ config ################## # set base_path /localrepo

    Далее, в этом же файле можно добавить необходимые репозитории, с которых будут загружены пакеты. Можно скопировать все стандартный репозитории из /etc/apt/sources.list .
    Сохранив настройки можно запустить загрузку пакетов командой:

    $ sudo apt-mirror

    Это может занять длительное время, в зависимости от скорости соединения с Интернет. Данную команду очень полезно добавить в список регулярных процедур , чтобы локальный репозиторий обновлялся автоматически.

    После того, как локальный репозиторий будет полностью загружен, его содержимое должно быть примерно следующим:

    $ ls /localmirror mirror skel var

    Для последующего удобства настройки клиентов полезно создать на хранилище, которое содержится в каталоге mirror:

    $ cd /localrepo $ sudo ln -s /localrepo/mirror/us.archive.ubuntu.com/ubuntu/ ubuntu

    Теперь ссылка ubuntu будет использоваться для задания репозиториев на стороне клиентов с помощью редатирования файла /etc/apt/sources.list:
    Открыв этот файл (с использованием команды ) с помощью редактора nano, нужно теперь добавить в него следующие репозитории:

    Deb http://192.168.1.100/ubuntu trusty universe deb http://192.168.1.100/ubuntu trusty main restricted deb http://192.168.1.100/ubuntu trusty-updates main restricted . . .

    Здесь адрес 192.168.1.100 - это IP-адрес компьютера, на котором был создан и настроен локальный репозиторий.
    Теперь, для работы с пакетами можно использовать обычные команды apt:

    $ sudo apt-get update $ sudo apt-get install имя_пакета

    Заключение

    В заключение следует напомнить, что способы организации локальных репозиториев, описанные выше подходят для систем на базе формата debian-пакетов. Для систем, основанных на RPM следует использовать другие инструменты.

    Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter .

    Недавно наткнулся на утилиту reprepro . Она помогает создавать локальный репозиторий deb-based дистрибутивов. Тут та меня осенило. Я давно собираю пакеты которых нет в официальных архивах потому каждый раз прогибаться по ним и устанавливать стало в падлу и я решил создать раздел с хранящимися там репозиториями таких пакетов. Так что бы при смене системы просто под монтировать его и пользать по надобности. Вещь как мне кажется полезнее чем сохранять кеш из apt-get.


    Кратко о reprepro
    Необходимо создать директорию для репозитория. У меня выбор падает на /repository потому для работы нужны права суперпользователя. А в принцепе если права записи на этот каталог будут только у администратора то есть большая вероятность что никто посторонний не сможет навредить вашему "архиву"
    # mkdir /repository
    переходим туда:
    Создаем папку /repository/conf/ для конфигурационных файлов
    # mkdir /repository/conf

    Создаем файл , добавляя нужные секции (подробнее об этом можно почитать в выводе команды man reprepro в разделе CONFIG FILES)
    # mousepad /repository/conf/distributions
    В оригинале текста объяснения автор предоставляет такой пример этого файла


    Origin: Debian
    Suite: testing
    AlsoAcceptFor: unstable experimental
    Codename: lenny
    Version: 5.0
    Architectures: i386 source
    Components: main contrib non-free
    UDebComponents: main contrib non-free
    Description: my local repository
    где:
    Origin - Имя дистрибутива = Debian
    Suite - ветка = testing
    AlsoAcceptFor - позволяет "засовывать" в репозиторий тестинга пакеты для других веток = unstable experimental, если опция не указана, то будет ругаться вот так при попытке добавить пакеты из анстэбл/экспериментал веток.
    Codename - кодовое имя ветки = lenny
    Version - версия ветки = 5.0
    Architectures - архитектуры, у меня x86 процессор, соответственно есть i386, также иногда закидываю в репозиторий исходники, поэтому есть source
    Components - разделы ветки, куда можно поместить deb-пакеты, а также исходники = main contrib non-free (можно еще насоздавать, сколько угодно)
    UDebComponents - разделы ветки, куда можно поместить udeb-пакеты (бывают и такие) = main contrib non-free (лучше, когда совпадают со строкой выше)
    Description - краткое словесное описание репозитория = например, my local repository

    Если каталог репозиторий не являеться текущим то в строке команды прописывают так называемую BASEDIR опции -b BASEDIR (в моем случае BASEDIR=/repository ).

    После создания файла /repository/conf/distributions инициализацируем репозиторий
    # reprepro export
    # reprepro createsymlinks

    Можно репозиторий заполнять пакетами. Для этого существует множество команд и опций, подробнее о которых можно узнать в man reprepro
    Наиболее употребляемые

    Добавление deb-пакета в репозиторий.
    В общем виде выглядит так:
    # reprepro -b BASEDIR -C РАЗДЕЛ includedeb ВЕТКА /путь/до/файла/имя_файла.deb
    Как я и описывал раньше это пример добавления пакета не из каталога с репозиторием, а из произвольного каталога. Если вы находитесь в каталоге репозитория то команда выглядит так же но без -b BASEDIR
    К примеру, для добавления пакета foo_1.0.deb , находящегося в папке /home/user/debian , в раздел main ветки lenny команда будет иметь следующий вид
    # reprepro -b /repository -C main includedeb lenny /home/user/debian/foo_1.0.deb

    Удаление deb-пакета из репозитория
    Для удаления одного deb-пакета из указанной ветки репозитория нужно дать такую команду
    # reprepro remove ветка имя_пакета

    К примеру, для рассмотренного пакета foo_1.0.deb , находящегося в ветке lenny даем такую команду:
    # reprepro remove lenny foo

    Для использования репозитория нужно добавить его в файл /etc/apt/sources.list в виде следующей строки (в общем виде):
    deb file:///путь_к_папке_репозитория/ ветка разделы

    Что для нашего примера будет выглядеть так:
    deb file:///repository/ lenny main contrib non-free

    Это базовое что я считаю достаточно в моем случае. Статья оригинала находиться