@@ -95,12 +95,17 @@ ensure_sqlcmd() {
|
||||
if command -v sqlcmd >/dev/null 2>&1; then
|
||||
return 0
|
||||
fi
|
||||
die "sqlcmd not found. Install Microsoft tools, then retry (same shell is OK):
|
||||
die "sqlcmd not found (no Microsoft mssql-tools18 on this machine yet).
|
||||
|
||||
Install it with (needs sudo; ~2 minutes):
|
||||
|
||||
$0 --install-deps
|
||||
|
||||
Or: export PATH=\"\$PATH:/opt/mssql-tools18/bin\"
|
||||
Or set: SQLCMD_PATH=/path/to/sqlcmd"
|
||||
Then re-run migrate-db. Quick check:
|
||||
|
||||
ls -la /opt/mssql-tools18/bin/sqlcmd
|
||||
|
||||
Or set SQLCMD_PATH=/full/path/to/sqlcmd if you installed sqlcmd elsewhere."
|
||||
}
|
||||
|
||||
ensure_clickhouse_client() {
|
||||
@@ -518,25 +523,41 @@ install_deps() {
|
||||
$SUDO apt-get update
|
||||
$SUDO apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release
|
||||
|
||||
# Microsoft ODBC + sqlcmd (Ubuntu codename: use current release; fall back if MS has no prod.list yet)
|
||||
# Microsoft ODBC + sqlcmd
|
||||
curl -fsSL https://packages.microsoft.com/keys/microsoft.asc \
|
||||
| $SUDO gpg --dearmor -o /etc/apt/trusted.gpg.d/microsoft.gpg
|
||||
local ms_ub ms_url
|
||||
ms_ub="$(lsb_release -rs)"
|
||||
ms_url="https://packages.microsoft.com/config/ubuntu/${ms_ub}/prod.list"
|
||||
if ! curl -fsSL "$ms_url" -o /tmp/mssql-release.list 2>/dev/null; then
|
||||
echo "$SCRIPT_NAME: No Microsoft prod.list for Ubuntu ${ms_ub}; trying 22.04 repo (packages often install on newer LTS)." >&2
|
||||
ms_ub="22.04"
|
||||
ms_url="https://packages.microsoft.com/config/ubuntu/${ms_ub}/prod.list"
|
||||
curl -fsSL "$ms_url" -o /tmp/mssql-release.list
|
||||
|
||||
local ms_rel ms_url
|
||||
ms_rel="$(lsb_release -rs)"
|
||||
if [[ "${ID:-}" == "debian" ]]; then
|
||||
ms_url="https://packages.microsoft.com/config/debian/${ms_rel}/prod.list"
|
||||
if ! curl -fsSL "$ms_url" -o /tmp/mssql-release.list 2>/dev/null; then
|
||||
echo "$SCRIPT_NAME: No Microsoft prod.list for Debian ${ms_rel}; trying 12 (bookworm)." >&2
|
||||
ms_url="https://packages.microsoft.com/config/debian/12/prod.list"
|
||||
curl -fsSL "$ms_url" -o /tmp/mssql-release.list
|
||||
fi
|
||||
else
|
||||
ms_url="https://packages.microsoft.com/config/ubuntu/${ms_rel}/prod.list"
|
||||
if ! curl -fsSL "$ms_url" -o /tmp/mssql-release.list 2>/dev/null; then
|
||||
echo "$SCRIPT_NAME: No Microsoft prod.list for Ubuntu ${ms_rel}; trying 22.04 repo." >&2
|
||||
ms_url="https://packages.microsoft.com/config/ubuntu/22.04/prod.list"
|
||||
curl -fsSL "$ms_url" -o /tmp/mssql-release.list
|
||||
fi
|
||||
fi
|
||||
$SUDO mv /tmp/mssql-release.list /etc/apt/sources.list.d/mssql-release.list
|
||||
$SUDO apt-get update
|
||||
ACCEPT_EULA=Y $SUDO apt-get install -y msodbcsql18 mssql-tools18 unixodbc-dev
|
||||
|
||||
export PATH="/opt/mssql-tools18/bin:/opt/mssql-tools/bin:${PATH:-}"
|
||||
if ! command -v sqlcmd >/dev/null 2>&1; then
|
||||
die "apt reported success but sqlcmd is still missing. Inspect package contents:
|
||||
dpkg -L mssql-tools18 2>/dev/null | grep -E '/sqlcmd$' || true
|
||||
Try: sudo apt-get install -f && sudo apt-get install -y msodbcsql18 mssql-tools18"
|
||||
fi
|
||||
|
||||
local path_line='export PATH="$PATH:/opt/mssql-tools18/bin"'
|
||||
grep -qF 'mssql-tools18/bin' "$HOME/.bashrc" 2>/dev/null || echo "$path_line" >>"$HOME/.bashrc" || true
|
||||
grep -qF 'mssql-tools18/bin' "$HOME/.profile" 2>/dev/null || echo "$path_line" >>"$HOME/.profile" || true
|
||||
export PATH="$PATH:/opt/mssql-tools18/bin"
|
||||
|
||||
# ClickHouse client
|
||||
$SUDO mkdir -p /etc/apt/keyrings
|
||||
|
||||
Reference in New Issue
Block a user