AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1345
Accepted
akshatj
akshatj
Asked: 2010-08-06 21:38:36 +0800 CST2010-08-06 21:38:36 +0800 CST 2010-08-06 21:38:36 +0800 CST

什么是最简单的 Debian 打包指南?

  • 772

我去了 Ubuntu wiki 但很困惑,有太多方法了。请告诉我一个简单的 Debian 打包指南。

debian packaging
  • 7 7 个回答
  • 154310 Views

7 个回答

  • Voted
  1. Best Answer
    dv3500ea
    2010-08-07T10:50:50+08:002010-08-07T10:50:50+08:00

    这是创建基本.deb文件的好方法。它适用于创建.deb供个人使用的文件,但如果您希望将软件包包含在 Debian / Ubuntu 中则不够严格 - 为此您应该阅读Debian 新维护者指南和/或Ubuntu 打包指南(我相信你已经试过了)。

    检查.deb文件是否合规的一个好工具是lintian(可从存储库安装)。

    Ask Ubuntu 聊天室中有两个会议。

    Ubuntu 上打包的基础知识(打包:第 1 部分)

    Launchpad PPA 的 Ubuntu 打包(打包:第 2 部分)

    • 135
  2. Nathan Osman
    2010-08-06T22:11:51+08:002010-08-06T22:11:51+08:00

    您在哪些部分遇到问题?虽然很复杂,但当我按照指南进行操作时,它似乎很清楚。

    快速总结:

    • 提取源.tar.gz
    • 跑dh_make
    • 编辑 debian 文件
    • 运行反编译
    • 13
  3. Searock
    2010-12-17T01:12:04+08:002010-12-17T01:12:04+08:00

    您甚至可以dpkg-deb用于创建简单的包。

    这是来自Ubuntuforums的一个不错的教程。

    • 13
  4. karel
    2016-03-30T06:31:36+08:002016-03-30T06:31:36+08:00

    本指南最初发布在StackOverFlow上,适用于预编译或解释的软件:

    构建 deb 包的正确方法是使用dpkg-buildpackage,但有时它有点复杂。相反,您可以使用dpkg -b <folder>它,它将创建您的 Debian 软件包。

    dpkg -b <folder>这些是使用任何二进制文件或任何无需手动编译自动运行的脚本(Python、Bash、Pearl、Ruby)创建 Debian 软件包的基础知识:

    1. 创建文件和文件夹以重新创建以下结构:

      ProgramName-Version/
      ProgramName-Version/DEBIAN
      ProgramName-Version/DEBIAN/control
      ProgramName-Version/usr/
      ProgramName-Version/usr/bin/
      ProgramName-Version/usr/bin/your_script
      

      放置的脚本/usr/bin/是直接从终端调用的,注意我没有给脚本添加扩展名。您还可以注意到,deb 包的结构将是安装后程序的结构。因此,如果您的程序只有一个文件,则如果遵循此逻辑,则可以将其直接放在 . 下ProgramName-Version/usr/bin/your_script,但如果您有多个文件,则应将它们放在下面ProgramName-Version/usr/share/ProgramName/all your files,并且只在下面放置一个文件,/usr/bin/该文件将从中调用您的脚本/usr/share/ProgramName/

    2. 将所有文件夹权限更改为root:

       chown root:root -R /path/to/ProgramName-Version  
      
    3. 更改脚本的权限:

       chmod 0755 /path/to/the/script
      
    4. 最后,您可以运行:dpkg -b /path/to/the/ProgramName-Version您的 deb 包将被创建!(你也可以添加 post/pre inst 脚本和你想要的一切,它就像一个普通的 Debian 包一样工作)

    这是该control文件的示例。您只需将其复制/粘贴到一个名为“control”的空文件中,并将其放入 DEBIAN 文件夹中。

    Package: ProgramName
    Version: VERSION
    Architecture: all
    Maintainer: YOUR NAME <EMAIL>
    Depends: python2.7, etc , etc,
    Installed-Size: in_kb
    Homepage: http://foo.com
    Description: Here you can put a one line description.This is the short Description.
     Here you put the long description, indented by 1 space.
    
    • 9
  5. e8johan
    2010-08-06T21:44:56+08:002010-08-06T21:44:56+08:00

    打包东西最简单的方法是使用checkinstall。

    • 7
  6. Ade Malsasa Akbar
    2013-07-07T18:21:38+08:002013-07-07T18:21:38+08:00

    不,这个世界上最简单最清晰的包装指南是

    为 Ubuntu 和其他 Debian 打包 Java 应用程序

    几天前,对于我的第一个应用程序,我按照本教程创建了 DEB 包。非常清晰,我的应用程序打包成功。是的,至少它对我来说是最简单的。

    您可以将其与 Debian 打包指南进行比较。

    • 3
  7. Katu
    2022-01-12T02:42:50+08:002022-01-12T02:42:50+08:00

    根据接受的答案,我制作了一个 Python 脚本,它将按照本教程helloworld_1.0-1.deb创建一个包。你可以为你的包修改它。

    复制脚本并使用 Python 3 运行它:python3 create_debian_package.py

    #!/usr/bin/env python3
    """
    This script is going to create a debian package
    """
    import os
    
    print('This script is going to create a debian package')
    
    ###### EDIT THIS SECTION WITH YOUR PACKAGE INFORMATION ######
    include_hello_world_script = True # Set to False to manually copy your files and remove helloworld program
    package_name = 'helloworld'
    major_version = 1
    minor_version = 0
    package_revision = 1
    section = 'base'
    priority = ''
    architecture = 'i386' #Change to armhf for Raspberry Pi
    depends = '' #For example: libsomethingorrather (>= 1.2.13), anotherDependency (>= 1.2.6)
    maintainer = 'Your Name <[email protected]>'
    #The space before each line in the description is important
    package_description = """Hello World
     When you need some sunshine, just run this
     small program!
    """
    ###### NO EDITING NEEDED BEYOND THIS LINE ######
    
    version_name = str(major_version) + '.' + str(minor_version) + '-' + str(package_revision)
    full_package_name = package_name + '_' + version_name
    path = os.getcwd()
    package_folder = os.path.join(path, full_package_name)
    os.makedirs(package_folder, exist_ok=True)
    os.makedirs(os.path.join(package_folder, 'DEBIAN'), exist_ok=True)
    with open(os.path.join(package_folder, 'DEBIAN', 'control'), 'w') as file:
        file.write("""Package: """ + package_name + """
    Version: """ + version_name + """
    Section: """ + section + """
    Priority: """ + priority + """
    Architecture: """ + architecture + """
    Depends: """ + depends + """
    Maintainer: """ + maintainer + """
    Description: """ + package_description)
    
    if include_hello_world_script:
        script_destination = os.path.join(package_folder, 'usr/local/bin')
        os.makedirs(script_destination, exist_ok=True)
        helloworld_filename = os.path.join(script_destination, 'helloworld')
        with open(helloworld_filename, 'w') as file:
            file.write("""#!/usr/bin/env python3
    print('Hello World!')""")
        os.chmod(helloworld_filename, 0o755)
    
    input("Put your files in the package structure and press Enter to continue...")
    os.system('dpkg-deb --build ' + full_package_name)
    
    • 0

相关问题

  • Ubuntu 是基于 Debian 不稳定还是 Debian 测试?

  • 我的 PPA 的身份验证问题

  • 为自定义 PPA 修补 Wine 的正确方法是什么?

  • 我如何创建自己的 php 5.3.3 包/ppa?

  • 当上游维护者似乎不活跃时,如何将补丁应用于包?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何安装 .run 文件?

    • 7 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    如何获得 CPU 温度?

    • 21 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Marko Smith

    你如何重新启动Apache?

    • 13 个回答
  • Marko Smith

    如何卸载软件?

    • 11 个回答
  • Marko Smith

    如何删除 PPA?

    • 26 个回答
  • Martin Hope
    NES 如何启用或禁用服务? 2010-12-30 13:03:32 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    Olivier Lalonde 如何在结束 ssh 会话后保持进程运行? 2010-10-22 04:09:13 +0800 CST
  • Martin Hope
    David B 如何使用命令行将用户添加为新的 sudoer? 2010-10-16 04:02:45 +0800 CST
  • Martin Hope
    Hans 如何删除旧内核版本以清理启动菜单? 2010-08-21 19:37:01 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve