Debian系统更新实现
只是想简单更新一下Debian,没有想到一下子遇到这么多错误过不去。
root@Opensource:~# apt update
Ign:1 cdrom://[Debian GNU/Linux 12.6.0 _Bookworm_ - Official amd64 DVD Binary-1 with firmware 20240629-10:19] bookworm InRelease
Err:2 cdrom://[Debian GNU/Linux 12.6.0 _Bookworm_ - Official amd64 DVD Binary-1 with firmware 20240629-10:19] bookworm Release
Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update cannot be used to add new CD-ROMs
Get:3 https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian bookworm InRelease [47.0 kB]
Err:3 https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian bookworm InRelease
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 7EA0A9C3F273FCD8
Get:4 https://download.docker.com/linux/debian bookworm InRelease [47.0 kB]
Get:5 https://download.docker.com/linux/debian bookworm/stable amd64 Packages [45.3 kB]
Reading package lists... Done
E: The repository 'cdrom://[Debian GNU/Linux 12.6.0 _Bookworm_ - Official amd64 DVD Binary-1 with firmware 20240629-10:19] bookworm Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
W: GPG error: https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian bookworm InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 7EA0A9C3F273FCD8
E: The repository 'https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian bookworm InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.
W: https://download.docker.com/linux/debian/dists/bookworm/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
......
一.解除cdrom错误问题
最前面的错误是因为cdrom的问题,在sources.list中将cdrom源用#注释掉。
root@Opensource:~# nano /etc/apt/sources.list
成功解决cdrome问题。
二.解决公钥的问题
在网上搜到解决方案是获取公钥。
失败1:
root@Opensource:~# apt-key adv --keyserver keyserver.ubunto.com --recv-keys 7EA0A9C3F273FCD8
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
Executing: /tmp/apt-key-gpghome.MJi3idqjeo/gpg.1.sh --keyserver keyserver.ubunto.com --recv-keys 7EA0A9C3F273FCD8
gpg: keyserver receive failed: No name
apt-key降级了,失败,换成gpg命令
失败2:
root@Opensource:~# gpg --keyserver keyserver.ubunto.com --recv-keys 7EA0A9C3F273FCD8
gpg: directory '/root/.gnupg' created
gpg: keybox '/root/.gnupg/pubring.kbx' created
gpg: keyserver receive failed: No name
还是失败,换一个公钥服务器,还是失败。
失败3:
root@Opensource:~# gpg --keyserver keyring.debian.org --recv-keys 7EA0A9C3F273FCD8
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0
再换公钥服务器,成功。
root@Opensource:~# gpg --keyserver hkps://keys.openpgp.org --recv-keys 7EA0A9C3F273FCD8
gpg: key 8D81803C0EBFCD88: new key but contains no user ID - skipped
gpg: Total number processed: 1
gpg: w/o user IDs: 1
再次update,还是同样的错误
root@Opensource:~# apt update
Get:1 https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian bookworm InRelease [47.0 kB]
Err:1 https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian bookworm InRelease
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 7EA0A9C3F273FCD8
失败4:
试着将docker的源也注释掉,换一个源试试
root@Opensource:~# nano /etc/apt/sources.list
root@Opensource:~# echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
https://download.docker.com/linux/debian \
bookworm stable" | sudo tee /etc/apt/sources.list.d/docker-official.list
deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian bookworm stable
再次update,还是同样的错误
失败5:
手工下载密钥
root@Opensource:~# curl -fsSL https://download.docker.com/linux/debian/gpg | \sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
这次提示错误变了。提示存在冲突,搞多了乱了。
root@Opensource:~# apt update
E: Conflicting values set for option Signed-By regarding source https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/ bookworm: /usr/share/keyrings/docker-archive-keyring.gpg != /usr/share/keyrings/docker-ce.gpg
E: The list of sources could not be read.
成功:
查找出重复内容
root@Opensource:~#grep -r "mirrors.tuna.tsinghua.edu.cn/docker-ce" /etc/apt/sources.list /etc/apt/sources.list.d
/etc/apt/sources.list:#deb https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian bookworm stable
/etc/apt/sources.list:deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian bookworm stable
/etc/apt/sources.list.d/docker.list:deb [arch=amd64 signed-by=/usr/share/keyrings/docker-ce.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian bookworm stable
使用编辑器用#注释掉多余的。
root@Opensource:~# nano /etc/apt/sources.list.d/docker.list
终于看到有5个包可以更新了。
root@Opensource:~# apt update
Get:1 https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian bookworm InRelease [47.0 kB]
Get:2 https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian bookworm/stable amd64 Packages [45.3 kB]
Hit:3 https://download.docker.com/linux/debian bookworm InRelease
Fetched 92.3 kB in 1s (101 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
5 packages can be upgraded. Run 'apt list --upgradable' to see them.
三.更新
查看更新包
root@Opensource:~# apt list --upgradable
root@Opensource:~# apt upgrade
但是更新的都是docker,Debian自己的更新包一个都没有,原因是原debian的cdrom源被我注释掉,也没有添加新的更新源。
root@Opensource:~# nano /etc/apt/sources.list.d/docker.list
# 将下面这些更新源添加进去
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware
# 更新
root@Opensource:~# apt update
root@Opensource:~# apt upgrade
# 启用自动更新
root@Opensource:~#apt install unattended-upgrades
root@Opensource:~#dpkg-reconfigure unattended-upgrades