如何为Ubuntu 18.04构建deb软件包

我有兴趣为Ubuntu 18.04构建一个deb软件包。我找到了这篇文章对我很有帮助,如何从源代码创建NGINX debian软件包
我的问题是,使用root权限构建deb软件包是否安全?因为我必须使用sudo checkinstall,而不是checkinstall。
据我所知,我们不应该使用root权限构建rpm软件包。我想知道这个条件在deb软件包中是否适用。
谢谢您的回答。
1个回答

这个论坛帖子概述了创建用于分发的.deb软件包的基本方法,确实,这不需要root权限。我在这里复制它,并归功于论坛用户curvedinfinity,作为对所涉及基础知识的非常好的说明。

您提供的链接中描述的checkinstall工具并非主要用于一般.deb软件包准备。它主要用于以包管理器了解的方式安装您自己编译的软件。因此,它需要root权限。使用的技巧确实是创建特定于您系统的.deb文件,然后安装该文件。所创建的.deb文件可能并不适合一般分发。

curedfinityUbuntuforums中的摘录:

决定您的软件包名称。标准的Debian表示法是全部小写,格式如下:
<project>_<major version>.<minor version>-<package revision>

例如,您可以给您的第一个包命名...

helloworld_1.0-1

创建一个目录来制作你的软件包。目录的名称应与软件包的名称相同。
mkdir helloworld_1.0-1
假设打包目录实际上是文件系统的根目录。将程序文件放置在系统上安装它们的位置。
mkdir helloworld_1.0-1/usr
mkdir helloworld_1.0-1/usr/local
mkdir helloworld_1.0-1/usr/local/bin
cp "~/Projects/Hello World/helloworld" helloworld_1.0-1/usr/local/bin

现在创建一个特殊的元数据文件,包管理器将使用该文件来安装您的程序...
mkdir helloworld_1.0-1/DEBIAN
gedit helloworld_1.0-1/DEBIAN/control

把这样的东西放进那个文件里...
Package: helloworld
Version: 1.0-1
Section: base
Priority: optional
Architecture: i386
Depends: libsomethingorrather (>= 1.2.13), anotherDependency (>= 1.2.6)
Maintainer: Your Name <you@email.com>
Description: Hello World
 When you need some sunshine, just run this
 small program!

现在,假设您当前的目录是包含文件夹helloworld_1.0-1的目录,您只需要制作该软件包:

dpkg-deb --build helloworld_1.0-1

你完成了!
引用结束。

那么,在VPS生产服务器上安装由sudo checkinstall创建的deb软件包时,这是一种安全措施,对吗? - Abdul
我所概述的内容将是标准操作程序,不需要 root 权限。checkinstall 生成的 deb 文件可能符合您的需求,但需要使用 root 权限。如果您选择这种方式,与使用提升权限运行进程相关的一般安全注意事项也适用。根据标题、第一个和最后一个段落,您的问题主要关注的是在不需要 root 权限的情况下创建 deb 文件。 - vanadium
这样做然后安装到另一台机器上安全吗? - Abdul
请随意提出新问题。评论旨在改善问题和答案,而非用于讨论。 - vanadium
请原谅我的困惑。我只是一个对Linux基础知识一无所知的新手。 - Abdul
我还是对这部分有些困惑:cp "~/Projects/Hello World/helloworld" helloworld_1.0-1/usr/local/bin你能给我一个简单的解释吗? - Abdul
这是一个复制命令,将程序的已编译可执行文件复制到包含.deb文件的文件夹下的/usr/bin文件夹中。 - vanadium
那么,<dpkg-deb --build helloworld_1.0-1> 命令应该在哪里执行呢?是在 /DEBIAN 文件夹内部吗?还是在顶层文件夹中?能否请您再具体一些?谢谢! - Andor Kiss
好的,你需要移出刚刚创建的目录,并运行构建命令。 - Andor Kiss