Installation failed
Simon Peyton Jones
simonpj at microsoft.com
Fri May 31 19:47:36 UTC 2019
Reinstalling cabal-install (from Hackage) via cabal-install is currently not well exercised codepath. People usually install cabal from either Herbert's PPA, via ghcup or chocolatey package managers. So even I don't see reason installing cabal-install via cabal-install shouldn't work, I don't recommend it.
I have never heard of Herbert's PPA, or ghcup, or choclatey. Cabal is a Haskell program, hosted on Hackage, so shouldn't I install it with cabal? At least that's what I thought.
Of course, there's a chicken-and-egg problem there. I think I started with
bash$ sudo apt install autoconf emacs git ghc cabal-install haskell-stack alex happy
Mind you, I recall that I then got incomprehensible crashes when running cabal - something about "futex error". Then I think someone held my hand and got it going - and that might have involved a repository of Herbert's. But I quickly forgot, because I understood it as a temporary hack needed until some pretty major bug was fixed. (Which leads me to ask: is the futex-error crash fixed? Maybe it's a WSL bug?)
Anyway this is all a roundabout way of saying that it's a surprise to me that I can't use cabal to update itself.
Sorry to be so dim ... but other users may be too so in a way I'm trying not to be too clever :-). Thanks for beign responsive.
Simon
From: Oleg Grenrus <oleg.grenrus at iki.fi>
Sent: 31 May 2019 09:47
To: Simon Peyton Jones <simonpj at microsoft.com>; cabal-devel at haskell.org
Subject: Re: Installation failed
Sorry, I wrote non-sense, the command is
cabal user-config update
--
cabal-install-3.0.0.0 is the latest (and in fact non-released) version you can have. Your last (failed) attempt actually wanted to install cabal-install-2.4.1.0!
Reinstalling cabal-install (from Hackage) via cabal-install is currently not well exercised codepath. People usually install cabal from either Herbert's PPA, via ghcup or chocolatey package managers. So even I don't see reason installing cabal-install via cabal-install shouldn't work, I don't recommend it.
The zlib.h failure is related to no zlib library - development parts installed. On Ubuntu the headers can be installed by "apt-get install zlib1g-dev". Unfortunately I have no experience with WSL, if that's as easy there.
- Oleg
On 31.5.2019 11.17, Simon Peyton Jones wrote:
Few points, If you run Windows 10 (Pro?), you can setup to make symlinks without needing administrator privileges
Actually I've now switched to using the Windows Subsytem for Linux (WSL), which works pretty well and means that I don't need to be the beta-tester for windows :-). I should have said - this thread is about Ubuntu Linux in WSL.
- `cabal update-config` should populate your ~/.cabal/config with new default configuration. which will have install-dir: there too. You can also manually edit it to add the new configuration option.
Alas not:
bash$ cabal update-config
cabal: unrecognised command: update-config (try --help)
bash$ cabal --version
cabal-install version 3.0.0.0
compiled using version 3.0.0.0 of the Cabal library
Perhaps my cabal is out of date. Hmm. Maybe I should try to update it?
bash$ cabal update cabal
cabal: 'v2-update' repo(s): "cabal" can not be found in known remote repo(s):
hackage.haskell.org
Nope. Maybe I should just install it afresh? Maybe that would update it?
basj$ cabal install cabal
Resolving dependencies...
cabal: Could not resolve dependencies:
[__0] trying: cabal-0.0.0.0 (user goal)
[__1] unknown package: youProbablyWantCapitalCabal (dependency of cabal)
[__1] fail (backjumping, conflict set: cabal, youProbablyWantCapitalCabal)
After searching the rest of the dependency tree exhaustively, these were the
goals I've had most trouble fulfilling: cabal, youProbablyWantCapitalCabal
Oh dear. I have a vague hind-brain memory that you have to install "cabal-install" rather than "cabal". Let's try that.
<long output shown later>
That failed too. Clutching at straws, that "youProbablyWantCapitalCabal" is suggestive. Let's try:
bash$ cabal install Cabal
Resolving dependencies...
Up to date
cabal: installdir is not defined. Set it in your cabal config file or use
--installdir=<path>
Back to that again.
I'm not truly stuck on any of this. But somehow my high failure rate is discouraging, and I thought you'd probably want to know how I stumbled.
Where could I read about the difference between "cabal install Cabal" and "cabal install cabal-install"?
Simon
Here's the cabal install cabal-install output, which has a totally new failure. Something about zlib.h, but I have no idea how to fix it.
simonpj at MSRC-3645512:~/tmp$ cabal install cabal-install
Resolving dependencies...
Build profile: -w ghc-8.6.4 -O1
In order, the following will be built (use -v for more details):
- async-2.2.1 (lib) (requires download & build)
- base16-bytestring-0.1.1.6 (lib:base16-bytestring) (requires download & build)
- base64-bytestring-1.0.0.2 (lib) (requires build)
- cryptohash-sha256-0.11.101.0 (lib) (requires download & build)
- digest-0.0.1.2 (lib:digest) (requires download & build)
- echo-0.1.3 (lib) (requires download & build)
- ed25519-0.0.5.0 (lib) (requires download & build)
- edit-distance-0.2.2.1 (lib) (requires download & build)
- hsc2hs-0.68.4 (exe:hsc2hs) (requires download & build)
- network-uri-2.6.1.0 (lib) (requires download & build)
- tar-0.5.1.0 (lib) (requires download & build)
- zlib-0.6.2 (lib) (requires download & build)
- resolv-0.1.1.2 (lib:resolv) (requires download & build)
- network-3.1.0.0 (lib:network) (requires download & build)
- zip-archive-0.4.1 (lib) (requires download & build)
- hackage-security-0.5.3.0 (lib) (requires download & build)
- HTTP-4000.3.13 (lib) (requires download & build)
- cabal-install-2.4.1.0 (exe:cabal) (requires download & build)
Downloading base16-bytestring-0.1.1.6
Starting base64-bytestring-1.0.0.2 (lib)
Downloaded base16-bytestring-0.1.1.6
Downloading cryptohash-sha256-0.11.101.0
Starting base16-bytestring-0.1.1.6 (all, legacy fallback)
Downloaded cryptohash-sha256-0.11.101.0
Downloading digest-0.0.1.2
Starting cryptohash-sha256-0.11.101.0 (lib)
Building base64-bytestring-1.0.0.2 (lib)
Downloaded digest-0.0.1.2
Downloading ed25519-0.0.5.0
Building base16-bytestring-0.1.1.6 (all, legacy fallback)
Starting digest-0.0.1.2 (all, legacy fallback)
Downloaded ed25519-0.0.5.0
Downloading zlib-0.6.2
Starting ed25519-0.0.5.0 (lib)
Building cryptohash-sha256-0.11.101.0 (lib)
Downloaded zlib-0.6.2
Downloading resolv-0.1.1.2
Installing base16-bytestring-0.1.1.6 (all, legacy fallback)
Starting zlib-0.6.2 (lib)
Building ed25519-0.0.5.0 (lib)
Installing base64-bytestring-1.0.0.2 (lib)
Downloaded resolv-0.1.1.2
Downloading echo-0.1.3
Completed base16-bytestring-0.1.1.6 (all, legacy fallback)
Completed base64-bytestring-1.0.0.2 (lib)
Downloaded echo-0.1.3
Downloading hsc2hs-0.68.4
Starting echo-0.1.3 (lib)
Downloaded hsc2hs-0.68.4
Downloading network-3.1.0.0
Starting hsc2hs-0.68.4 (exe:hsc2hs)
Installing cryptohash-sha256-0.11.101.0 (lib)
Downloaded network-3.1.0.0
Downloading edit-distance-0.2.2.1
Completed cryptohash-sha256-0.11.101.0 (lib)
Building echo-0.1.3 (lib)
Downloaded edit-distance-0.2.2.1
Downloading tar-0.5.1.0
Starting edit-distance-0.2.2.1 (lib)
Building hsc2hs-0.68.4 (exe:hsc2hs)
Downloaded tar-0.5.1.0
Downloading async-2.2.1
Starting tar-0.5.1.0 (lib)
Downloaded async-2.2.1
Downloading network-uri-2.6.1.0
Installing echo-0.1.3 (lib)
Starting async-2.2.1 (lib)
Installing ed25519-0.0.5.0 (lib)
Building edit-distance-0.2.2.1 (lib)
Downloaded network-uri-2.6.1.0
Downloading zip-archive-0.4.1
Starting network-uri-2.6.1.0 (lib)
Completed echo-0.1.3 (lib)
Completed ed25519-0.0.5.0 (lib)
Building tar-0.5.1.0 (lib)
Downloaded zip-archive-0.4.1
Downloading HTTP-4000.3.13
Building async-2.2.1 (lib)
Building network-uri-2.6.1.0 (lib)
Downloaded HTTP-4000.3.13
Downloading hackage-security-0.5.3.0
Downloaded hackage-security-0.5.3.0
Downloading cabal-install-2.4.1.0
Downloaded cabal-install-2.4.1.0
Installing async-2.2.1 (lib)
Installing edit-distance-0.2.2.1 (lib)
Completed async-2.2.1 (lib)
Completed edit-distance-0.2.2.1 (lib)
Installing hsc2hs-0.68.4 (exe:hsc2hs)
Completed hsc2hs-0.68.4 (exe:hsc2hs)
Installing network-uri-2.6.1.0 (lib)
Completed network-uri-2.6.1.0 (lib)
Installing tar-0.5.1.0 (lib)
Completed tar-0.5.1.0 (lib)
Failed to build digest-0.0.1.2. The failure occurred during the configure
step.
Build log (
/home/simonpj/.cabal/logs/ghc-8.6.4/digest-0.0.1.2-14bc149eb1d9c6a16b30ce20fef469dafeaea1cbba4f9615d23d3b4f1a2da8bd.log
):
Configuring digest-0.0.1.2...
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.
Failed to build zlib-0.6.2. The failure occurred during the configure step.
Build log (
/home/simonpj/.cabal/logs/ghc-8.6.4/zlib-0.6.2-2039caedabd32f9ed378900645b72766a462d68bf828625f67296cbc28fa173e.log
):
Configuring library for zlib-0.6.2..
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: Failed to build digest-0.0.1.2 (which is required by
cabal-install-2.4.1.0). See the build log above for details.
Failed to build zlib-0.6.2 (which is required by cabal-install-2.4.1.0). See
the build log above for details.
From: Oleg Grenrus <oleg.grenrus at iki.fi><mailto:oleg.grenrus at iki.fi>
Sent: 30 May 2019 20:30
To: Simon Peyton Jones <simonpj at microsoft.com><mailto:simonpj at microsoft.com>; cabal-devel at haskell.org<mailto:cabal-devel at haskell.org>
Subject: Re: Installation failed
Hi again Simon,
Few points, If you run Windows 10 (Pro?), you can setup to make symlinks without needing administrator privileges. I used https://github.com/git-for-windows/git/wiki/Symbolic-Links<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fgit-for-windows%2Fgit%2Fwiki%2FSymbolic-Links&data=02%7C01%7Csimonpj%40microsoft.com%7C08337e4ce9e648d5bc1408d6e5a48b08%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636948892232865256&sdata=0fPAqXV4ZiDRlp4OG2mMwo3vGBBaeGVsl2M61BfGoQk%3D&reserved=0> guide. Unfortunately I don't remember all the details I did (i.e. if the guide is complete), but enabling Developer Mode is easy to forget.
About installing and symlinking:
- `cabal update-config` should populate your ~/.cabal/config with new default configuration. which will have install-dir: there too. You can also manually edit it to add the new configuration option.
- Most of install woes are fixed in March [1], but there weren't a release with those fixes.
- [1] https://github.com/haskell/cabal/pull/5870
<https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fhaskell%2Fcabal%2Fpull%2F5870&data=02%7C01%7Csimonpj%40microsoft.com%7C08337e4ce9e648d5bc1408d6e5a48b08%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636948892232870247&sdata=wTMiOj89EWExEHm6%2BzDEjkMpNA6RRsnN%2BjW9zvESWZA%3D&reserved=0>
Cheers,
Oleg
On 30.5.2019 16.57, Simon Peyton Jones wrote:
Dear Cabal developers
More woe:
simonpj at MSRC-3645512:~$ cabal install lhs2tex
Resolving dependencies...
Up to date
cabal: installdir is not defined. Set it in your cabal config file or use
--installdir=<path>
In the olden days, didn't cabal install by default in ~/.cabal/bin?
Never mind, let's do what it asks:
simonpj at MSRC-3645512:~$ cabal install lhs2tex --installdir=/usr/bin
Resolving dependencies...
Up to date
Symlinking 'lhs2TeX'
/usr/bin/lhs2TeX: createSymbolicLink: permission denied (Permission denied)
Darn: I need to be super-user. Fine:
simonpj at MSRC-3645512:~$ sudo cabal install lhs2tex --installdir=/usr/bin
[sudo] password for simonpj:
cabal: unrecognized 'install' option `--installdir=/usr/bin'
OK _now_ I really am stumped. It asked me to provide that option, and now it says it's unrecognised.
(This is in a bash shell running in emacs, if it makes a difference.)
What next?
Thanks
Simon
_______________________________________________
cabal-devel mailing list
cabal-devel at haskell.org<mailto:cabal-devel at haskell.org>
http://mail.haskell.org/cgi-bin/mailman/listinfo/cabal-devel<https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fmail.haskell.org%2Fcgi-bin%2Fmailman%2Flistinfo%2Fcabal-devel&data=02%7C01%7Csimonpj%40microsoft.com%7C08337e4ce9e648d5bc1408d6e5a48b08%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C636948892232875238&sdata=HC9PmIf%2BCyBoDmhg%2BbUiJTyDEmH5pa3Az5Ru%2FIiIyYU%3D&reserved=0>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/cabal-devel/attachments/20190531/75146e80/attachment-0001.html>
More information about the cabal-devel
mailing list