安装OSM本地化扩展时执行apt-get命令遇deb文件不支持错误求助
解决apt-get安装postgresql-osml10n deb包的错误
问题根源
从错误提示E: Unsupported file ../postgresql*osmll0n*amd64.deb given on commandline能看出两个核心问题:
- 通配符匹配异常,bash未正确展开你输入的
./postgresql-*-osml10n_*_amd64.deb,反而匹配到了含拼写错误(osmll0n,两个小写L)的文件路径 apt-get install对未正确展开的通配符支持有限,尤其是路径或文件名存在特殊字符时
解决步骤
1. 确认本地deb包的实际文件名
先列出当前目录下的目标deb包,明确正确的文件名:
ls -la ./postgresql-*-osml10n_*_amd64.deb
如果返回“没有找到文件”,说明当前目录无匹配包,可能是下载路径错误,或文件名不符合你输入的通配规则(比如实际文件名是postgresql-osml10n_xxx_amd64.deb,无中间的-*)。
2. 使用完整文件名直接安装
找到正确包后(比如实际名为postgresql-14-osml10n_3.4.1-1_amd64.deb),直接用完整路径执行安装:
sudo apt-get -y install ./postgresql-14-osml10n_3.4.1-1_amd64.deb
这种方式可彻底规避通配符展开错误的问题。
3. 若需用通配符,先让bash正确展开
如果必须使用通配符,可先将通配符结果赋值给变量,再执行安装:
DEB_FILE=$(ls ./postgresql-*-osml10n_*_amd64.deb) sudo apt-get -y install "$DEB_FILE"
此方法会先让bash把通配符展开为实际文件名,再传递给apt-get。
4. 核对文件名拼写(关键)
错误提示中的osmll0n是两个小写L,而你命令里写的是osml10n(字母L+数字1),这大概率是文件名拼写差异或输入笔误。仔细检查下载的deb包文件名,确保l10n部分是字母L+数字1+0+字母n。
额外方案
如果以上方法无效,可先用dpkg安装本地包,再用apt-get修复依赖:
sudo dpkg -i ./postgresql-*-osml10n_*_amd64.deb sudo apt-get -f install
dpkg对本地文件的通配符支持更友好,后续的apt-get -f install会自动处理缺失的依赖项。
内容的提问来源于stack exchange,提问作者Gaurav Ghare
相关产品推荐
相关产品推荐

