栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用CPack构建debian软件包以执行setup.py?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用CPack构建debian软件包以执行setup.py?

我想出了一种方法来做,但这不是很简单。我会尽力解释该过程,因此请耐心等待。

这种方法的想法是使用 postinstprerm 从系统安装和删除python应用程序。

在定义项目的 CMakeLists.txt 中,您需要声明 CPACK 将用于生成 .deb包
。有一些变量需要用与软件包本身相关的信息来填充,但是命名变量

CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
很重要,因为它用于指定
postinstprerm 的位置,它们是 debian打包系统的 标准脚本,在 dpkg
时会自动执行该软件包已安装/卸下。

主体的 某个点上,您

CMakeLists.txt
应该具有以下内容:

add_subdirectory(name_of_python_app)set(CPACK_COMPONENTS_ALL_IN_ONE_PACKAGE 1)set(CPACK_PACKAGE_NAME "fake-package")set(CPACK_PACKAGE_VENDOR "ACME")set(CPACK_PACKAGE_DEscriptION_SUMMARY "fake-package - brought to you by ACME")set(CPACK_PACKAGE_VERSION "1.0.2")set(CPACK_PACKAGE_VERSION_MAJOR "1")set(CPACK_PACKAGE_VERSION_MINOR "0")set(CPACK_PACKAGE_VERSION_PATCH "2")SET(CPACK_SYSTEM_NAME "i386")set(CPACK_GENERATOR "DEB")set(CPACK_DEBIAN_PACKAGE_MAINTAINER "ACME Technology")set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.3.1-6), libgcc1 (>= 1:3.4.2-12), python2.6, libboost-program-options1.40.0 (>= 1.40.0)")set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_SOURCE_DIR}/name_of_python_app/postinst;${CMAKE_SOURCE_DIR}/name_of_python_app/prerm;")set(CPACK_SET_DESTDIR "ON")include(CPack)

其中一些变量是 可选的 ,但出于教育目的,我在其中填充了信息。

现在,让我们看一下脚本:

postinst

#!/bin/sh# postinst script for fake_python_appset -ecd /usr/share/pyshared/fake_packagesudo python setup.py install

prerm

#!/bin/sh# prerm script## Removes all files installed by: ./setup.py installsudo rm -rf /usr/share/pyshared/fake_packagesudo rm /usr/local/bin/fake_python_app

如果您注意到了,脚本 postinst 将在 以下位置
进入

/usr/share/pyshared/fake_package
并执行该脚本,以将 setup.py
安装在系统上以安装该应用程序。该文件来自何处以及如何结束?该文件由您创建,并且在系统上安装软件包时将其复制到该位置。此操作在
name_of_python_app/CMakeLists.txt
以下位置配置:

install(FILES setup.py        DESTINATION "/usr/share/pyshared/fake_package")install(FILES __init__.py        DESTINATION "/usr/share/pyshared/fake_package/fake_package")install(FILES fake_python_app        DESTINATION "/usr/share/pyshared/fake_package/fake_package")install(FILES fake_module_1.py        DESTINATION "/usr/share/pyshared/fake_package/fake_package")install(FILES fake_module_2.py        DESTINATION "/usr/share/pyshared/fake_package/fake_package")

您可能会说,除了我要安装的python应用程序外,我还编写了2个自定义python模块,这些模块也需要安装。下面,我描述最重要的文件的内容:

setup.py

#!/usr/bin/env pythonfrom distutils.core import setupsetup(name='fake_package',      version='1.0.5',      description='Python modules used by fake-package',      py_modules=['fake_package.fake_module_1', 'fake_package.fake_module_2'],      scripts=['fake_package/fake_python_app']     )

_init _.py:是一个空文件。

fake_python_app :将安装在/ usr / local / bin中的python应用程序

就是这样!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/571154.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号