【问题标题】:Create debian package from executable jar source without using any tools and scripts不使用任何工具和脚本从可执行 jar 源创建 debian 包
【发布时间】:2014-09-03 12:15:40
【问题描述】:

我创建了一个基于http://packaging.ubuntu.com/html/packaging-new-software.html 示例的包。在此示例中,源是 c++ 文件。我想从可执行的 jar 文件源创建我的新包。 我找到了 maven、ANT 和 dhBuild 工具,但我不想使用这些工具。所以我需要一种方法来用命令行创建我的包。请给我一些提示或示例以了解最多。

【问题讨论】:

    标签: java ubuntu debian executable-jar


    【解决方案1】:

    我们的目标是创建一个包,只需将 shell 脚本放在我想要的位置。

    1. 创建一个目录来构建你的包。有些使用“deb”,有些使用“packages”。其他人创建一个目录结构,用于在“deb”(或其他)下制作多个包。

    mkdir deb

    1. 在 deb 中创建目录结构,表示您希望将脚本放置在哪里1

    mkdir -p ./deb/usr/local/bin

    3.将脚本复制到新目录中

    cp /path/to/my/script/myscript.sh ./deb/usr/local/bin/
    

    4.创建一个名为“DEBIAN”的子目录,这将存放包控制文件。

    mkdir -p ./deb/DEBIAN
    Create a control file.
    touch ./deb/DEBIAN/control
    

    5.打开控制文件,输入下面的文字。

    Package: myPackagename (no spaces or underscores allowed) 
    Priority: optional
    Section: misc
    Maintainer: Maintainer Name <user@mail.com> 
    Architecture: all 
    Version: 1.0       
    Depends: package1, package2, .........
    Description: short description here 
     long description here (don't remove space at the beginning of 
     line(replace this with an empty line)
    

    更改所有权:

    sudo chown -R root:root ./deb
    

    6.创建debian包。

    dpkg -b ./deb /my/output/destination/packagename.deb
    

    【讨论】:

      【解决方案2】:

      我不明白“不使用 debhelper”和“从 cmdline 创建包”是如何矛盾的。

      但是,由于您明确询问“不使用任何工具和脚本”创建包,因此您可以这样做:

      • 剖析现有的包

        • .deb 文件实际上只是一个重命名的 archive,所以你可以这样做 $ ar xf /path/to/package.deb
      • 研究包裹的内容 $ ls debian-binary control.tar.gz data.tar.gz debian-binary 文件包含包的格式版本(通常为 2.0

        data.tar.gz 文件包含实际的数据文件。

        control.tar.gz 包含有关包的控制信息,包括它的名称(和描述),它的依赖项;还有安装前和安装后的脚本等等。

      • 一旦您了解了 .deb 文件的内部工作原理,您就可以通过反转上述过程来创建一个:

        • 将您的数据压缩成data.tar.gz

        • 为您的 deb 创建控制信息并将其 tar 到 control.tar.gz

        • 创建一个包含您正在使用的二进制版本的debian-binary 文件: $ echo "2.0" > debian-binary

        • 通过运行从这些文件中创建一个deb $ ar q /tmp/mypackage.deb debian-binary control.tar.gz data.tar.gz

      但是,如果您真的知道自己在做什么,则应该执行上述操作。 创建包不是一项简单的任务。 这就是为什么人们创造了许多工具来帮助完成重复性任务的原因。

      使用它们!

      【讨论】:

      • tar 概念与 jar 文件无关。
      • deb 的概念是关于tar(和ar)。构成deb 的档案(和tar 文件)是否包含jarzip、二进制魔法或其他与您的问题无关。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-17
      • 2013-06-13
      • 1970-01-01
      • 2012-12-30
      • 1970-01-01
      相关资源
      最近更新 更多