修复

修复

我在网上查了一下,但所有安装步骤都是针对 16.04 版本的。18.04 版现在可用吗?如果可用,如何使用?

答案1

微软尚未提供适用于 18.04 版(2018 年 5 月 12 日)的官方 mssql-server,仅供测试,您可以尝试解决方法(来自我)。

在 Ubuntu 上安装 Microsoft SQL Server (mssql) 的解决方法

警告:仅供测试

  1. 从以下位置下载最新软件包 mssql-server_14.0.3025.34-3_amd64.debhttps://packages.microsoft.com/ubuntu/16.04/mssql-server-2017/pool/main/m/mssql-server/

  2. 更改目录

    cd ${HOME} && mkdir -p tmp/mssql/newpkg/DEBIAN/ && cd tmp/mssql
    wget https://packages.microsoft.com/ubuntu/16.04/mssql-server-2017/pool/main/m/mssql-server/mssql-server_14.0.3025.34-3_amd64.deb
    
  3. 解包

    dpkg-deb -x mssql-server_14.0.3025.34-3_amd64.deb newpkg/
    dpkg-deb -e mssql-server_14.0.3025.34-3_amd64.deb newpkg/DEBIAN/
    
  4. 调整

    sed -i -e 's#openssl (<= 1.1.0)#openssl (<= 1.1.1)#g' newpkg/DEBIAN/control
    cat newpkg/DEBIAN/control | grep openssl
    
  5. 重新包装

    dpkg-deb -b newpkg/ 18.04-mssql-server_14.0.3025.34-3_amd64_.deb
    
  6. 首次尝试,由于依赖关系,将会失败

    sudo dpkg -i 18.04-mssql-server_14.0.3025.34-3_amd64_.deb
    
  7. 安装依赖项

    sudo apt install -f
    
  8. 第二次尝试,应该可以做到

    sudo dpkg -i 18.04-mssql-server_14.0.3025.34-3_amd64_.deb
    
  9. 按照包中的消息设置 mssql 服务器

故障排除

数据库目录/var/opt/mssql不应该放在 zfs 数据集上,如果您使用 zfs,请创建一个 zvol 并将其格式化为 ext4/xfs。

错误:“转储收集线程 [4404] 遇到异常 [6]。退出。”
修复:sudo usermod -a -G disk mssql
原因:mssql 用户无法访问 zvol。

参考:

答案2

ca-certificates因此,Ubuntu 18.04 提供的和版本openssl实际上适用于mssql-server。据推测它拒绝是openssh因为 18.04 的版本1.1.0g-2ubuntu4在技术上“高于”mssql-server所要求的<=1.1.0(我认为他们应该使用,<1.1.1因为这仍然将你锁定在一个1.1.0变体上,同时允许特定于发行版的软件包版本这是你绝对应该预料到会遇到的事情但这无关紧要。

修复

  1. 安装依赖项
    sudo apt-get 安装 libunwind8 libnuma1 libc6 adduser libjemalloc1 libc++1 gdb debconf libcurl3 主机名 openssl python libgssapi-krb5-2 libsss-nss-idmap0 gawk sed
    (我完全意识到您可能已经安装了其中的大部分,这些只是所有声称的依赖项。)
  2. 下载软件包
    apt-get 下载 mssql-server
  3. 强制安装
    sudo dpkg --force-depends -i mssql-server_14.0.3025.34-3.deb
  4. 删除下载的 .deb 文件
    rm mssql-server_14.0.3025.34-3_amd64.deb
  5. 此时,运行任何 apt 命令都会导致它(无害地)抱怨 mssql-server 具有未满足的依赖关系并指示您运行:sudo apt --fix-broken install
    不要这样做。您将失去刚刚获得的一切。

    如果您确实希望该错误消失,请继续执行步骤 5,否则只需忽略它即可完成。

  6. 让 dpkg 确信一切正常
    1. sudo nano /var/lib/dpkg/status
       你喜欢的编辑器也可以
    2. 找到 mssql-server 的条目(对于 nano,它是 Ctrl-W,而不是 Ctrl-F)
    3. 将依赖行从 更改

      ...hostname, openssl (>= 1.0.1), openssl (<= 1.1.0), python (<= 2.7.0)...



      ...hostname, openssl (>= 1.0.1), openssl (< 1.1.1), python (<= 2.7.0)...

如果您强制安装了旧版本的ca-certificatesopenssl以进行mssql-server安装,则可以通过 强制升级它们apt-get install ca-certificates openssl。这将删除 mssql-server(但您的配置和数据库应保持不变)。然后您可以按照我的说明进行操作。

这应该可以避免你不得不处理重新包装物品的麻烦。你用它来在 dpkg 上玩弄花招,但这样做可能会(我承认这是基于没有研究的)使在官方 18.04 软件包发布时更容易升级,因为您避免创建和使用非官方软件包,并且升级到官方软件包会自动清理我们所做的更改。

答案3

微软已经更新了适用于 Linux 的 SQL Server 2017,现在它可以在 Ubuntu 18.04 中安装,但他们建议仅用于开发。

有关详细信息,请查看以下 Microsoft 博客文章: 在 Ubuntu 18.04 LTS 上安装适用于 Linux 的 SQL Server 2017

答案4

如果您使用的是 Ubuntu 18.10,则需要稍微修改 David Mortals 的答案,通过在步骤 4 中添加以下内容:

sed -i -e 's#libjemalloc1#libjemalloc2#g' newpkg/DEBIAN/control

这是假设libjemalloc2向后兼容libjemalloc1,到目前为止,在我的开发机器上它似乎运行良好。

相关内容