ffffffff0x / f8x

红/蓝队环境自动化部署工具 | Red/Blue team environment automation deployment tool

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

【功能建议】go安装指定版本

soapffz opened this issue · comments

默认安装的似乎是1.17版本

建议默认为1.18版本,增加额外选项安装最新版本

ok,下个更新就加上去

已更新,使用 -go 选项更新即可
image

我看主程序里都是直接写死版本,是为了稳定考虑嘛?
image

可否有直接升至最新版本功能,代码可参考

version=$(curl -L -s https://golang.org/VERSION?m=text)
if [[ $(eval type go $DEBUG_ERROR | grep -o 'go is') == "go is" ]] && [ "$version" = $(go version | cut -d " " -f3) ]; then
    printf "Golang is already installed and updated\n\n"
else
    eval wget https://dl.google.com/go/${version}.linux-amd64.tar.gz
    eval tar -C /usr/local -xzf ${version}.linux-amd64.tar.gz
fi
eval ln -sf /usr/local/go/bin/go /usr/local/bin/
rm -rf $version*
cat <<EOF >>~/.bashrc
# Golang vars
export GOROOT=/usr/local/go
export GOPATH=\$HOME/go
export PATH=\$GOPATH/bin:\$GOROOT/bin:\$HOME/.local/bin:\$PATH
EOF

参考上面的代码,我修改了下
image

image

师傅在看下,还有啥需求不

针对这个issue最后需求,能否像-py38一样,使用-go-latest或者之类的选项直接实现安装最新版本,因为一些环境下不支持用户输入,比如我自己的dockerfile 11

同理我相信其他的软件需要制定版本的时候也有类似需求,需要直接默认安装,而不是用户输入,当然在程序中维护每个软件的版本也不是易事,我也不知道有没有成熟的解决方案。。

  1. 设计时偏交互式的考虑较多,要支持跑在非交互式里的话,需要多加一些options选项,或if的判断
  2. 指定版本的话,python可以用pyenv,java可以用jenv,这2个f8x在安装python和oraclejdk时都自动安装配置了,而goenv感觉有点不稳,bug多,就没写到go的安装流程里

针对第一点这个,我后面在更新下对 /tmp/IS_CI 的检测即可
多版本的话,这个我看能不能通过配置文件实现

多谢师傅提出的这2个问题,我这几天研究研究,下个版本实现

关于第一点非交互式的场景优化,我看了下,其实大部分交互选项是关于代理、镜像源功能的,这个只要不运行-p就可以了
而师傅所说的安装 go 最新版,这里我加了几行,只需要在/tmp 创建个空的 IS_CI 文件,这里就跳过用户输入
image

第二点,指定版本,这里我了解到通过 . ./test.sh 这样同等进程运行可以修改当前shell环境变量,那么我这里对 f8x_version.sh 这个文件做个判断,当有这个文件时,会加载这个文件中的内容,也就是覆盖f8x的变量值,这样师傅只需要对f8x_version.sh 文件做修改或定制,即可做到安装指定版本
image

touch /tmp/IS_CI 文件之后,好像没能成功进行判断,装完还是1.17

暂时以这种方式实现了,感谢支撑

关闭issue