启动certbot-auto时OLD_VENV_PATH报错问题求助
我之前在Solaris 11(也就是SunOS 5.11)部署certbot时也碰到过一模一样的问题,核心原因是certbot-auto脚本依赖bash的语法特性,但Solaris默认的shell(通常是ksh93或POSIX sh)不支持这种写法。下面是几个亲测有效的解决办法:
指定用bash运行certbot-auto
certbot-auto是为bash环境编写的,直接用bash执行脚本就能避开shell语法兼容问题:bash ./certbot-auto如果你的系统还没安装bash,可以通过Solaris的pkg包管理器安装:
pkg install bash修改脚本里的路径语法
如果你不想切换shell,也可以手动修改certbot-auto脚本中的报错行:找到包含OLD_VENV_PATH=~/.local/share/letsencrypt的那一行,把~替换成你用户主目录的绝对路径(比如/home/your_username/.local/share/letsencrypt)。修改后保存脚本,再重新运行即可。尝试安装Solaris原生的certbot包
部分第三方Solaris软件仓库提供了预编译的certbot包,你可以先搜索一下:pkg search certbot如果能找到对应的包,直接通过
pkg install安装会比用certbot-auto更省心,也不用依赖virtualenv的自动创建逻辑。验证当前shell的兼容性
你可以先在命令行测试当前shell是否支持~在变量赋值中的用法:TEST_PATH=~/.local/share/letsencrypt echo $TEST_PATH如果这行命令也报错,那基本可以确定是shell的语法支持问题,切换到bash是最稳妥的方案。
内容的提问来源于stack exchange,提问作者gmolau

