Пропустить навигацию.
Главная

Свой локальный репозиторий

Когда портится установленный дистрибутив Runtu (Ubuntu) Linux (хотя это бывает крайне редко) и приходит время его переустанавливать, то жалко терять мегабайты скаченных пакетов, обновлений, программ. Или же Ваш друг хочет поставить себе те же программы, что и у Вас, но выхода в интернет у него нету, тут и пригодится локальный репозитарий, который можно записать на DVD/CD диск, или скинуть на локальный ftp сервер, а уже оттуда с большей легкостью ставить пакеты и обновления для системы.

Обычно пакеты, скаченные программой apt-get, хранятся в директории /var/cache/apt/archives. Поэтому, точку монтирования /var при установки системы лучше делать на отдельный раздел диска, после переустановки системы ваши пакеты, которые хранятся в кеше не будут теряться. Но проблема в том, что когда кеш достигает определенно размера он автоматически очищается следовательно пакеты в нем потираются. Поэтому есть более эффективный и удобный способ сборки установленных в системе пакетов, который я опишу ниже.

Собираем руками:

Создадим директорию arch в удобном для Вас месте (я выбрал /home/user):
mkdir /home/user/arch

В ней еще поддиректорию deb:
mkdir /home/user/arch/deb

Теперь копируем все deb пакеты из /var/cache/apt/archives/ в /home/user/arch/deb:
cp /var/cache/apt/archives/*.deb /home/user/arch/deb

Скачиваем и устанавливаем пакет dpkg-dev:
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install dpkg-dev

Теперь нам нужно создать индексные файлы для наших пакетов утилитой dpkg-scanpackages (из пакета dpkg-dev), которые будет использовать утилита apt-get:
cd /home/user/arch/deb
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz

Вот и все, осталось добавить новый репозиторий в /etc/apt/sources.list:
sudo echo "deb file:/home/user/arch/deb ./" >>/etc/apt/sources.list

И обновим все листы:
sudo apt-get update

Вот и все, наш локальный репозиторий создан ;-)

Более простой метод. Использование утилиты apt-move:

Устанавливаем утилиту apt-move:
sudo apt-get install apt-move

Формируем мастер-файл:
sudo apt-move get

Переносим все пакеты из /var/cache/apt/archives в /mirrors:
apt-move move

Удаляем устаревшие пакеты:
apt-move delete

Создадим Packages.gz и Sources.gz дерева локального зеркала:
apt-move packages

Собираем установленные пакеты:
Как я уже говорил, пакеты в /var/cache/apt/archives хранятся не вечно (это так сказать темп). Поэтому многие установленные пакеты в этой директории потираются. Есть очень простой метод сборки всех установленных пакетов в системе в одну директорию:

mkdir /home/user/deb
cd /home/user/deb
sudo dpkg --get-selections | grep -v "deinstall" | awk '{print $1}' | xargs dpkg-repack

Процесс может занять некоторое время (в зависимости от количества установленных пакетов), так что можете спокойно выпить чашку чая (или кофе, кто как любит ;-) ) и подождать пока все пакеты не соберутся (кстати если завершить выполнение скрипта посредством нажатия комбинации клавиш Ctrl+C, то после повторного запуска скрипта процесс сборки пакетов начнется не сначала, а будет продолжаться дальше). После того как скрипт завершит свое выполнение, в директории /home/user/dev вы обнаружите кучу deb файлов. Далее дело за Вами, как я описывал выше остается только создать индексные файлы и прописать ссылку в файл /etc/apt/sources.list

Для тех кто не дружит с консолью, есть очень простая и дружелюбная GUI утилита APTonCD (sudo apt-get install aptoncd). Она все сделает за Вас. Ею можно собрать все пакеты и добавить свои дополнительные, а затем создать iso образ диска и записать его на CD или DVD командой cdrecord -v -eject speed=4 -dev=/dev/hdc my_repo.iso, где my_repo.iso образ диска, который вы создали.

Автор: t0x1n