#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 или вместо этого использовать существующий пакет со страницы разработчика.