ubuntu server

golang 项目部署服务器(开发阶段 测试用的)

突然,不好使了

报错好奇怪:

go.mod file indicates go 1.18, but maximum supported version is 1.17

我的项目用了泛型,编译部署服务器是 go 1.18.3, 本地开发环境也是 1.18.3

从今天开始不好使的,昨天还正常

百思不得其解半天, 突然发现, 服务器的

go version:

go version go1.17.13 linux/amd64

艹 怎么变成 1.17.13 了 我的 1.18.3 呢

服务器的 golang 是通过 snapd 安装的

当时是

snap install go latest/stable 安装的 当时就是 1.18.3 这是怎么搞的

看看 snap info go

golang 出了 1.19, 于是把 latest 从 1.18 指向 1.17? 这也是神操作了吧

这维护人员连个交叉确认都没有的么?

所以你为何要用 snap

?服务器上 snap ,这可太勇了

需要 1.18 就让 snap 去 track 1.18/stable ,latest channel 版本哪里能有保证。

我本人不用 snap 。

snap 经常有各种骚操作,我用 deb 包手动安装的 Docker ,不知道什么时候给我升级成 snap 版本了,apt 安装的 Firefox 现在也默认是走 snap ,这个算不算劫持?现在 Ubuntu Server 都默认会安装 snap ,吃像太难看了。

退 Ubuntu 入 Debian 保平安。

而且 snap 安装的软件,更新之后老版本貌似还不会主动删除,分享一个批量清理 snap 旧版本软件的脚本:


#!/bin/bash
#  superuser.com/a/1330590
# Removes old revisions of snaps
# CLOSE ALL SNAPS BEFORE RUNNING THIS set -eu

snap list --all | awk '/disabled/{print $1, $3}' |
 while read snapname revision; do
 snap remove "$snapname" --revision="$revision"
 done

我记得 snapd 刚推那会,apt full-upgrade 还会升级到 snapd 的东西,然后服务器又连不上直接把更新卡死。只能强行干掉 snapd 才能正常更新。

为什么要用 snap ?
为什么服务器要用 snap ?
为什么要用 snap 装 go ?

#1
#2
#3
#7
一个测试环境而已 省事第一 而且 后续版本出啥功能他跟着走也就看看兼容性了
当时 info 看到 latest 就是 1.18 就直接 latest 了

没猜错的话,这个 CHANNEL 是开发人员自己去定义的。

snap 是开发者直接交付二进制的,没有维护人员这种说法

所以可能是 go 的开发者没有这样做:

snapcraft upload go_1.19_amd64.snap --release=latest/stable/go

#9
go 的开发者不就是这个包的维护人员了
没标记 1.19 是 latest 没啥问题
把 latest 从 1.18 变成 1.17 简直搞笑...

所以关 snapd 什么事,要怪就怪薛定谔的 go 开发者啊

我也不喜欢 snap ,最初用 snap 安装 dbeaver ,过一段时间提示升级,自动跳转网页下载 deb 包又不能直接安装,于是干脆卸了 snap 版重装 deb 版。

ubuntu 加的料,感觉稍微有点多。

desktop 还行,server 的话。。还是 debian 吧。

#11

看维护者的邮箱,似乎是 canonical/ubuntu 的人?

好像不是 go 开发者负责的。

#13
我曾经是 debian 社区的一份子

当年已经被 debian 警察快喷退网了

所以 请不要拉我再进粪坑

真相大白了, 这位兄弟半夜搞的, 脑子不清楚搞错了, twitter.com/aenavarro/status/1557791677271646220

所以这种对版本敏感的东西安装时查一下版本号再指定安装才是正确的

#17
就是个开发的测试环境 也不是啥生产环境
生产环境不可能这么干的 我本身就是运维出身

#16
脑子不清楚的运维真的是要开除的
这行当最重要的就是操作谨慎

#16

看起来 半夜不适合搞东西 这话真的不是开玩笑的。。

#18

突然想起 gitlab 那事。。太狠了。