Cabal 安装(Cabal cabal-install)由于缺少 zlib 库而失败

问题描述 投票:0回答:2

我想在 Ubuntu 20.04 上安装 Cabal 3.4.0.0。

$ sudo apt install cabal-install
$ cabal --version
cabal-install version 2.4.0.0

$ sudo cabal update
$ sudo cabal install Cabal cabal-install
...
Starting     zlib-0.6.2.3
Failed to install zlib-0.6.2.3
Build log ( /root/.cabal/logs/ghc-8.6.5/zlib-0.6.2.3-93Wbo8gIIzI9bg4p2MsNUF.log ):
cabal: Entering directory '/tmp/cabal-tmp-126381/zlib-0.6.2.3'
Configuring zlib-0.6.2.3...
cabal: Missing dependency on a foreign library:
* Missing (or bad) header file: zlib.h
* Missing (or bad) C library: z
This problem can usually be solved by installing the system package that
provides this library (you may need the "-dev" version). If the library is
already installed but in a non-standard location then you can use the flags
--extra-include-dirs= and --extra-lib-dirs= to specify where it is.If the
library file does exist, it may contain errors that are caught by the C
compiler at the preprocessing stage. In this case you can re-run configure
with the verbosity flag -v3 to see the error messages.
If the header file does exist, it may contain errors that are caught by the C
compiler at the preprocessing stage. In this case you can re-run configure
with the verbosity flag -v3 to see the error messages.
...
cabal: Error: some packages failed to install:
cabal-install-3.4.0.0-3glzV3hM64DLoOfz3dHKsn depends on cabal-install-3.4.0.0
which failed to install.
hackage-security-0.6.0.1-KiAyVYLxooJAP3ckeQHnBD depends on
hackage-security-0.6.0.1 which failed to install.
zlib-0.6.2.3-93Wbo8gIIzI9bg4p2MsNUF failed during the configure step. The
exception was:
ExitFailure 1

错误提示:

这个问题通常可以通过安装系统包来解决 提供这个库(您可能需要“-dev”版本)。

如何在 Ubuntu 20.04 上安装此软件包?

haskell cabal cabal-install
2个回答
11
投票

您的目标是安装

cabal-install
软件包[Hackage]。这个包有一个依赖项,会产生一个问题:
zlib
[Hackage]

这个

zlib
包本质上是
zlib
C 库[wikipedia]
的薄包装。然而,正如错误所示,您没有安装
zlib
库,或者至少没有安装可以使用
zlib
库进行开发的软件包。

我们可以通过安装

libghc-zlib-dev
软件包来安装它,例如:

sudo apt-get install libghc-zlib-dev

如果我们检查 Debian 上的 软件包详细信息,我们会发现本质上这是一个将安装

zlib1g-dev
软件包的软件包,该软件包用于使用
zlib
库开发软件。因此,我们可以决定安装
libghc-zlib-dev
zlib1g-dev

sudo apt-get install zlib1g-dev

2
投票

Nixos 用户将

pkgs.haskellPackages.zlib
附加到
environment.systemPackages

© www.soinside.com 2019 - 2024. All rights reserved.