LINUX.ORG.RU

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

 ,


0

1

Существует ли валидная структура package .deb для обычных пользовательских программ? Я делал пакеты .deb для системных демонов, которым требовался корневой доступ. И я пошел по тому же пути для обычного приложения с графическим интерфейсом и поместил программу в папку /usr/bin/ (настройки создаются в папке ~/.config/MY_PROGRAM). Итак: ожидается, что программа будет запущена только с помощью sudo (root-доступ) (доступ запрещен для обычного пользователя Ubuntu). Но мне это не нужно. Как это сделать правильно? Я слышал, что некоторые люди помещают их в папку /usr/local/bin/, /opt/, но, по словам утилиты lintian и документации, все это недопустимые методы, поскольку они предназначены для самостоятельной сборки приложений или в случае /opt/ для плагинов приложений.

Вопрос: где я должен хранить исполняемый бинарный файл в пакете deb?

Ответ на: комментарий от almuhandis

это вообще о чем?

Вот и я так же подумал, когда прочитал тему.

ожидается, что программа будет запущена только с помощью sudo

Кем или чем ожидается?

Права нормальные выставь: chmod a+x <твой_бинарь>

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

Так права на выполнение само собой выставлены. Более того, если бинарник переместить в другую папку, к примеру, в Home, то он нормально стартует. Или если, как сказал выше с помощью sudo. В этой же папке access denied.

almuhandis
() автор топика

Собственно в одном чате мне объяснили, что в моем случае помещение бинарник в /opt/MYVENDOR/ вполне валидно, несмотря на сообщение от lintian:

    user@DESKTOP-RENAT:~$ lintian "myapp-full_2.5.3.15-3_amd64.deb" --info
    E: myapp: dir-or-file-in-opt opt/myapp/
    N:
    N:    Debian packages should not install into /opt, because it is reserved for
    N:    add-on software.
    N:
    N:    Refer to Filesystem Hierarchy Standard (/opt : Add-on application
    N:    software packages) for details.
    N:
    N:    Severity: error
    N:
    N:    Check: files/hierarchy-standard
    N:
    E: myapp: dir-or-file-in-opt opt/myapp/myapp```sh
Так как мое приложение и есть Add-on application:

> In this context, “add-on” means software that is not part of the system; for example, any external or third-party software.
almuhandis
() автор топика
Ответ на: комментарий от almuhandis

Так как мое приложение и есть Add-on application:

Помещение приложения в /opt подразумевает помещение абсолютно всех файлов пакета в /opt/$vendor/$package. Т.е. ничего не должно быть ни в библиотеках, ни в /etc, ни в /usr/share.

gremlin_the_red ★★★★★
()

Вопрос: где я должен хранить исполняемый бинарный файл в пакете deb?

Исполняемые файлы в /usr/bin/

Исполняемые рутом /usr/sbin

Библиотеки /usr/lib

Ресурсы /usr/share

Конфшиг по умолчанию /etc

einhander ★★★★★
()
Последнее исправление: einhander (всего исправлений: 1)
Ответ на: комментарий от WitcherGeralt

[quote]В переводе на русский: если пакетируешь, пакетируй как человек, в /opt не клади.[/quote]Ok. Собственно и вопросы были, потому что хотел по-человечески ;)

almuhandis
() автор топика
Ответ на: комментарий от gremlin_the_red

Помещение приложения в /opt подразумевает помещение абсолютно всех файлов пакета в /opt/$vendor/$package. Т.е. ничего не должно быть ни в библиотеках, ни в /etc, ни в /usr/share.

Понятно. Я снова пересмотрел подход. Ниже объясню в чем дело

almuhandis
() автор топика
Ответ на: комментарий от WitcherGeralt

Нашел баг в бинарнике. Код работал раньше только как портабл. Переводил все пути к конфигам в соответствующую папку. Одно место пропустил и программа при запуске пыталась записать файл прямо там, откуда запускается. :) Исправил баг и теперь все в порядке.

В итоге структура такая

usr
  bin
  share
    applications
      ... ...
    doc
      ... ...

А конфиги создаются в папке ~/.config/MY_PROGRAM

almuhandis
() автор топика
Ответ на: комментарий от almuhandis

ожидается, что программа будет запущена только с помощью sudo

Кем или чем ожидается?

Зря я саркастично спрашивал, надо было спросить напрямую с чего ты это взял и попросить ошибку. Может тогда ты не стал бы игнорировать вопрос, и проблему локализовали гораздо раньше. Вечная проблема новичков на форуме, не хотят отвечать ни в какую.

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

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

Ну, я и сам жалею, что потерял некоторое время, копая не в том направлении. Спасибо в любом случае за попытку помочь

almuhandis
() автор топика

Я свою программу (на основе которой делал пакет deb) помещал в /opt. Причем со всеми библиотеками, конфигами и ресурсами (исключение иконки и *.desktop файл). В целом многие программы из сторонних источников устанавливаются так же. Считаю, что следовать стандартной структуре каталогов должны в первую очередь пакеты из стандартных репозиториев.

rumgot ★★★★★
()

На одном из моих старых проектов софтину помещали в /opt/ и горя не знали. Целевая система была Raspbian.

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

А чем лучше? Давай в ОС двадцать пять систем управления пакетами совать. Все эти новые системы управления пакетами ничего не решают и нужны просто для того, чтобы каждый программист кроме своего файлового менеджера написал еще систему управления пакетами.

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

Не соглашусь, deb и snap не конкурируют, а дополняют друг друга. Deb хорош для тех, кто хочет плотно с системой интегрироваться, а snap как раз для тех, кто либо хочет тащить с собой весь рантайм (т.е. большая часть проприетарного софта), или тех, кто не хочет в к конкретном дистрибутиве разбираться и как раз является цивилизованной альтернативой для помойки в /opt.

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

Deb хорош для тех, кто хочет плотно с системой интегрироваться

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

кто не хочет в к конкретном дистрибутиве разбираться

Тебе не столько нужно разбираться в конкретном дистрибутиве, сколько нужно разбираться с системой сборки пакета. Думаю тут что deb что snap не намного сложней или проще один одного.

А вот управлять ОС с несколькими системами управления пакетами - это уже неудобство. Тээкккс, этот пакет у меня через snap, этот через apt, или нет, через appimage, а нет бля, где же он делся. Это еще хуже винды.

А когда устанавливаешь пакет через apt, а тебе тут сообщение, что оппс, дальше установка пакета продолжится через snap - так это вообще капец (привет установка chromium в ubuntu). Еще бы там бля в snap пакете сделали продолжение установки через pacman…

Вот snap преподносится как более современная система управления пакетами, и там безопасность лучше, и атомарность, и версионность. Ну так переведите всю систему на него. Тогда ОК. Будем использовать. Но фиг с два. Ее используют только для тяжелых приложений со всеми зависимостями, причем для этого случая и обычный deb подходит.

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

Я не вижу проблем от использования пары систем управления пакетами. Хотя описанная ситуация с хромиумом - это беда. Я эти вещи просто разделяю: опенсорс - через deb, проприетарный софт (который зачастую тащит много барахла и раскладывает файлы не по общепринятым правилам) - через snap. В общем, опять же дело вкуса, но у меня еще от этого не пригорало.

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

если всю поддержку операционки перевести на снап, то получится тоже самое что имеем сейчас.
куча зависимостей раскиданных по разным пакетам.
теже яйтца, только в профиль.

pfg ★★★★★
()

Можешь в AppImage упаковать, тогда вообще с путями париться не надо, да и вне деб дистров можно будет софтину использовать без распаковки пакета.

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

Я эти вещи просто разделяю: опенсорс - через deb, проприетарный софт (который зачастую тащит много барахла и раскладывает файлы не по общепринятым правилам) - через snap

Так вот видишь. Для этого прекрасно подходит deb пакет. Т.е. здесь не используются хваленые преисущества snap над deb/apt, а используется то, что и так есть в deb/apt. Упаковать все библиотеки зависимости можно и в deb пакет, только лишь для этого иметь целую отдельную систему управления пакетами с отдельным репозиторием вообще нафиг не уперлось.

Я не вижу проблем от использования пары систем управления пакетами

А я вижу. По мне это как в машине два руля. Можешь и тем рулить и этим, только нафига.

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

Ну и что. Там же будут преимущества snap. Безопасная установка и обновление, атомарность операций, скорость, отсутствие проблем с зависимостями.

Где то же была инфа о том, что будут на snap целиком всю ubuntu переводить. И там так все плюсы расписывали. И где спрашивается? Или в canonical попробовали и сами решили, что херня получилась? И теперь эта штука используется только для установки тяжелых пакетов, что и без нее прекрасно можно сделать.

rumgot ★★★★★
()
Последнее исправление: rumgot (всего исправлений: 1)
Ответ на: комментарий от rumgot

Здрасьте. В 2017 году Canonical перестала заниматься непрофильными активами. Мобильные прикрыли, десктоп подрезвли.

Сборка Ubuntu чисто со SNAP доступна для IoT устройств этак года три как точно. У меня вон вертится — весьма удобно.

https://ubuntu.com/download/iot

fornlr ★★★★★
()
Последнее исправление: fornlr (всего исправлений: 1)
Ответ на: комментарий от fornlr

если б было все так клево и идеально, давно б все пересели на контейнерные пакеты. но чот буксует сия технология.

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

Здрасьте. В 2017 году Canonical перестала заниматься непрофильными активами. Мобильные прикрыли, десктоп подрезвли.

А что собственно «здрасте»? Планы то у них были и десктопную версию перевести. А по факту в десктопе сделали на отъе6ись.

Сборка Ubuntu чисто со SNAP доступна для IoT устройств этак года три как точно. У меня вон вертится — весьма удобно.

Ну дык вот именно. Удобно в том числе из-за того, что все только через этот snap. А когда и snap и apt/deb это удобства не добавляет. Вместо одного рычага зачем-то сделали два просто потому что «мы авторы snap и хотим его продвигать в дистрибутиве, к которому имеем некоторое отношение».

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