diff --git a/PKGBUILD b/PKGBUILD index b4eefd2..691b55f 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -4,7 +4,7 @@ _pkgname="calamares" pkgname="$_pkgname" pkgver=3.4.2 -pkgrel=2 +pkgrel=5 pkgdesc="Distribution-independent installer framework" url="https://codeberg.org/Calamares/calamares" license=("GPL-3.0-or-later") @@ -27,8 +27,15 @@ makedepends=( _pkgsrc="$_pkgname" _pkgext="tar.gz" -source=("calamares.zip") -sha256sums=('57b3b36d8cf67393ee8e81871106b2f4a5925c120173f92c6d77c8f6003f79d5') +source=("calamares.zip" +"calamares_polkit" +"49-nopasswd-calamares.rules" +"calamares.desktop") + +sha256sums=('d3c0e93e4103f602598eba446a1712f373c4feb83950aee4a283e7395232dc21' + 'b7f932912d33cfa188c0d06a25fb144ae6e0c69636ce90ed0a04ed2df0ae6ef3' + '56d85ff6bf860b9559b8c9f997ad9b1002f3fccc782073760eca505e3bddd176' + 'c9f38c31882f506306a771028ee70b5cc5b8c81eca3e252502151055a43a5e6c') build() { local _skip_modules=( diff --git a/calamares.desktop b/calamares.desktop index 7793ad7..30e3cad 100644 --- a/calamares.desktop +++ b/calamares.desktop @@ -10,7 +10,7 @@ Comment[da]=Installer styresystemet på disk Comment[de]=Manjaro Linux installieren Exec=/usr/bin/calamares_polkit %f Icon=calamares -Terminal=false +Terminal=true StartupNotify=true Type=Application Categories=Qt;System; diff --git a/calamares_polkit b/calamares_polkit index 9219bc4..27d2873 100644 --- a/calamares_polkit +++ b/calamares_polkit @@ -1,6 +1,65 @@ #!/bin/bash -if [ $(which pkexec) ]; then - sudo "/usr/bin/calamares" "$@" "-d" + +# 函数:检查网络连接 +# 尝试ping Google DNS,-c 1 只发送一个包,-W 2 超时2秒 +has_internet() { + ping -c 1 -W 2 8.8.8.8 > /dev/null 2>&1 + return $? # 返回ping的退出状态码 (0表示成功) +} + +echo "正在检查网络连接..." + +NETWORK_STATUS="offline" # 初始状态为离线 + +if has_internet; then + NETWORK_STATUS="online" + echo "网络已连接。" else - /usr/bin/calamares "$@" "-d" + echo "未检测到网络连接,将尝试等待最多30秒..." + for i in $(seq 1 30); do + echo "等待网络... ($i/30秒)" + if has_internet; then + NETWORK_STATUS="online" + echo "网络已连接。" + break # 成功连接,跳出循环 + fi + sleep 1 + done + + if [ "$NETWORK_STATUS" == "offline" ]; then + echo "在30秒内未能检测到网络连接。" + fi fi + +# 如果网络在线,尝试更新 Calamares +if [ "$NETWORK_STATUS" == "online" ]; then + echo "网络在线,尝试更新 Calamares..." + # 检查 pacman 是否存在,虽然在 Arch 系系统中通常都有 + if command -v pacman &> /dev/null; then + if sudo pacman -Sy --noconfirm tms-calamares-config; then + echo "Calamares 更新成功或已是最新版本。" + else + echo "Calamares 更新失败。可能会使用旧版本启动。" + fi + else + echo "未找到 pacman 包管理器,无法更新 Calamares。" + fi +else + echo "网络离线,跳过 Calamares 更新。" +fi + +# 启动 Calamares +echo "启动 Calamares 安装程序..." + +# 原始的 Calamares 启动逻辑 +if [ $(which pkexec) ]; then + # 如果 pkexec 存在,通过 sudo 运行 calamares + # 注意:这里沿用您原脚本的写法,即检查 pkexec 但仍使用 sudo。 + # 如果您希望通过 pkexec 提升权限,应改为 pkexec "/usr/bin/calamares" "$@" "-d" + sudo "/usr/bin/calamares" "$@" "-d" +else + # 否则,直接运行 calamares + /usr/bin/calamares "$@" "-d" +fi + +echo "Calamares 启动命令已执行。"