使用 fpm 制作 deb 包时设置自定义安装目录

far*_*dav 5 django packaging deb devops fpm

我正在使用 fpm 创建一个 deb 包,但是当我安装该 deb 包时,它安装到了错误的位置,我的 fpm 命令是:

fpm -f -s "dir" -t "deb" -a "all" -n "my_project" -v 1 -C "/tmp/tmpjWTuVp" /tmp/tmpjWTuVp/my_project
Run Code Online (Sandbox Code Playgroud)

我想打包的文件夹存在于/tmp/tmpjWTuVp/my_project,但每次我安装它时:

dpkg -i my_package.deb
Run Code Online (Sandbox Code Playgroud)

它将它安装到/tmp/tmpjWTuVp/my_project,理想情况下我希望它安装到/var/lib/my_project. 我已经尝试过--installdir--root使用我的dpkg命令,但它抱怨cannot access archive: No such file or directory

其他信息:

  • 我正在安装到 ubuntu 盒子上
  • 我对 deb 包装很陌生,所以可能错过了一些明显的东西
  • 我不受约束fpm并乐于听到其他可行的建议
  • 里面my_project是一个pythonvirtualenv和我的django项目

far*_*dav 3

写完这个问题后我立即随机找到了答案......

基本上,fpm 命令中的最后一个未命名参数可以包含一个等号分隔符,它定义要来自的目录和要安装到的目录,所以我最终使用的命令是:

fpm -f -s "dir" -t "deb" -a "all" -n "my_project" -v 1 -C "/tmp/tmpjWTuVp" my_project=/var/lib/my_project
Run Code Online (Sandbox Code Playgroud)

请注意my_project=/var/lib/my_project,左侧是我的项目的目录名称(相对的,因为我过去常常在查找包之前-C将目录更改为/tmp/tmpjWTuVp),右侧是我想要在远程计算机上安装的位置...