一键升级的脚本
在PVE的shell中,执行如下脚本,即可完成如下三个操作:
1)将源更新为 USTC 的源。
2)执行 apt update 更新当前包更新
3)执行 apt dist-upgrade 执行版本升级
curl -o- http://vdi.doracloud.cn:9000/software/pveupdate.sh |bash
pveupdate.sh 脚本的内容
#!/bin/sh
# Author: DoraCloud Technology Ltd.co
#
# Date: 2022/05/07
#
# DoraCloud for Proxmox
# Phase 1: update source to mirrors.ustc.edu.cn
CODENAME=`cat /etc/os-release |grep PRETTY_NAME |cut -f 2 -d "(" |cut -f 1 -d ")"`
pve_version=$(pveversion|awk -F '/' '{print $2}'|cut -c1)
echo "Debian codename:$CODENAME PVE Version $pve_version"
# Modify Debian Source
# source.list
sed -i 's|^deb http://ftp.debian.org|deb https://mirrors.ustc.edu.cn|g' /etc/apt/sources.list
sed -i 's|^deb http://security.debian.org|deb https://mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list
#DEB822
sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debian.sources
# modify PVE source
#if [ -f /etc/apt/sources.list.d/pve-no-subscription.list ]; then
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/pve $CODENAME pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
#fi
if [ -f /etc/apt/sources.list.d/pve-enterprise.list ]; then
mv /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/pve-enterprise.list.bak
fi
if [ -f /etc/apt/sources.list.d/pve-enterprise.sources ]; then
mv /etc/apt/sources.list.d/pve-enterprise.sources /etc/apt/sources.list.d/pve-enterprise.sources.bak
fi
#echo "deb https://mirrors.ustc.edu.cn/proxmox/debian $CODENAME pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
if [ -f /etc/apt/sources.list.d/pve-no-subscription.sources ]; then
cat > /etc/apt/sources.list.d/pve-no-subscription.sources <<EOF
Types: deb
URIs: https://mirrors.ustc.edu.cn/proxmox/debian/pve
Suites: $CODENAME
Components: pve-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF
fi
# Modify source code to support ceph
sed -i 's|http://download.proxmox.com|https://mirrors.ustc.edu.cn/proxmox|g' /usr/share/perl5/PVE/CLI/pveceph.pm
if [ -f /etc/apt/sources.list.d/ceph.list ]; then
CEPH_CODENAME=$(ceph -v 2>/dev/null | grep ceph | awk '{print $(NF-1)}' | cut -d'-' -f1)
# 如果无法获取Ceph版本,根据PVE版本推断
if [ -z "$CEPH_CODENAME" ]; then
case $pve_version in
7) CEPH_CODENAME="pacific" ;;
8) CEPH_CODENAME="quincy" ;;
9) CEPH_CODENAME="reef" ;;
*) CEPH_CODENAME="quincy" ;;
esac
fi
. /etc/os-release
if [ "$pve_version" = "7" ]; then
# PVE 7使用不同的格式
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-$CEPH_CODENAME $VERSION_CODENAME main" > /etc/apt/sources.list.d/ceph.list
else
# PVE 8/9使用no-subscription格式
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-$CEPH_CODENAME $VERSION_CODENAME no-subscription" > /etc/apt/sources.list.d/ceph.list
fi
fi
if [ -f /etc/apt/sources.list.d/ceph.sources ]; then
CEPH_CODENAME=`ceph -v | grep ceph | awk '{print $(NF-1)}'`
. /etc/os-release
cat > /etc/apt/sources.list.d/ceph.sources <<EOF
Types: deb
URIs: https://mirrors.ustc.edu.cn/proxmox/debian/ceph-$CEPH_CODENAME
Suites: $VERSION_CODENAME
Components: no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF
fi
apt update -y
apt dist-upgrade -y