在打包 .deb
包时,文件名、路径、元数据的大小写和下划线需严格遵守规则,否则可能导致安装失败或冲突。以下是关键注意事项:
1. 包命名规则(control
文件)
- 只允许小写字母:包名必须全小写(如
my-package
),禁止大写(如My-Package
❌)。 - 允许字符:小写字母(
a-z
)、数字(0-9
)、加号(+
)、连字符(-
)、点(.
)。 - 禁止下划线:包名中不能使用下划线(如
my_package
❌),需用连字符替代(my-package
✅)。 - 版本号:允许使用
+
、-
、.
、~
和字母,但需符合 Debian 版本规范。
正确示例:
1
2
Package: my-app
Version: 1.0.0-1
2. 文件路径(安装到系统的文件)
- 大小写敏感:Linux 文件系统区分大小写。打包文件路径必须与运行时路径完全一致。
- 路径规范:
- 可执行文件 →
/usr/bin/
或/usr/sbin/
- 配置文件 →
/etc/
- 库文件 →
/usr/lib/
- 数据文件 →
/usr/share/
- 可执行文件 →
- 避免非常规大写:如非必要,路径名尽量全小写(如
/usr/share/my-app/data
✅,避免/usr/share/MyApp/Data
❌)。3. 维护者脚本(
preinst
/postinst
/prerm
/postrm
) - Shebang 规范:使用
#!/bin/sh
(非#!/bin/bash
),确保兼容性。 - 内部变量命名:脚本内的变量名避免使用大写(如用
app_name
而非AppName
),防止环境变量冲突。4. 严格检查工具
- 使用
lintian
检查错误: lintian ../*.deb # 检查包问题lintian
会捕获常见错误(如大小写、下划线、文件权限等)。
常见错误案例
错误类型 | 错误示例 | 修复方案 |
---|---|---|
包名含大写/下划线 | Package: My_App ❌ |
Package: my-app ✅ |
脚本路径大小写错误 | /usr/bin/MyApp ❌ |
/usr/bin/my-app ✅ |
配置文件路径不一致 | 安装到 /etc/MyApp.conf ,但程序读取 /etc/myapp.conf ❌ |
统一为小写路径 ✅ |
最佳实践总结
- 全小写命名:包名、路径、目录名一律小写。
- 用连字符替代下划线:如
my-app
而非my_app
。 - 测试安装路径:用
dpkg -c my.deb
查看包内文件路径是否合规。 - 虚拟机测试:在纯净 Debian/Ubuntu 环境中测试安装与运行。
遵循这些规则可避免因大小写/下划线引发的路径解析失败、依赖丢失等问题。