自定义 .deb 无法安装所有文件

自定义 .deb 无法安装所有文件

我正在开发一个专有的跨平台文件管理器,名为弗曼。我想将其作为.deb文件分发给 Ubuntu 用户,该文件可以从我的网站下载。我用它fpm来创建这个文件,它运行起来没有任何问题。

当用户安装 fman 时,我想添加一个/etc/apt/sources.list.d/指向我的更新服务器的文件。这将允许用户通过 Ubuntu 的包管理器(或通过apt-get)自动更新 fman。

我做了显而易见的事情:我将文件放在了.deb下的存档中etc/apt/sources.list.d/fman.list。问题是:/etc/apt/...当用户从.deb文件安装 fman 时,不会在 下创建此文件。

当我执行 时dpkg -x fman.deb some_dir/,文件fman.list在 正确创建some_dir/etc/apt/sources.list.d/fman.list。同样,当我dpkg-query -L fman在安装后执行 时,我确实得到了输出

/。
/ETC
/etc/apt
/etc/apt/sources.list.d
/etc/apt/sources.list.d/fman.list
...

.deb当我通过命令行安装文件时,我没有收到任何错误或警告。sudo dpkg -i fman.deb我尝试通过增加日志级别sudo dpkg -D 100 -i fman.deb。与之相关的唯一两行输出fman.list是:

D000100:setupvnamevbs main='/etc/apt/sources.list.d/fman.list' tmp='/etc/apt/sources.list.d/fman.list.dpkg-tmp' new='/etc/apt/sources.list.d/fman.list.dpkg-new'
D000100:setupvnamevbs main='/etc/apt/sources.list.d/fman.list' tmp='/etc/apt/sources.list.d/fman.list.dpkg-tmp' new='/etc/apt/sources.list.d/fman.list.dpkg-new'

在之前的某个时间点,我找到了一个文件/etc/apt/sources.list.d/fman.list.dpkg-dist。但是当我卸载 fman 时,该文件被删除了。后续安装 fman 时没有再生成该文件。

有人知道为什么/etc/apt/sources.list.d/fman.list我从文件安装 fman 时没有创建吗.deb

答案1

我知道问题出在哪里了。

.deb通过循环以下两个命令来测试我的文件:

  • sudo dpkg -i fman.deb
  • sudo dpkg -r fman(等价地,sudo apt-get remove fman

我发现... -r排除了配置文件。要删除配置文件,必须使用sudo dpkg -P fman

在我测试期间,我肯定/etc/apt/sources.list.d/fman.list在某个时候手动删除了它。但是dpkg(/ apt) 仍然记得它已经安装了该文件,所以下次我安装时它没有重新安装它dpkg -i(相当于,apt-get install)。

因此,解决方案是调用sudo dpkg -P fman。下次我这样做时,dpkg -i fman.deb文件fman.list就按预期创建了。

相关内容