如何配置APT仅允许从软件包原始安装源自动更新软件包
如何配置APT仅允许从软件包原始安装源自动更新软件包
嗨,你的这个顾虑完全没问题——PPA确实给我们安装小众软件带来了方便,但一旦某个PPA被篡改,确实存在替换系统核心包的风险。好在APT本身就有对应的配置方法,能帮你限制每个软件包只能从它最初的安装源获取更新,下面给你详细说两种实用的方式:
方法一:针对特定包锁定原始安装源(APT Pinning)
这是最精准的方式,你可以给单个或一组包指定只能从某个源更新,操作步骤如下:
- 先确认包的原始源
打开终端,用下面的命令查看某个包的安装来源:
比如你想查apt-cache policy <你的包名>ubuntu-base的源,就输入apt-cache policy ubuntu-base,输出里会有Origin:字段,这就是它的原始安装源(比如Origin: Ubuntu就是官方源,PPA的话会显示Origin: LP-PPA-xxx)。 - 创建APT偏好配置文件
在/etc/apt/preferences.d/目录下新建一个配置文件(文件名可以随便取,比如99-lock-origins.pref),然后按照下面的格式添加内容:
这里的# 锁定ubuntu-base只能从官方源更新 Package: ubuntu-base Pin: origin "Ubuntu" Pin-Priority: 1001 # 锁定你从某个PPA安装的小众包只能从该PPA更新 Package: 你的小众包名 Pin: origin "LP-PPA-你的PPA名称" Pin-Priority: 1001 # 批量锁定系统核心包(比如apt、dpkg) Package: apt dpkg Pin: origin "Ubuntu" Pin-Priority: 1001Pin-Priority: 1001是关键——这个优先级高于APT默认的500,意味着APT只会从你指定的源更新这些包,哪怕其他源有更高版本的同名包也会忽略。
方法二:全局限制非原始源的更新优先级
如果你想更省心,不想一个个包去配置,可以把所有非官方源的优先级调低,让APT默认只优先从官方源更新,操作步骤如下:
- 编辑全局偏好文件
打开/etc/apt/preferences文件(如果没有就新建),添加下面的内容:
这样设置后,官方源的所有包优先级最高,PPA只能更新那些原本就是从该PPA安装的包(因为PPA的包版本通常比官方高,优先级500足够让APT更新这些包,但如果PPA试图替换官方核心包,因为官方源优先级更高,APT会拒绝安装)。# 官方源优先级最高 Package: * Pin: origin "Ubuntu" Pin-Priority: 1000 # 所有PPA源优先级调低,只能更新它们自己提供的包 Package: * Pin: release o=LP-PPA-* Pin-Priority: 500
最后要提醒一下:这种配置只能限制APT从非原始源更新包,但如果某个PPA本身被篡改,它依然可以更新自己提供的包——不过这已经是你能做到的最合理的风险限制了,和你的需求完全匹配。
备注:内容来源于stack exchange,提问作者Mitar
相关产品推荐
相关产品推荐

