За последнюю неделю в российском форуме Ubuntu 2 раза встретил вопрос "а как это сделать" и ответа там не увидел. Первый же поисковый запрос на главном форуме Ubuntu выдал решение (и пачиму люди не используют поиск в очевидных местах...), которое можно было найти и в манах, только это решение мне понравилось тем, что автор поста не поленился написать простой скрипт для создания такого репозитория. Ниже следует простой пересказ на русском (для тех, кто языков не знает) его решения с маленьким добавлением отсебятины.
Предварительно необходимо создать пару своих gpg ключей - закрытого и открытого. Сделать это можно как в консоли, покурив man gpg или такую доку, так и с помощью гуйной оболочки к gpg, в Kubuntu это kgpg, а в Ubuntu, видимо, это gpgp. И, конечно, запомните пароль, которым Вы защитили свой ключ. Установите только что созданный ключ как "ключ по умолчанию".
Итак, имеем кучку пакетов и из них необходимо сделать доверенный репозиторий.
Чтобы не устраивать свалку пакетов и служебных файлов, кладём пакеты в подкаталог ~/MyCoolRepo/debs. В каталоге ~/MyCoolRepo любимым текстовым редактором создаём файл (bash-скрипт) такого содержания:
#!/bin/bashМожно/нужно изменить строки "Label: My local Ubuntu Dapper repository", "Archive: dapper" и "Architecture: i386" на то, что вам нужно, но не меняйте больше ничего, если не понимаете что означают изменяемые строки. Сохраняем под именем, скажем, makerepo. Делаем этот файл исполняемым:
# Создание файла 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
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, который в свою очередь благодарен многим источникам.
Думаю, надо запостить это на forum.ubuntu.ru, иначе новички не допрут посмотреть на буржуйский форум.
Комментариев нет:
Отправить комментарий