创建一个debian包,将python脚本安装到Ubuntu中的/ usr / local / bin

时间:2014-01-07 02:41:20

标签: python ubuntu package debian setuptools

我尝试按如下方式创建一个python应用程序的debian包:

  1. 写一个setup.py
  2. 通过stddeb生成debian文件夹
  3. 运行dpkg-buildpackage -b -rfakeroot -uc构建debian软件包
  4. 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前缀。

    提前致谢!

1 个答案:

答案 0 :(得分:3)

如果您只想在/usr/local/bin/中安装文件,请删除setup.py,因为它不是真正需要的。如果您在包中使用dh(您可以查看是否通过检查它是否在debian/rules文件中调用。如果您不使用它,您应该:-),那么你'只需向dh_install(请参阅其manpage)提供install文件。此文件的语法非常简单,您必须指定要安装的 ,以及其中。您可以通过在程序包的根目录中发出以下命令来执行此操作:

$ 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,您应该在../中获得全新的新软件包。