![FPM 在尝试制作 deb 时失败 - 没有提供参数](https://linux22.com/image/831647/FPM%20%E5%9C%A8%E5%B0%9D%E8%AF%95%E5%88%B6%E4%BD%9C%20deb%20%E6%97%B6%E5%A4%B1%E8%B4%A5%20-%20%E6%B2%A1%E6%9C%89%E6%8F%90%E4%BE%9B%E5%8F%82%E6%95%B0.png)
这实际上是一个由两部分组成的问题。第一部分是尝试找出 FPM 无法正常工作的原因,第二部分是找出 FPM 是否是答案...
背景:我修补了一个开源软件包中的一些文件,我想用不同的名称重新打包这些文件,以便可以将其安装在现有软件包旁边(以防有人已经安装了主版本 - 我不想覆盖它)。我还想使用 deb,以便我可以管理依赖项并让人们使用 apt-get 来安装它。
我进行了一些谷歌搜索,发现 FPM 似乎是构建 .deb 的首选武器,但我无法让它工作。我安装了 0.4.29 版本,并且正在运行 Ubuntu 12.04。
这是我的代码目录中的内容(它是的输出sudo make install
):
~code
|_main_folder
|_ sub_1
|_ sub_2
|_sub 3
我正在尝试这样做:
sudo fpm -s dir -t deb -n "my_package" -v 1.0 -C ~/code/main_folder/
但我明白这一点:
No parameters given. You need to pass additional command arguments
so that I know what you want to build packages from. For example,
for '-s dir' you would pass a list of files and directories.
For '-s gem' you would pass a one or more gems to package from.
As a full example, this will make an rpm of the 'json' rubygem:
`fpm -s gem -t rpm json` {:level=>:warn}
Fix the above problems, and you'll be rolling packages in no time! {:level=>:fatal}
显然,我提供了几个参数,所以错误消息对我来说有点没用。我尝试了这个命令的几个不同变体,但没有一个能给我一个包。我想知道这是否是一个简单而明显的问题,但我真的不知道下一步该尝试什么。谷歌告诉我,这个问题似乎很多人都有,但我找不到任何解决方案……这让我怀疑 FPM 是否真的像它所说的那样……
所以如果不是的话 - 还有其他构建 .deb 文件的方法吗?我以前没有做过这个任务...
提前欢呼
附言:我想在问题中添加标签“fpm”,但我的声誉不够。这似乎是一个明智的标签,因此如果有声誉的人愿意添加它,那么它可能会在将来帮助其他人。
答案1
答案很简单,但也很烦人。显然 -C 会将 fpm 更改为目录,但即使我指定要打包目录,它仍然需要知道要打包哪些文件。我尝试了 *,但结果却出错了……但在末尾添加一个简单的“。”就可以解决问题。
工作命令(包括几个依赖项作为示例):
fpm -s dir -t deb -n my-package -v 1.0 -C /tmp/installdir/ -d pkgreqd -d libneedthis .