如何配置gdebi使其优先搜索本地挂载光盘中的自定义软件包?
如何配置gdebi使其优先搜索本地挂载光盘中的自定义软件包?
看来你在制作Jammy自定义ISO时遇到了gdebi死磕在线源的问题,旧版本能用新版本不行确实挺闹心的。我给你几个针对性的解决思路,你可以挨个试试:
方法一:给本地源设置最高优先级
gdebi本质是调用APT处理依赖,所以让APT优先认本地源是核心。你已经加了本地源,但可能优先级不够,我们可以通过APT pinning强制本地源优先级拉满:
- 在你的late_command脚本里,创建APT优先级配置文件:
cat > /etc/apt/preferences.d/local-cdrom-pin << EOF Package: * Pin: origin "" Pin-Priority: 1001 EOF
这个配置会让所有本地文件源的包优先级设为1001(远高于默认的500),APT会优先选本地包,不会再跑去在线源碰运气。
- 确保本地源配置正确并更新APT缓存:
echo 'deb [trusted=yes] file:/media/cdrom/pool/extras jammy main restricted' >> /etc/apt/sources.list apt update -y
方法二:强制APT离线模式
如果上面的方法没效果,我们可以直接让APT彻底断网,只能用本地资源。调用gdebi时加上离线参数:
gdebi --non-interactive --option Acquire::Offline=true /media/cdrom/pool/extras/你的自定义包.deb
Acquire::Offline=true会让APT跳过所有网络源的检查,只在本地已有的包和源里找依赖。
方法三:临时替换sources.list(粗暴但有效)
要是前两种都不行,我们可以在运行gdebi前,把所有在线源临时注释掉,只留本地源:
- 备份原sources.list:
cp /etc/apt/sources.list /etc/apt/sources.list.tmp
- 注释掉所有HTTP/HTTPS开头的在线源:
sed -i 's/^deb http/#deb http/' /etc/apt/sources.list sed -i 's/^deb https/#deb https/' /etc/apt/sources.list
- 添加本地源并更新缓存:
echo 'deb [trusted=yes] file:/media/cdrom/pool/extras jammy main restricted' >> /etc/apt/sources.list apt update -y
- 用gdebi安装目标包:
gdebi --non-interactive /media/cdrom/pool/extras/你的自定义包.deb
- 恢复原sources.list:
mv /etc/apt/sources.list.tmp /etc/apt/sources.list
额外提醒
- 确认
/media/cdrom挂载正确:Ubuntu安装过程中默认挂载点有时候是/cdrom而非/media/cdrom,你可以在脚本里用mount | grep cdrom检查一下。 - 确保本地
pool/extras里包含目标包的所有依赖包,不然就算断网,gdebi还是会因为找不到依赖报错。
备注:内容来源于stack exchange,提问作者Ani
相关产品推荐
相关产品推荐

