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


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: apt-get параметр build dep  (Прочитано 896 раз)

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

Оффлайн TheLittleMermaid

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
apt-get параметр build dep
« : 07 Марта 2025, 10:36:44 »
Добрый день! Подскажите, пожалуйста, поиск в интернетах не дал результата.

Дано: есть свой пакет .deb, он точно рабочий только свой, не из репозитория.

Мне нужно выполнить команду примерно такого вида:
apt-get -s build-dep packet_name.deb
Выходит ошибка: в командной строке указан неподдерживаемый файл packet_name.deb.

Но этот файл нормальный, он устанавливается и т.д. И, например, строку:
apt-get -y --print-uris install packet_name.deb
он глотает и радуется.

В чем может быть затуп?

Оффлайн Smörman

  • Азъ есмь Школяръ
  • Заслуженный пользователь
  • Активист
  • *
  • Сообщений: 578
  • When In Rome, Do As The Romans Do...
    • Просмотр профиля
    • Compizomania
Re: apt-get параметр build dep
« Ответ #1 : 07 Марта 2025, 10:48:56 »
Видимо всё равно неправильно собрали пакет.

Очень давно, как-то по этой инструкции собирал пакеты, всё прекрасно работало, никаких ошибок не выдавало.
Если вы в РФ, то ссылка откроется только через VPN:
Создание и редактирование deb пакетов
OS: Ubuntu 22.04 'Jammy Jellyfish' LTS, Arch Linux + Openbox, W11 Home
PC: Lenovo H530, CPU: i5-4430 3.0, Video: nVidia PCI-X
SSD: SAMSUNG EVO870 1T, SSD: 2хSAMSUNG EVO870 500G, RAM: 16G, ODD

Оффлайн TheLittleMermaid

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: apt-get параметр build dep
« Ответ #2 : 07 Марта 2025, 11:06:11 »
Видимо всё равно неправильно собрали пакет.
Спасибо за ответ!
Этот пакет ставится, приложение запускается, оно работает. <- при этих условиях может быть так, что пакет собран неправильно?

У меня проблема именно с параметром build-dep.
« Последнее редактирование: 07 Марта 2025, 11:07:56 от TheLittleMermaid »

Оффлайн Morisson

  • СуперМодератор
  • Заслуженный пользователь
  • Активист
  • *
  • Сообщений: 392
    • Просмотр профиля
Re: apt-get параметр build dep
« Ответ #3 : 07 Марта 2025, 11:41:01 »
apt-get -s build-dep packet_name
Это не с установленным пакетом делается?
sudo apt-get install packet_name.deb && sudo apt-get -s build-dep packet_name

Оффлайн TheLittleMermaid

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: apt-get параметр build dep
« Ответ #4 : 07 Марта 2025, 11:54:43 »
Это не с установленным пакетом делается?
Сейчас установил, проверил, что установился с помощью apt list --installed, установился.

sudo apt-get install packet_name.deb && sudo apt-get -s build-dep packet_name
Попробовал, ошибка та же - "В командной строке указан неподдерживаемый файл", ну, и, что пакет уже установлен, естественно.

Оффлайн Morisson

  • СуперМодератор
  • Заслуженный пользователь
  • Активист
  • *
  • Сообщений: 392
    • Просмотр профиля
Re: apt-get параметр build dep
« Ответ #5 : 07 Марта 2025, 12:15:20 »
apt-get -s build-dep packet_name.deb
А если указать полный путь к packet_name.deb?
sudo apt-get -s build-dep /путь/к/packet_name.deb

Оффлайн TheLittleMermaid

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: apt-get параметр build dep
« Ответ #6 : 07 Марта 2025, 12:20:48 »
А если указать полный путь к packet_name.deb?
sudo apt-get -s build-dep /путь/к/packet_name.deb
Пробовал. И полный, и относительный, и в кавычках всех типов. И по названию установленного пакета. Не думаю, что важно, но установленный пакет имеет более короткое название, чем файл packet_name.deb, в имени установленного пакета обрезается номер версии. Грубо говоря, файл "packet_v_1.02.deb", а имя установленного пакета просто "packet".

Проблема в том, что я не знаю, что должно быть результом для:
apt-get -s build-dep /путь/к/packet_name.deb (1)
А это важно, т.к. это кусок скрипта, и этот результат мне нужен дальше.
Вот, например, я пошел другим путем и делаю команду:
apt-depends packet_name (2)
Мне дается некий результат. Он похож, на то, что я ожидаю. Но является ли вывод (1) и (2) одинаковыми? Ну или хотя бы о том же самом.
« Последнее редактирование: 07 Марта 2025, 12:41:34 от TheLittleMermaid »

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 3269
    • Просмотр профиля
Re: apt-get параметр build dep
« Ответ #7 : 07 Марта 2025, 13:33:28 »
TheLittleMermaid, при запуске с "-s" apt-get ничего и не будет делать. Прочитайте, что он при этом пишет, а также "man apt-get" на предмет команды build-dep, там сказано, что он по ней делает.
Пётр.

Оффлайн TheLittleMermaid

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: apt-get параметр build dep
« Ответ #8 : 07 Марта 2025, 15:39:46 »
TheLittleMermaid, при запуске с "-s" apt-get ничего и не будет делать.
В этом и смысл, чтобы он ничего не делал, мне нужны были списки зависимостей.
Вообще, изначально задача была такая: у меня есть пакет, но он устанавливается только если обновиться из репозитория на пустую систему. Иначе пакет не ставится. Необходимо собрать нужные пакеты из репозитория и все зависимости в директорию на флешку, чтобы воткнув эту флешку в компьютер без интернетов можно было установить искомый пакет. Написал криво, но смысл, думаю, понятен.

В общем, этим методом у меня ничего не получилось, я пошел другим путем. В итоге все получилось. Использовал команду apt download с отфильтрованным нужным образом apt-cache depends для искомого пакета.

Оффлайн MooSE

  • Старожил
  • *
  • Сообщений: 1194
    • Просмотр профиля
Re: apt-get параметр build dep
« Ответ #9 : 07 Марта 2025, 20:10:38 »
Проблема в том, что я не знаю, что должно быть результом для:
apt-get -s build-dep /путь/к/packet_name.deb (1)

То есть вводите команду, но не знаете что она должна сделать? Из "man apt-get":

       build-dep
           build-dep causes apt-get to install/remove packages in an attempt to satisfy the build dependencies for a source package. By default the
           dependencies are satisfied to build the package natively. If desired a host-architecture can be specified with the --host-architecture option
           instead.

           The arguments are interpreted as binary or source package names. See the --only-source option if you want to change that.

       -s, --simulate, --just-print, --dry-run, --recon, --no-act
           No action; perform a simulation of events that would occur based on the current system state but do not actually change the system. Locking
           will be disabled (Debug::NoLocking) so the system state could change while apt-get is running. Simulations can also be executed by non-root
           users which might not have read access to all apt configuration distorting the simulation. A notice expressing this warning is also shown by
           default for non-root users (APT::Get::Show-User-Simulation-Note). Configuration Item: APT::Get::Simulate.

           Simulated runs print out a series of lines, each representing a dpkg operation: configure (Conf), remove (Remv) or unpack (Inst). Square
           brackets indicate broken packages, and empty square brackets indicate breaks that are of no consequence (rare).



Изменил автора цитаты. MooSE, у тебя почему-то получилось так, что ты цитируешь Morisson'а, но на самом деле эти слова принадлежат ТС.

--F12
« Последнее редактирование: 07 Марта 2025, 22:04:21 от F12 »

Оффлайн Smörman

  • Азъ есмь Школяръ
  • Заслуженный пользователь
  • Активист
  • *
  • Сообщений: 578
  • When In Rome, Do As The Romans Do...
    • Просмотр профиля
    • Compizomania
Re: apt-get параметр build dep
« Ответ #10 : 07 Марта 2025, 21:19:40 »
В любом .deb-пакете обязательно присутствует архив control.tar.zst, в нём есть файл control, например пакета gnome:
(Нажмите, чтобы показать/скрыть)
в котором есть секция:
Depends:а в ней полное описание всех зависимостей с указаниями от или до каких версий, необходимых для установки данного .deb-пакета и вот, когда не соответствие с версиями пакетов в системе, мы при попытках того или иного действа с пакетом в плане его установки или др. действа, получаем в выводе соответствующие ошибки.
Список зависимостей можно менять самому, но только через правильный алгоритм изменения .deb-пакета (ссылку я кидал выше, как...).
Также, при сборке пакетов, неправильный алгоритм его сборки тоже приводит к соответствующим ошибкам...
« Последнее редактирование: 07 Марта 2025, 21:53:28 от Smorman »
OS: Ubuntu 22.04 'Jammy Jellyfish' LTS, Arch Linux + Openbox, W11 Home
PC: Lenovo H530, CPU: i5-4430 3.0, Video: nVidia PCI-X
SSD: SAMSUNG EVO870 1T, SSD: 2хSAMSUNG EVO870 500G, RAM: 16G, ODD

Оффлайн Peter_I

  • Старожил
  • *
  • Сообщений: 3269
    • Просмотр профиля
Re: apt-get параметр build dep
« Ответ #11 : 08 Марта 2025, 12:44:11 »
Smorman,так это в дистрибутивном пакете, а в самосборном могут быть ошибки.
Пётр.

Оффлайн Smörman

  • Азъ есмь Школяръ
  • Заслуженный пользователь
  • Активист
  • *
  • Сообщений: 578
  • When In Rome, Do As The Romans Do...
    • Просмотр профиля
    • Compizomania
Re: apt-get параметр build dep
« Ответ #12 : 08 Марта 2025, 13:16:08 »
а в самосборном могут быть ошибки
Могут конечно.

Всё зависит от того, правильно ли ты его собрал, всё ли правильно прописал и т.д...
OS: Ubuntu 22.04 'Jammy Jellyfish' LTS, Arch Linux + Openbox, W11 Home
PC: Lenovo H530, CPU: i5-4430 3.0, Video: nVidia PCI-X
SSD: SAMSUNG EVO870 1T, SSD: 2хSAMSUNG EVO870 500G, RAM: 16G, ODD

Оффлайн Skif_off

  • Активист
  • *
  • Сообщений: 428
    • Просмотр профиля
Re: apt-get параметр build dep
« Ответ #13 : 08 Марта 2025, 13:31:39 »
По теме, например: https://qna.habr.com/q/920075
Но свой пакет, не находящийся в одном из подключенных репозиториев, придётся установить.
Продублирую на всякий:

перечислить все зависимости MC рекурсивно:
apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances mc | grep "^\w" | sort -uсразу скачать:
apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances mc | grep "^\w" | sort -u)
Непонятно, зачем заморачиваться сетями, сам сборку пакетов начал с изучения https://help.ubuntu.ru/wiki/сборка_пакетов, ну и https://help.ubuntu.ru/wiki/programs_installation читал. (Сейчас эти страницы доступны по-прежнему, правда, выглядят отстойно, но когда-то были нормально отформатировааны).
(Нажмите, чтобы показать/скрыть)

Никаких особых алгоритмов правки зависимостей готового deb-файла нет: полностью распаковать, поправить, упаковать. Последний пункт по первой ссылке.
На всякий случай напомню, patchelf может порешать некоторые проблемы.

а в самосборном могут быть ошибки.
Сборка пакетов неплохо автоматизирована и с косячными файлами дебианизации скорее всего просто не соберётся.
С правкой готовых deb-файлов или попыткой уложить готовые бинарники в deb-файл (см. последний пункт здесь) напортачить тоже не так просто. Но можно :)

Оффлайн Smörman

  • Азъ есмь Школяръ
  • Заслуженный пользователь
  • Активист
  • *
  • Сообщений: 578
  • When In Rome, Do As The Romans Do...
    • Просмотр профиля
    • Compizomania
Re: apt-get параметр build dep
« Ответ #14 : 08 Марта 2025, 13:53:56 »
алгоритмов правки зависимостей готового deb-файла нет: полностью распаковать, поправить, упаковать
Это тоже алгоритм.

Алгоритм есть, смотря каким способом ты это будешь делать, и он простой - правильная очерёдность того, о чём ты написал - раз, правильный синтаксис написания команд - два.

По инструкции, ссылку на которую я давал выше, команд работы с пакетом не мало, но они все при соблюдении синтаксиса и очерёдности прекрасно разбирают и собирают пакет.

Способов, да, много, выбор за страждущим...
OS: Ubuntu 22.04 'Jammy Jellyfish' LTS, Arch Linux + Openbox, W11 Home
PC: Lenovo H530, CPU: i5-4430 3.0, Video: nVidia PCI-X
SSD: SAMSUNG EVO870 1T, SSD: 2хSAMSUNG EVO870 500G, RAM: 16G, ODD

 

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