В различных ФАКах и вики "для самых маленьких" на тематику создания локального репозитория пакетов Debian/Ubuntu всегда одни и те же типовые рекомендации. Как, скажем,
вот эта. Такой способ годится, только если у Вас отключены онлайн-репозитории или вообще нет подключения к интернет, так как созданный таким образом репозиторий не является
"доверенным" и apt-get/aptitude при установке будет тащить файл из интернета, несмотря на то что в локальном репозитории лежит точно такая же версия пакета. Чтобы избежать лишнего расхода трафика, локальный репозиторий должен быть подписан доверенным ключом.
За последнюю неделю в этом форуме 2 раза встретил вопрос "а как это сделать" и ответа не увидел. Первый же поисковый запрос на
главном форуме Ubuntu выдал
решение, которое можно было найти и в манах, только конкретно это решение мне понравилось тем, что автор поста не поленился написать простой скрипт для создания такого репозитория. Ниже следует простой пересказ на русском (для тех, кто языков не знает) его решения с маленьким добавлением отсебятины.
Предварительно необходимо создать пару своих gpg ключей - закрытого и открытого. Сделать это можно как в консоли, покурив man gpg или
такую доку,ссылку на которую уже дал
victor53p, так и с помощью гуйной оболочки к gpg, в Kubuntu это kgpg, а в Ubuntu, видимо, это gpgp. И, конечно, запомните пароль, которым Вы защитили свой ключ. Установите только что созданный ключ как "ключ по умолчанию".
Итак, имеем кучку пакетов и из них необходимо сделать доверенный репозиторий.
Чтобы не устраивать свалку пакетов и служебных файлов, кладём пакеты в подкаталог ~/MyCoolRepo/debs. В каталоге ~/MyCoolRepo любимым текстовым редактором создаём файл (bash-скрипт) такого содержания:
#!/bin/bash
# Создание файла Packages
dpkg-scanpackages . /dev/null > Packages
# Создание файла Release
cat > Release <
Archive: dapper
Origin: Ubuntu
Label: My local Ubuntu Dapper repository
Architecture: i386
MD5Sum:
d41d8cd98f00b204e9800998ecf8427e 0 Release
END
md5sum=$(md5sum Packages | cut -d ' ' -f1)
sizeinbytes=$(ls -l Packages | cut -d ' ' -f5)
printf " "$md5sum" %16d Packages" $sizeinbytes >> Release
# Создание файла Release.gpg
gpg -bao Release.gpg Release
# Даём инструкции по добавлению репозитория в sources.list
echo
echo "Для использования этого репозитория Вы должны добавить в файл /etc/apt/sources.list"
echo "(желательно в начале) следующую строку:"
echo
repodir="file://"$(pwd)
echo "deb "$repodir" /"
echo
Можно/нужно изменить строки "Label: My local Ubuntu Dapper repository", "Archive: dapper" и "Architecture: i386" на то, что вам нужно, но не меняйте больше ничего, если не понимаете что означают изменяемые строки. Сохраняем под именем, скажем, makerepo. Делаем этот файл исполняемым:
chmod +x makerepo
Запустите этот скрипт в терминале:
sudo ./makerepo
В процессе своей работы скрипт спросит пароль к тому ключу по умолчанию, что Вы предварительно создали. Если будет много сообщений вида
! Package libexiv2-dev (filename ./libexiv2-dev_0.7-9.1ubuntu1_i386.deb) is repeat;
ignored that one and using data from ./libexiv2-dev_0.12-0ubuntu2~ach0dapper1_i386.deb !
не пугайтесь, это означает лишь то, что в репозитории несколько версий одного пакета, более старые игнорируются и используются данные из более свежего пакета, можете удалить уже ненужные пакеты если критично занимаемое место. Также можете благополучно игнорировать сообщение вида
** Packages in archive but missing from override file: **
Следуйте инструкции, выданной скриптом касательно файла /etc/apt/sources.list.
Теперь необходимо экспортировать публичный ключ, для использования с apt-get/aptitude
gpg --export -a "ваше имя" > public.key
где ваше имя - то имя, которое Вы указали при создании пары ключей. И, наконец, добавляем ключ в список доверенных ключей apt`а:
sudo apt-key add public.key
После обычного заклинания
sudo apt-get update
и если Вы поместили строку с локальным репозиторием в начало файла sources.list и всё сделали правильно, Ваш репозиторий будет приоритетным при установке пакетов.
Спасибо
jamadagni с
ubuntuforums.org, который в свою очередь благодарен многим источникам.