-
Notifications
You must be signed in to change notification settings - Fork 9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
官方安装脚本检查更新时比较版本的逻辑需要纠正 #2339
Comments
简单来说,对现在的安装脚本来说,版本 v4.22.1 是大于 v4.22.2-48-g16288788 的。 |
elif [[ $NEW_VER != $CUR_VER ]];then return 1 ……我没话讲了 |
將目前腳本的 266 行修改為: IF_VER="$(echo "$NEW_VER $CUR_VER" | awk '{ if ( $1 > $2 ) print $1; else print $2 }')"
if [[ $IF_VER == $NEW_VER ]]; then
return 1
fi 如何? |
這個解決思路不是很直觀,但確實應該可以 work,而且不至於在其他沒有想到的地方引起破壞,我覺得很好! |
今天再次測試了一下,發現並不精確,所以又重寫了一段,順便把 NEW_VERSIONSION_NUMBER="${NEW_VERSION#v}"
NEW_MAJOR_VERSION_NUMBER="${NEW_VERSIONSION_NUMBER%%.*}"
NEW_MINOR_VERSION_NUMBER="$(echo $NEW_VERSIONSION_NUMBER | awk -F '.' '{print $2}')"
NEW_MINIMUM_VERSION_NUMBER="${NEW_VERSIONSION_NUMBER##*.}"
CURRENT_VERSIONSION_NUMBER="$(echo ${CURRENT_VERSION#v} | sed 's/-.*//')"
CURRENT_MAJOR_VERSION_NUMBER="${CURRENT_VERSIONSION_NUMBER%%.*}"
CURRENT_MINOR_VERSION_NUMBER="$(echo $CURRENT_VERSIONSION_NUMBER | awk -F '.' '{print $2}')"
CURRENT_MINIMUM_VERSION_NUMBER="${CURRENT_VERSIONSION_NUMBER##*.}"
if [[ "$NEW_MAJOR_VERSION_NUMBER" -gt "$CURRENT_MAJOR_VERSION_NUMBER" ]]; then
return 1
elif [[ "$NEW_MAJOR_VERSION_NUMBER" -eq "$CURRENT_MAJOR_VERSION_NUMBER" ]]; then
if [[ "$NEW_MINOR_VERSION_NUMBER" -gt "$CURRENT_MINOR_VERSION_NUMBER" ]]; then
return 1
elif [[ "$NEW_MINOR_VERSION_NUMBER" -eq "$CURRENT_MINOR_VERSION_NUMBER" ]]; then
if [[ "$NEW_MINIMUM_VERSION_NUMBER" -gt "$CURRENT_MINIMUM_VERSION_NUMBER" ]]; then
return 1
else
return 0
fi
else
return 0
fi
else
return 0
fi 至於 PR 就不著急了,最近正在嘗試大改官方腳本。 |
這上面用了兩個非常有意思的 SHELL 語法,學習了。 @dctxmei |
多謝提供建議,已修正。 不過,像是 另外,如果對 OpenBSD 和腳本感興趣的話,可以來嘗試一下: :) |
你説的對,我有點多慮了。 |
請盡量不要使用已經被發行版官方停止支援的版本,目前最新的 Debian Stable 是 10(Buster): 腳本則可以嘗試使用新版的參考項目,參見 #2328 。 |
此问题我在Debian9 Debian10 Debian bullseye 都有遇到,而且是概率发生,连续执行脚本更新命令,有时可以正确判断是否更新,有时出现此错误。 |
试试最新的 |
重试了几次?你把logs贴出来 |
root@PR888D: 这是刚刚试的15次,10次出现这个错误,5次成功。Debian10。 |
似乎是 |
新的已经有人提出具体原因了#2373,你说得对。
|
fix #2374 |
This issue is stale because it has been open 120 days with no activity. Remove stale label or comment or this will be closed in 5 days |
What version of V2Ray are you using (If you deploy different version on server and client, please explicitly point out)?
v4.22.1
What's your scenario of using V2Ray? E.g., Watching YouTube videos in Chrome via Socks/VMess proxy.
从源代码构建了最新的 v2ray 版本,考虑到服务器上有官方的安装脚本每周运行一次检查更新,就传递参数 --check 看是不是真的会出现官方发布的相对较旧版本覆盖编译安装的新版本的现象。
What did you see? (Please describe in detail, such as timeout, fake TLS certificate etc)
安装脚本确实判断从源代码构建的包比官方发布的版本旧。
What's your expectation?
安装脚本能正确判断版本大小,不要主动覆盖旧版本回来。
~/go/src/v2ray.com/core# release/install-release.sh --local /tmp/make_v2ray_release/v2ray-custom-amd64-linux-20200316-064218.zip
~/go/src/v2ray.com/core# bash <(curl -L -s https://install.direct/go.sh) --check
值得注意的是,按照现在 GitHub 存储库上的 user-package.sh 代码,实际创建的版本号值是 v4.22.1-48-g16288788
我是已经考虑到小版本号相等可能会害脚本无法正确判断版本号大小,人为对 user-package.sh 构建脚本做过了调整,但是还是遇到了这个问题。
The text was updated successfully, but these errors were encountered: