Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: локальный репозитарий в Ubuntu-16.04  (Прочитано 1654 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Peter_I

  • Автор темы
  • Старожил
  • *
  • Сообщений: 3032
    • Просмотр профиля
Здравствуйте!

Не удаётся подключить локальный репозитарий в Ubuntu-16.04, хотя в Ubuntu-14.04
и в Astra Linux, тоже Debian based, с этим не было проблем.
Я создал этот репозитарий в /home/repo/ubuntu, в ubuntu/conf/distributions
в качестве Codename указал xenial, по команде "reprepro export" создались db-файлы.
В /etc/apt sources.list такой:
deb file:/home/repo/ubuntu stable main contrib non-freeвсё сделал, как и раньше. Но теперь команда
reprepro -v list xenialне возвращает ничего и сообщений тоже никаких, а должна возвратить список
всех пакетов в репозитарии. Команда "apt-get update" его вроде бы подключает,
но я не убрал /etc/apt/sources.list.d/proposed.list, а в нём ссылка
на репозитарий в Интернете. Теперь команда "apt-get install" берёт пакеты
из Интернета вместо локального репозитария.
Удалить proosed.list попробую, я сейчас не в Ubuntu, а почему
reprepro list xenialне возврашает списка?
В 14.04 в локальном репозитарии Codename было trusty, всё выполнялось.

Пользователь добавил сообщение 06 Июля 2016, 11:22:02:
Проблема в том, я скачал репозитарий уже с pool и теперь я не пойму, как сделать, чтобы reprepro этот pool
просканировал и включил эти пакеты в базу. Это надо как-то сделать, не используя includedeb,
т.к. пакеты уже на месте. dpkg-scanpackage ещё не пробовал.

Пользователь добавил сообщение 06 Июля 2016, 15:37:44:
В конце концов я запустил небольшой скрипт с командой find для поиска всех *.deb,
их список  с полным путём сохранил в файл, а затем запустил другой скрипт, он читает этот список,
переходит в каталог с очередным *.deb, даёт команду "reprepro includedeb", возвращается в исходный каталог и т.д.
Вот сейчас бегут строчки
Export indices..
Пакетов 53837.

Пользователь добавил сообщение 06 Июля 2016, 20:28:16:
Это, конечно, очень долго и неправильно, ведь когда я скачивал репозитарий, с ним пришли каталоги main,
restricted, multiverse и universe со списками пакетов - Packages. Неужели для reprepro нет команды, укаывающей
перечитать эти списки и на их основании построить базы?
« Последнее редактирование: 06 Июля 2016, 20:28:16 от Peter_I »
Пётр.

Оффлайн Peter_I

  • Автор темы
  • Старожил
  • *
  • Сообщений: 3032
    • Просмотр профиля
Re: локальный репозитарий в Ubuntu-16.04
« Ответ #1 : 07 Июля 2016, 12:21:37 »
Этот вариант у меня не получился. Почему-то переполнился pool, так что не осталось места на диске
и процес остановился. Объём pool был 73GB, а стал 94GB, но я лишних файлов там не нашёл.
Я сохранил оглавление в файл, удалил строки с *.deb, но посторонних файлов не увидел, наверное, потому,
что не просмотел веь файл. Возможно, там остались какие-то временные.
Тогда я перенёс pool в другое место, а из репозитария его удалил. Теперь скрипт обходит каталоги pool
в другом месте и добавляет пакеты в pool в репозитарии. Тоже долго, но я так и не нашёл, по какой команде
reprepro может построить базы по уже готовым Packages. На англоязычном сайте мне тоже пока не ответили.
М.б., есть какая-то утилита для этого?
« Последнее редактирование: 07 Июля 2016, 17:13:29 от Peter_I »
Пётр.

Оффлайн Peter_I

  • Автор темы
  • Старожил
  • *
  • Сообщений: 3032
    • Просмотр профиля
Re: локальный репозитарий в Ubuntu-16.04
« Ответ #2 : 08 Июля 2016, 21:11:21 »
Я обнаружил, что исправленный вариант скрипта тоже работает на так, как ожидалось.
Я сохранил в файле список всех каталогов pool, находящегося в другом месте, там есть разделы main, restricted,
multiverse и universe. Скрипт заходит в каждый каталог с deb-файлами, исполняет команду
reprepro includedeb xenial *.debвозвращается в исходный каталог и т.д. Я обнаружил, что пакеты из multiverse reprepro помещает в main,
как отдельные каталоги, так и пакеты из одноимённых с каталогами в main. Я, конечно, могу запускать reprepro
с опцией "-C type", но возник вопрос:

как вообще reprepro определяет, в какой раздел и в какой каталог помещать пакет?
Я в двух deb-файлах из main и из universe посмотрел INFO и DEBIAN/control, там нет ни названий раздела,
ни каталогов. Точнее, я этого не увидел.
« Последнее редактирование: 08 Июля 2016, 21:40:44 от Peter_I »
Пётр.

Оффлайн Peter_I

  • Автор темы
  • Старожил
  • *
  • Сообщений: 3032
    • Просмотр профиля
Re: локальный репозитарий в Ubuntu-16.04
« Ответ #3 : 12 Июля 2016, 09:32:14 »
У меня закончил работу этот скрипт. Он обрабатывл каталог pool репозитария для amd64.
Он включал 53837 deb-файлов, находящихся в 26136 каталогах. Скрипт заходил в каждый, давал команду
reprepro -C <type> includedeb xenial *.debи возвращался в исходный каталог. reprepro работала тем медленнее, чем больше становились базы в ..db/,
а весь pool он прошёл за 103 часа и 25 минут, процессор AMD FX-8350, RAM 16GB.
Размер баз составил: packages.db - 167120K, contents.cache.db - 151292K.
« Последнее редактирование: 12 Июля 2016, 09:52:19 от Peter_I »
Пётр.

 

Страница сгенерирована за 0.029 секунд. Запросов: 25.