Debian系统本地重装已归档仓库软件包的可行性疑问
Debian系统本地重装已归档仓库软件包的可行性疑问
首先先给你明确几个关键点,帮你理清操作逻辑:
关于直接用
apt install --reinstall ./local_downloaded_release_package.deb的可行性:
这个命令是完全可以执行的。只要你的系统里之前已经通过仓库安装过这个包(apt有该包的安装记录),它会自动识别本地deb包,覆盖原有安装的文件。不过这里要注意Ruby gems的问题:如果原deb包是通过自身的post-install脚本安装依赖gems的,那重装时脚本大概率会重新运行,帮你安装所需的gems;但如果deb包依赖的是系统级的Ruby gem包(比如通过apt安装的ruby-xxx类包),apt会自动处理这些依赖,不用你操心。是否需要先执行
apt remove原包?
不是必须的。不过如果原包之前因为仓库失效留下了异常状态(比如配置文件错乱、依赖残留),先执行apt remove --purge 包名(这里是purge包本身,不是所有gems)再装本地deb,会得到更干净的安装状态。但如果之前的包状态正常,直接重装本地deb完全没问题。关于purge所有Ruby gems的风险提醒:
这一步一定要谨慎!系统里可能还有其他Ruby相关工具依赖这些gems,不是只有你要重装的这个包在用。全删gems很可能导致其他软件崩溃。建议你先排查出这个包专属的依赖gems:- 用
dpkg -L 你的包名查看包的安装文件,找有没有记录gems依赖的配置文件; - 查看包的安装脚本
/var/lib/dpkg/info/你的包名.postinst,里面通常会有安装gems的命令,能直接看到需要哪些gems。
之后只清理这个包相关的gems,或者先执行gem list > gem_backup.txt备份所有gems列表,再操作,以防万一。
- 用
最后给你个稳妥的操作流程建议:
- 先备份当前gems列表:
gem list > gem_list_backup.txt; - 查看目标deb包的post-install脚本,确认它如何处理gems依赖;
- 尝试直接运行
apt install --reinstall ./local_downloaded_release_package.deb,观察安装日志里是否有自动安装gems的步骤; - 如果安装后包无法正常运行,再根据脚本里的信息手动安装缺失的gems,或者从备份里恢复需要的内容;
- 如果还是有问题,再考虑彻底卸载原包(
apt remove --purge 包名),清理该包相关的gems,然后重新安装本地deb。
备注:内容来源于stack exchange,提问作者roughnecks




