Зависимость установки пакета Debian от Git?

#python #git #debian #packaging #debian-packaging

#питон #мерзавец #debian #упаковка #debian-упаковка #python #git

Вопрос:

У меня есть пакет Python, для которого требуется установить другой пакет. Этот пакет можно загрузить с чужой страницы на GitHub. Мне нужно превратить мой пакет в .файл deb. В настоящее время я делаю это с помощью stdeb. Возможно ли сделать так, чтобы при установке моего файла deb он также загружал файлы из git и выполнял «установку pip». на их setup.py ?

Комментарии:

1. Вопрос может показаться оффтопичным. (администрирование и, следовательно, установка пакетов — это тема дочернего сайта). Но я предполагаю, что вы спрашиваете со стороны программиста (например, для создания или развертывания материалов). В этом случае я думаю, что вы делаете что-то неправильно, но нам нужны некоторые дополнительные детали. Почему вы хотите создать файл .deb для таких случаев? Достаточно ли просто установить файлы (и, возможно, только для локального пользователя)?

2. Я создал программу, которая представляет собой просто скрипт на python, который можно использовать как библиотеку, так и оболочку. Я создал для этого пакет python. Теперь мне нужно превратить пакет python в пакет debian, что я также сделал, но после установки и запуска программы с терминала или путем ее импорта в другом скрипте я получаю сообщение об ошибке, что другой пакет python не установлен. Этот пакет python можно найти на github, и хотя его можно установить вручную, мне нужно, чтобы он был установлен вместе с моим пакетом debian. Этот пакет можно найти только в git в форме пакета python (setup.py )

3. В Debian, когда нам нужно упаковать пакеты, мы должны также упаковать все зависимости. но в целом: почему? Вы могли бы просто использовать локальную версию (для определенного пользователя и виртуальной среды). Этот метод намного лучше, чем устанавливать пакеты (со многими проблемами, связанными, например, с невозможностью обновления системного python в некоторых случаях).

Ответ №1:

Пакеты Debian должны быть автономными. Вы не знаете, что после установки пакета удаленный сервер Git будет существовать и что он будет содержать содержимое, которое вы хотите (например, они могли быть удалены или заменены вредоносным содержимым). Вы даже не обязательно знаете, что у вас будет сетевое подключение в это время.

Даже если в вашей среде вы это знаете, пакеты Debian этого не ожидают, поэтому файлы, которые вы загружаете через Git и генерируете с помощью pip , не будут удалены вашим пакетом, оставляя мусор в системе пользователя. Это означает, что будущие установки пакета могут прерваться из-за этого остатка, что приведет к трудным для отладки ошибкам.

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