Как я могу запускать произвольные команды как часть установки пакета deb?

Я создаю пакет ppa deb для модуля python, заменяя пакет pip (который я также создал), и я хотел бы запустить «delete uninstall» как часть установки deb.

] Как я могу запустить «pip uninstall» как часть установки пакета ppa?

Я хочу это сделать, потому что установка pip в / usr / local / lib имеет приоритет над установкой deb в / usr / lib, поэтому пользователи, которые ранее устанавливали с помощью pip, могли непреднамеренно использовать старую версию pip при установке версии deb.

Я уже пробовал две вещи, ни одна из которых не работала, и я не знаю, почему (любые рекомендации по устранению этой проблемы были бы очень благодарны - я пробовал «dpkg --log = log.txt -i», но в журнале не было сообщений об ошибках удаления пупа):

A. выполнить удаление пула в setup.py

from setuptools import setup
from setuptools.command.install import install

import os.path
import subprocess

class CustomInstallCommand(install):
    def run(self):
        if os.path.exists("/usr/local/lib/python2.7/dist-packages/bamliquidatorbatch"): 
            print "Old pip bamliquidatorbatch install detected, attempting to remove"
            subprocess.call(["pip", "uninstall", "-y", "BamLiquidatorBatch"])

        install.run(self)

setup(
    ...
    cmdclass={
        'install': CustomInstallCommand,
    }
)

Это работало отлично, когда он был установлен с установкой sudo python setup.py, но удаление папок никогда не запускалось, когда пакет был установлен с «dpkg -i».

B. make pip uninstall в правилах makefile

#!/usr/bin/make -f

%:
    dh $@ --with python2 --buildsystem=python_distutils
    if [ -d "/usr/local/lib/python2.7/dist-packages/bamliquidatorbatch" ]; then pip uninstall -y BamLiquidatorBatch; echo; fi

Когда я запускал аналогичный код в make-файле напрямую, он работал нормально, но снова удаление pipe никогда не запускалось, когда пакет был установлен с «dpkg -i».

1
задан 3 October 2014 в 12:22

0 ответов

Другие вопросы по тегам:

Похожие вопросы: