【问题标题】:Create a debian package to install python scripts to /usr/local/bin in Ubuntu在 Ubuntu 中创建一个 debian 包以将 python 脚本安装到 /usr/local/bin
【发布时间】:2014-01-07 02:41:20
【问题描述】:

我尝试创建一个 python 应用程序的 debian 包,如下所示:

  1. 写一个 setup.py
  2. 通过stddeb生成debian文件夹
  3. 运行 dpkg-buildpackage -b -rfakeroot -uc 构建 debian 包

setup.py 是这样的

#!/usr/bin/env python

from distutils.core import setup

setup(name='foo',
      version='1.0.0',
      description='Foo example',
      author='Kuan-Kai Chiu',
      author_email='ntu.kchiu@gmail.com',
      scripts=['src/foo.py']
     )

如何将 foo.py 安装到 /usr/local/bin 而不是安装到 /usr/bin?我知道在运行 python setup.py install 时有一个选项 --install-scripts=/usr/local/bin,但我必须对我的 python 应用程序进行 debianize,看起来无法指定 install-scripts 前缀。

提前致谢!

【问题讨论】:

    标签: python ubuntu package debian setuptools


    【解决方案1】:

    如果您只想在/usr/local/bin/ 中安装一个文件,请删除setup.py,因为它并不是真正需要的。如果你在你的包中使用dh(你可以通过检查它是否在你的debian/rules文件中被调用。如果你不使用它,你应该:-),那么你只需要使用 install 文件馈送 dh_install(参见其 manpage)。这个文件的语法很简单,你必须指定what要安装,以及哪里。您可以通过在包的根目录中发出以下命令来执行此操作:

    $ echo "src/foo.py usr/local/bin" > debian/install
    

    现在,由于您想在/usr/local/ 下安装脚本,这违反了 Debian 政策,dh_* 工具之一将失败。这个工具是dh_usrlocal。修复非常简单。我们只需要告诉debian/rules 我们不想运行它,我们可以通过覆盖它的行为来做到这一点。这就是您最终的debian/rules 的外观:

    #!/usr/bin/make -f
    # -*- makefile -*-
    
    %:
        dh $@ 
    
    override_dh_usrlocal:
    

    就是这样。运行dpkg-buildpackage,您应该在../ 中获得新的包。

    【讨论】:

      猜你喜欢
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-27
      相关资源
      最近更新 更多