Рейтинг:4

Могу ли я установить ./meta-pkg_1.0_all.deb, который будет зависеть от локального .deb?

флаг us

У меня есть несколько пакетов .deb, которые я создаю и устанавливаю:

  • pkg1_1.0_all.deb
  • pkg2_1.0_all.deb
  • pkg3_1.0_all.deb

Я могу установить их, используя sudo dpkg -i pkg1_1.0_all.deb.

Теперь я хочу создать метапакет, который будет зависеть от них всех, что позволит мне установить только sudo dpkg -i meta_1.0_all.deb.

я использовал эквиваленты для создания контрольного файла:

Раздел: разное
Приоритет: необязательно
Стандарты-Версия: 3.6.2

Пакет: бла
Версия: 1.0
Зависит:
Описание:
 длинное описание и информация
 .
 второй абзац

и установите его.

Затем я изменил Зависит: зависеть от известного пакета: Зависит: tmux и установил его.

Затем я попытался зависеть от своих пользовательских пакетов: Зависит: pkg1 и теперь установка прервалась:

dpkg: проблемы с зависимостями препятствуют настройке bla:
 bla зависит от pkg1; Однако:
  Пакет pkg1 не установлен.

что понятно, как упаковка1 действительно не установлен.

Я добавил свой локальный каталог в качестве источника Debian после этого гид (изменил одно - добавил [доверенный = да] к списку источников deb [доверенный=да] файл:... так будет работать)

Я надеялся, что это позволит мне sudo подходящая установка ./meta_1.0_all.deb и он найдет зависимый пакет в моем текущем каталоге, но снова не сработает с той же ошибкой.

Что я могу сделать, чтобы позволить пользователю установить один .deb и заставить его установить несколько локальных пакетов .deb?

флаг ru
Он не будет автоматически устанавливать локальные файлы .deb, которых нет в репозитории. Вам придется сделать это вручную - `apt install bla /local/path/local1.deb /local/path/local2.deb ...` - если вы также не добавите эти 'локальные пакеты' на сервер репозитория.
CIsForCookies avatar
флаг us
@ThomasWard, так что если бы они были загружены на сервер - я бы смог установить один .deb и получить все, но если они в локальном репозитории - я не могу?
user.dz avatar
флаг ng
Возможным решением является плоский/тривиальный репозиторий, это может быть просто локальный каталог (нет необходимости в сервере, если он не будет использоваться совместно через сеть). См. https://askubuntu.com/a/615932/26246
mchid avatar
флаг bo
Кроме того, кто-то в [разделе комментариев] (https://www.linuxwave.info/2009/04/adding-local-directory-to-apt.html#c2620391824185814815) упомянул, что вам нужно использовать `deb file:/home /foo/debs/` вместо `file:///home/foo/debs` в новых версиях Ubuntu.
CIsForCookies avatar
флаг us
@mchid, это странно. Я пробовал это на Ubuntu 20.04 и 18.04 с форматом `file:///`, и это сработало (если новее не новее 20.04)
CIsForCookies avatar
флаг us
@user.dz Я не уверен, в чем разница в вашем решении (файлы «Release» и «Packages» действительно имеют здесь значение? У меня также есть файл «Packages.gz», и он не работал, как ваш решение), но оно работает! Он говорит мне, что пакет не может быть аутентифицирован (очевидно), но это не старое доброе `yes | sudo ап установить ` не могу справиться. Спасибо!! (хотите написать это как ответ, чтобы я мог его принять?)
user.dz avatar
флаг ng
@CIsForCookies `dpkg` — это основной инструмент, но он не знает о репозиториях, он просто обрабатывает пакеты .deb по отдельности. `apt` (или `apt-get`) — это инструмент более высокого уровня, который обрабатывает следующие зависимости пакетов через репозитории.Таким образом, ваши пакеты должны обслуживаться через репозиторий (даже если это просто локальный каталог). Последний шаг для исправления аутентификации — подписать файл выпуска, следуя этому https://wiki.debian.org/SecureApt#Setting_up_a_secure_apt_repository. Вы можете написать ответ, который работает для вас, я не против.
user.dz avatar
флаг ng
@CIsForCookies Кстати, Packages.gz может не работать из-за того, как репо объявлено в sources.list, или расположение packages.gz не там, где его ожидает `apt`.
mchid avatar
флаг bo
Если ответ на вопрос [Какие макеты/файлы должны быть в репозитории Debian?](https://askubuntu.com/questions/606527/what-layout-files-should-debian-repository-have) сработал, мы можем закрыть его как дубликат.
nobody avatar
флаг gh
это https://help.ubuntu.com/community/MetaPackages, который вы ищете?
Рейтинг:3
флаг bo

Вы можете подставить (используйте подстановочный знак *) команда установки:

sudo подходящая установка ./*.deb

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

CIsForCookies avatar
флаг us
На самом деле у меня нет «настоящих» зависимостей. Я только хотел создать метапакет, чтобы разрешить одну команду установки. С вашим решением я смогу пропустить этот метапакет, но я не уверен, что подстановочный знак - это то, что я хочу иметь

Ответить или комментировать

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