LINUX.ORG.RU

Подключение папки с .deb как источника репозитория


1

2

Здравствуйте. Ситуация такая. Есть отдельно взятые deb-файлы, некоторые сами по себе, а другие с зависимостями. Хотелось бы их тоже устанавливать не по одному, а все разом. Но видимо я что-то не догоняю. Утилита gdebi даже через командную строку ставит только один пакет. dpkg может поставить все, но без зависимостей. apt-get и aptitude не хотят ставить уже скачанное. Через центр приложений тоже получается только по одному. Про синаптик вообще молчу - там есть кнопка «добавить свои пакеты» (или как-то так), но нужна она явно только для понтов - при попытке добавления он показывает файлы, но их выбрать нельзя. Как мне поступить в этом случае?

Я так подумал, что было бы здорово организовать папку со всеми самоскачанными пакетами и ставить их как обычные из интернета. По мере надобности удалять оттуда пакеты или добавлять, обновлять информацию по aptitude update и не знать проблем. Если сделать так:

deb file:///home/midori/<путь_до_папки>

То aptitude ругается на отсутствие какого-то параметра, я так понял названия дистриба.

Пишу название:

deb file:///home/midori/<путь_до_папки> precise

Или же делаю так:

deb file:///home/midori/<путь_до_папки> precise main restricted universe multiverse

Он мне пишет что некоторые пакеты не найдены.

Ну правильно, эту инфу он должен откуда-то считывать, но есть дебы, которые в помине не были ни в одном репозитории и как следствие я думаю таких умных слов там тоже нет. Пример пакетов - GuitarPro6, teamviewer7 и т.д. В поисковике как только не формулировал, выдаёт или создание копии существующих репзиториев, либо создание локального репозитория с помощью deb-mirror (что по сути одно и то же), либо установку кучей с помощью # dpkg -i *.deb. Но как я описал выше я хочу нечто другое, а второй способ не подходит из-за неумения dpkg разрешать зависимости.

Чую решение (если оно существует) где-то близко, наверное что-то недописал или лишнее написал в source.list.

Ubuntu 12.04, если это важно.

★★★★★

делать локальный репозиторий вручную достаточно унылое занятие, так что остаётся 1) использовать synaptic или что-нибудь в этом духе 2) dpkg -i *.deb, а потом фиксить недостачи в зависимостях apt-getом. Я так делаю.

anonymous
()

создаём каталог для размещения локального репозитория deb пакетов:

$ mkdir -p /home/user/debian/wheezy/pool/

переносим в ного необходимые deb пакеты (для удобства их можно размещать в подкаталогах)

далее создаём файл-индекс пакетов (удобно оформить данные команды в виде скрипта и вызывать его при обновлении содержимого каталога: добавление/удаление deb пакетов)

$ cd /home/user/debian/wheezy
$ dpkg-scanpackages pool /dev/null | gzip -c9 > /home/user/debian/wheezy/pool/Packages.gz

добавляем наш локальный репозиторий к списку источников пакетов

# touch /etc/apt/sources.list.d/local.list
# echo 'deb file:/home/user/debian/wheezy pool/' > /etc/apt/sources.list.d/local.list

обновляем информацию о доступных пакетах / устанавливаем необходимые (будет ругаться на пакеты из непроверенных источников)

# aptitude -u
Thom
()

Есть вариант с dpkg-scanpackages, он попроще, но но результат не будет настоящим репозиторием, в т.ч. подписывать его будет геморройно, а структура так и останется свалкой, что в дальнейшем может стать неудобным. Есть вариант с reprepro — эта утилита делает репозиторий со всеми необходимыми атрибутами, в т.ч. подписью и Contents-*.gz (для apt-file). По обоим есть куча руководств в гугле, и если смотреть в будущее, то второй лучше, хоть и несколько сложнее (зато потом добавлять и, главное, обновлять пакеты в пуле будет легко и просто, это из разряда «один раз попотеть, зато потом не нарпягаться»).

anonymous
()

Примерно так (я добавил только 1 пакет – teamviewer7)

user@host: ~ $ mkdir -p /home/user/debian/wheezy/pool/
user@host: ~ $ cd /home/user/debian/wheezy
user@host: ~/debian/wheezy $ dpkg-scanpackages pool /dev/null | gzip -c9 > /home/user/debian/wheezy/pool/Packages.gz
dpkg-scanpackages: предупреждение: Пакеты есть в архиве, но отсутствуют в файле переназначений:
dpkg-scanpackages: предупреждение:   teamviewer7
dpkg-scanpackages: инфо: Записано 1 записей в выходной файл Packages.
user@host: ~/debian/wheezy $ sudo -i
root@host: ~ # touch /etc/apt/sources.list.d/local.list
root@host: ~ # echo 'deb file:/home/user/debian/wheezy pool/' > /etc/apt/sources.list.d/local.list
root@host: ~ # aptitude -u
root@host: ~ # exit
logout
user@host: ~/debian/wheezy $ sudo aptitude search teamview
p   teamviewer7 - TeamViewer (Remote Control Application)                                                                                  
user@host: ~/debian/wheezy $

Thom
()
Ответ на: комментарий от anonymous

Верное замечание: touch в данном случае лишняя сущность.

Благодарю.

Thom
()
# dpkg -i *.deb
# apt-get install -f
leave ★★★★★
()

Какие сложности у вас на дебиане. zypper может любую папку подключить как репозиторий.

Nxx ★★★★★
()
Ответ на: комментарий от Nxx

Да, в RPM based простые вещи делаются часто проще. Только вот сложные там делаются так, что проще отказаться от этого некрофильного хлама (RPM).

anonymous
()
Ответ на: комментарий от Nxx

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

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.