为什么 Snowsql 不打开外部浏览器?

che*_*eak 7 snowflake-cloud-data-platform

我正在尝试snowsql在我的计算机上本地工作,但无法登录我的数据库,因为它要求我使用我的 google 帐户进行 SSO 身份验证。文档说使用应该打开本地浏览器并要求我登录的--authenticator externalbrowser选项,但这并没有发生,什么也没有发生。

例子:

$ snowsql -o log_level=DEBUG -a <account> -u <gmail> --authenticator externalbrowser
Initiating login request with your identity provider. A browser window should have opened for you to complete the login. If you can't see it, check existing browser windows, or your OS settings. Press CTRL+C to abort and try again...
Run Code Online (Sandbox Code Playgroud)

没有打开浏览器窗口。按下CTRL+C不会中止snowsql;我必须运行 pkill 来杀死它。我的最后一个日志显示

2021-06-17 14:48:12,211 (222954/MainThread) snowflake.connector.network DEBUG        network:940  - SUCCESS
2021-06-17 14:48:12,212 (222954/MainThread) snowflake.connector.network DEBUG        network:1096 - Active requests sessions: 0, idle: 1
2021-06-17 14:48:12,212 (222954/MainThread) snowflake.connector.network DEBUG        network:642  - ret[code] = None, after post request
2021-06-17 14:48:12,212 (222954/MainThread) snowflake.connector.auth_webbrowser DEBUG auth_webbrowser:123  - step 2: open a browser
2021-06-17 14:48:12,237 (222954/MainThread) snowflake.connector.auth_webbrowser DEBUG auth_webbrowser:136  - step 3: accept SAML token
Run Code Online (Sandbox Code Playgroud)

平台:

  • 平台是Arch Linux(内核版本5.12.10)
  • 默认浏览器是BROWSER=/usr/bin/firefox
  • snowsql --version说 1.2.15
  • 通过Snowflake-client AUR 包安装。(目前显示版本为 1.2.14,但我相信snowsql已更新至 1.2.15。)

che*_*eak 1

请参阅此答案以了解 Snowsql 不起作用的原因。tl;dr 它捆绑了自己的 libz 版本,并且在打开浏览器时不使用系统版本。

基于这个答案,我编写了一个小脚本,用系统 libz 替换捆绑的 libz。每当雪花更新时,您都需要运行它。

#!/usr/bin/env bash

VERSION=$(snowsql --version | cut -d' ' -f2)
LIBS="$HOME/.snowsql/$VERSION"
LIBZ="$LIBS/libz.so.1"
if ! [[ -L $LIBZ ]]
then
  mv -v $LIBZ{,-bak}
fi
SYSTEM=$(sudo find /usr -name libz.so* 2> /dev/null | head -n1)
ln -sfv $SYSTEM $LIBZ
Run Code Online (Sandbox Code Playgroud)