解决使用iso作为apt源时的WARNING: The following packages cannot be authenticated!
网上的将iso作为apt源的方法,基本都是如下几步(以debian为例):
1.mkdir /mnt/iso
2.编辑/etc/fstab,添加如下内容:
/path/debian.iso /mnt/iso udf,iso9660 loop 0 0
3.编辑/etc/apt/sources.list,添加如下内容:
deb file:///mnt/iso/ wheezy main contrib
4.如果做完前3步之后没重启的话,则执行如下命令:
mount /mnt/iso/
5.apt-get update
但是,做完以上步骤后,当sources.list中只有iso的apt源时,使用apt-get安装软件会出现如下警告:
WARNING: The following packages cannot be authenticated!
当sources.list中有其它的网络apt源时,使用apt-get安装软件时,还会从网络上下载安装包,
并且下载的安装包版本不比iso中的新。
前一种情况是因为,没有对/mnt/iso中包进行签名验证;
后一种情况是因为,网络上的apt源一般是已验证好的,且apt-get会优先选择已验证好的。
对/mnt/iso中的包进行验证比较麻烦,且本地的iso一般都是可信任的,因为我们一般都会使用官方的checksum进行校验。
所以,能不能使apt-get信任本地的iso的apt源呢?
通过查看man sources.list,发现了trusted=yes这个option,于是,将添加到/etc/apt/sources.list中的内容改为如下:
deb [ trusted=yes ] file:///mnt/iso/ wheezy main contrib
并且,iso的apt源在网络apt源的前边,
因为如果多个apt源中的包版本相同时会优先选择前边的apt源。
此时使用apt-get安装软件,如果iso的apt源中的包版本不比网络apt源中的旧时,就会自动选择iso的apt源进行安装,否则,就会使用网络apt源中的包来安装。
这是我们所希望的效果。