我正在开发一个 debian 软件包,通常安装在 /tftpboot/linux/ 中。该软件包也分布在 UCS(Univention Corporate Server)上,这是一个基于 debian 的服务器系统。
他们需要另一个目录(/var/lib/univention-client-boot)中的这些文件。如何调整相应的 debian 文件以使其识别系统是否为 UCS,然后将文件移动到该目录,或在安装此 deb 文件期间链接这些目录?
答案1
您需要一个dpkg
能够理解它需要使用与/
.我还没有听说过这样的野兽。
如果这只是偶然情况,您可以手动将包裹解压到指定位置:
dpkg-deb --extract whatever.deb /var/lib/univention-client-boot/
这将简单地使用该位置作为根转储打包文件。没有记录正在安装的软件包,也没有运行任何安装前/安装后脚本。
如果您自己构建 .deb,则应该-UCS
专门为该系统制作一个单独的版本(例如添加到版本中)。在构建 .deb 之前,您需要在暂存区域中创建必要的目录结构。
答案2
您可以在 .postinst 脚本中执行此操作 - 检查它是否已安装在 UCS 服务器上并创建所需的目录结构(在 /var/lib/var/lib/univention-client-boot 下)和 symlnks。
请注意,如果您想遵循 debian 政策,则应将符号链接设置为相对路径(相对于包含符号链接的目录),而不是绝对路径。对于私有包,没有必要严格遵守 Debian 政策。
您还应该有一个 .postrm 或 .prerm 脚本,用于在删除包时删除符号链接(以及目录,如果它们为空)。