在打包 .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 环境中测试安装与运行。
遵循这些规则可避免因大小写/下划线引发的路径解析失败、依赖丢失等问题。