Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 更改二进制打包应用程序及其调用命令的名称_Linux_Packages_Compilation_Rpm_Deb - Fatal编程技术网

Linux 更改二进制打包应用程序及其调用命令的名称

Linux 更改二进制打包应用程序及其调用命令的名称,linux,packages,compilation,rpm,deb,Linux,Packages,Compilation,Rpm,Deb,我已经获取了一个大型C项目AppA的源代码,并对其进行了修改以生成我的版本AppB。AppA和AppB都在Debian和Red Hat上干净地编译,现在我想为这两个平台构建二进制软件包 我需要做的最后一个修改是确保应用程序B可以与应用程序A一起安装而不受任何干扰。我应该能够在终端中调用app-a和app-b,并且在任何桌面环境中都作为单独的软件项列出 这些项目有一个debian/文件夹(包含rules、control等)和一个rpm/文件夹,其中包含一个SPEC文件。目前,构建和安装.rpm和.

我已经获取了一个大型C项目AppA的源代码,并对其进行了修改以生成我的版本AppB。AppA和AppB都在Debian和Red Hat上干净地编译,现在我想为这两个平台构建二进制软件包

我需要做的最后一个修改是确保应用程序B可以与应用程序A一起安装而不受任何干扰。我应该能够在终端中调用
app-a
app-b
,并且在任何桌面环境中都作为单独的软件项列出

这些项目有一个
debian/
文件夹(包含
rules
control
等)和一个
rpm/
文件夹,其中包含一个
SPEC
文件。目前,构建和安装.rpm和.deb包是可行的,但应用程序B被认为是应用程序A,因此不符合上述要求
ldd
显示程序具有相同的精确依赖性,我无法实现库的静态链接

我希望安装一个应用程序和该应用程序的修改版本,并将其识别为独立于我构建的.deb和.rpm文件的应用程序。


我需要对我的项目进行哪些修改才能达到预期的结果?请具体说明,因为我已经研究了软件包构建,但找不到解决此问题的材料。

我将回答Debian软件包的问题

  • 确保在两个变体中创建的二进制可执行文件的名称不同。例如,变量“A”将具有可执行文件
    /usr/bin/app-A
    ,变量“B”将具有
    /usr/bin/app-B
    。这应该是显而易见的,因为否则您将无法同时安装它们

  • 如果您的软件包含其他文件,如库或其他资源,则这些文件也需要放到不同的目录中,例如
    /usr/lib/app-a/…
    /usr/lib/app-b

  • 在每个项目中,编辑
    debian/control
    文件并更改创建的二进制软件包的名称。名称是
    包:
    字段的值。此外,您还需要更改源程序包的名称(
    source:
    字段,通常位于
    debian/control
    的最顶端)

  • (可选)如果这两个变体共享大多数文件,并且只有可执行文件(
    /usr/bin/app-{a,b}
    )不同,则您可能希望将两者合并到一个源程序包中,并从该单一源程序包生成三个二进制程序包:一个程序包包含两个项目共享的文件(
    程序包:app common
    ),每个变体各一个(
    包装:app-a
    包装:app-b
    )。然后,您需要一个
    Makefile
    来构建这两个变体,并为
    dh_install
    编写配置文件,将文件排序到正确的目录中(
    app-a
    需要进入
    debian/app-a/usr/bin
    和类似的
    app-b


  • 对于右侧,您必须编辑您记录的
    .spec
    文件,然后重新运行
    rpmbuild
    。有很多教程,但第一次通过“搜索和替换”将是一个很好的开始。