Hi
I've been trying to install GHC and some libraries on Windows 7 for
some time now, to no avail.
I'm on Windows 7 Home Premium here, and I'd like to install all
Haskell-related stuff in C:\Weiteres\Haskell (cabal --user
installations ending up in C:\Users\Thomas\AppData\Roaming\cabal is
fine).
Actually I would like to make system-wide package installations (maybe
in C:\Weiteres\Haskell\cabal), but not even --user is working fine so
far, so I postpone that.
I see two basic options:
* Haskell Platform (older release, but all relevant libs bundled with
it)
* ghc and libs installed by hand (newer release, but more hassle)
For the first option I expect a nice installer that just does
everything for me, for the second option I'm going along with the
instructions in Real World Haskell's appendix.
So far, none of it worked. ghc is fine (mostly), but cabal is a total
mess.
I've just tried the second option and actually I've got quite far,
until the network library didn't install. I don't have any specifics
anymore.
And whichever option I choose I can only make --user installs with
cabal (but I'd be willing to settle for that).
Okay, let's skip all this "manual installation stuff", on to the
beginner-friendly first option: Haskell platform
I specify the destination folder "C:\Weiteres\Haskell\Platform" and
just go with the default selection of checkboxes.
Now I'm trying ghci from the start menu... okay, it works.
Entering Windows' command prompt I now enter "cabal update".
There is a newer version of cabal-install available. I'm ignoring that
for now. I don't want to mess up a tested, working cabal-install
version and deviate from the Haskell Platform release just yet.
Now "cabal install hakyll --user":
C:\Users\Thomas>cabal install hakyll --user
Resolving dependencies...
Downloading pandoc-1.3...
[1 of 1] Compiling Main ( C:\Users\Thomas\AppData\Local\Temp\pandoc-
1.35032\pandoc-1.3\Setup.hs, C:\Users\Thomas\AppData\Local\Temp\pandoc-1.35032\p
andoc-1.3\dist\setup\Main.o )
Linking C:\Users\Thomas\AppData\Local\Temp\pandoc-1.35032\pandoc-1.3\dist\setup\
setup.exe ...
Configuring pandoc-1.3...
Preprocessing library pandoc-1.3...
Preprocessing executables for pandoc-1.3...
Building pandoc-1.3...
src\Text\Pandoc\Shared.hs:121:7:
Could not find module `System.IO.UTF8':
There are files missing in the `utf8-string-0.3.6' package,
try running 'ghc-pkg check'.
Use -v to see a list of the files searched for.
cabal: Error: some packages failed to install:
hakyll-0.2 depends on pandoc-1.3 which failed to install.
pandoc-1.3 failed during the building phase. The exception was:
exit: ExitFailure 1
That went well. :-(
"ghc-pkg check":
C:\Users\Thomas>ghc-pkg check
There are problems in package binary-0.5.0.2:
import-dirs: C:\Users\Thomas\AppData\Roaming\cabal\binary-0.5.0.2\ghc-6.10.4
oesn't exist or isn't a directory
library-dirs: C:\Users\Thomas\AppData\Roaming\cabal\binary-0.5.0.2\ghc-6.10.4
doesn't exist or isn't a directory
file Data\Binary.hi is missing
file Data\Binary\Put.hi is missing
file Data\Binary\Get.hi is missing
file Data\Binary\Builder.hi is missing
cannot find libHSbinary-0.5.0.2.a on library path
There are problems in package digest-0.0.0.8:
import-dirs: C:\Users\Thomas\AppData\Roaming\cabal\digest-0.0.0.8\ghc-6.10.4
oesn't exist or isn't a directory
library-dirs: C:\Users\Thomas\AppData\Roaming\cabal\digest-0.0.0.8\ghc-6.10.4
doesn't exist or isn't a directory
file Data\Digest\CRC32.hi is missing
file Data\Digest\Adler32.hi is missing
cannot find libHSdigest-0.0.0.8.a on library path
There are problems in package template-0.1.1.1:
import-dirs: C:\Users\Thomas\AppData\Roaming\cabal\template-0.1.1.1\ghc-6.10.
doesn't exist or isn't a directory
library-dirs: C:\Users\Thomas\AppData\Roaming\cabal\template-0.1.1.1\ghc-6.10
4 doesn't exist or isn't a directory
file Text\Template.hi is missing
cannot find libHStemplate-0.1.1.1.a on library path
There are problems in package utf8-string-0.3.6:
import-dirs: C:\Users\Thomas\AppData\Roaming\cabal\utf8-string-0.3.6\ghc-6.10
4 doesn't exist or isn't a directory
library-dirs: C:\Users\Thomas\AppData\Roaming\cabal\utf8-string-0.3.6\ghc-6.1
.4 doesn't exist or isn't a directory
file Codec\Binary\UTF8\String.hi is missing
file Codec\Binary\UTF8\Generic.hi is missing
file System\IO\UTF8.hi is missing
file System\Environment\UTF8.hi is missing
file Data\String\UTF8.hi is missing
file Data\ByteString\UTF8.hi is missing
file Data\ByteString\Lazy\UTF8.hi is missing
cannot find libHSutf8-string-0.3.6.a on library path
There are problems in package zip-archive-0.1.1.4:
import-dirs: C:\Users\Thomas\AppData\Roaming\cabal\zip-archive-0.1.1.4\ghc-6.
0.4 doesn't exist or isn't a directory
library-dirs: C:\Users\Thomas\AppData\Roaming\cabal\zip-archive-0.1.1.4\ghc-6
10.4 doesn't exist or isn't a directory
file Codec\Archive\Zip.hi is missing
cannot find libHSzip-archive-0.1.1.4.a on library path
There are problems in package haddock-2.4.2:
import-dirs: c:/builds/slave/x86-win-stable/build/ghc-6.10.4\haddock-2.4.2 do
sn't exist or isn't a directory
library-dirs: c:/builds/slave/x86-win-stable/build/ghc-6.10.4\haddock-2.4.2 d
esn't exist or isn't a directory
file Distribution\Haddock.hi is missing
file Haddock\DocName.hi is missing
file Haddock\Types.hi is missing
file Haddock\InterfaceFile.hi is missing
file Haddock\Exception.hi is missing
file Haddock\Utils.hi is missing
file Haddock\GHC\Utils.hi is missing
cannot find libHShaddock-2.4.2.a on library path
The following packages are broken, either because they have a problem
listed above, or because they depend on a broken package.
binary-0.5.0.2
digest-0.0.0.8
template-0.1.1.1
utf8-string-0.3.6
zip-archive-0.1.1.4
haddock-2.4.2
Excuse me? Broken packages right after installation?
Okay, reinstalling them all (with --user --reinstall").
Except haddock:
C:\Users\Thomas>cabal install haddock --user --reinstall
Resolving dependencies...
cabal: cannot configure haddock-2.6.0. It requires ghc >=6.12 && <6.14
There is no available version of ghc that satisfies >=6.12 && <6.14
*sigh*
I'm starting to think about the manual installation of ghci and the
libs again... but I won't do it, because it gives me all other kinds
of pain (like "let's ship the mingw tool chain, but don't enter it
into the PATH, the user will certainly know where to find ar.exe and
how to make cabal use it when building a package"). I'm failing there
just as much as here with the Platform.
Okay, let's forget about haddock.
Back to hakyll:
"cabal install hakyll --user"
Ends with:
Linking dist\build\markdown2pdf\markdown2pdf.exe ...
Created man\man1\pandoc.1
Created man\man1\hsmarkdown.1
Created man\man1\html2markdown.1
Created man\man1\markdown2pdf.1
setup.exe: CreateDirectory: permission denied (Zugriff verweigert)
cabal: Error: some packages failed to install:
hakyll-0.2 depends on pandoc-1.3 which failed to install.
pandoc-1.3 failed during the final install step. The exception was:
exit: ExitFailure 1
Okay, remember that cabal-install was out of date?
"cabal install cabal-install" ends with:
Linking dist\build\cabal\cabal.exe ...
cabal: Error: some packages failed to install:
cabal-install-0.6.4 failed during the final install step. The exception was:
CreateDirectory: permission denied (Zugriff verweigert)
Would be nice to know which directory cabal-install tried to create,
don't you think?
(This was just thrown in to show why I've only user user installations
so far).
Okay, the same with "--user" succeeds. Yay!
Let's try pandoc again:
Linking dist\build\markdown2pdf\markdown2pdf.exe ...
Created man\man1\pandoc.1
Created man\man1\hsmarkdown.1
Created man\man1\html2markdown.1
Created man\man1\markdown2pdf.1
setup.exe: CreateDirectory: permission denied (Zugriff verweigert)
cabal: Error: some packages failed to install:
pandoc-1.3 failed during the final install step. The exception was:
exit: ExitFailure 1
*sigh*
What is cabal trying to do outside the battle-proven AppData-Cabal
directory anyways?
Let's revisit the phrase "beginner-friendly first option". :-/
Just for fun's sake, let's have a look into cabal's config file, since
I seem to have some directory trouble:
install-dirs user
-- prefix: C:\Users\Thomas\AppData\Roaming\cabal
-- bindir: $prefix\bin
-- libdir: $prefix
-- libsubdir: $pkgid\$compiler
-- libexecdir: $prefix\$pkgid
-- datadir: "C:\\Program Files (x86)\\Haskell"
-- datasubdir: $pkgid
-- docdir: $prefix\doc\$pkgid
-- htmldir: $docdir\html
-- haddockdir: $htmldir
install-dirs global
-- prefix: "C:\\Program Files (x86)\\Haskell"
-- bindir: $prefix\bin
-- libdir: $prefix
-- libsubdir: $pkgid\$compiler
-- libexecdir: $prefix\$pkgid
-- datadir: "C:\\Program Files (x86)\\Haskell"
-- datasubdir: $pkgid
-- docdir: $prefix\doc\$pkgid
-- htmldir: $docdir\html
-- haddockdir: $htmldir
I certainly don't have a "C:\\Program Files (x86)\\Haskell"
folder.
Might that result in problems? I don't know, because I have no clue
what's supposed to be in the datadir. But then again I shouldn't have
to meddle with some installed configuration file, especially since
there has been no warning that I had to do that and very especially
since I entered my destination folder upon installation. Maybe it's
okay, but it kind of makes me nervous. And God knows what else I
haven't stumbled upon yet.
(I changed those directory entries to the ghc installation directory
when I tried the second option and couldn't make it work either.)
Has anyone who is *not* a Haskell/ghc/cabal expert been able to
install Haskell satisfactorily on Windows 7?
What are my options now? Any stupid mistakes I made? Waiting for the
next release of the Haskell Platform (whenever that might happen)?
Giving up, selling RWH on ebay and preparing New Year's Eve
celebrations?
Thomas
_______________________________________________
Haskell-Cafe mailing list
Haskel...@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
Has anyone who is *not* a Haskell/ghc/cabal expert been able to
install Haskell satisfactorily on Windows 7?
I suspect the problem you are having is specifically with Pandoc.
Pandoc has a couple of dependencies on C libraries: network and zlib
are two - they are part of the Haskell platform so they would be
working in the first place (I have a mostly vanilla install of Haskell
platform on Windows and whilst Haddock does appear to be broken via
ghc-kpg check, the other libraries / tools are fine*). Pandoc also
depends on the zip-archive library which then depends on the digest
library.
Digest seems to depend on C internals of the zlib library. Now, zlib
package is part Haskell platform and it includes a binary library of
(the C) zlib and the source headers, so it might be possible to build
digest by itself but you might end up needing cygwin or MinGW / msys
(I've built it just now under Cygwin).
Trying to installing digest before Pandoc is one possibility - if it
fails, at least it will show if further attempts to install Pandoc are
going to be futile.
[*] The broken packages you listed from ghc-pkg check appear to be
caused by cabal chasing the extra dependencies for Pandoc but then
failing part way through the whole installation. Some of them look
like plain Haskell packages to me (utf-8string), rather than bindings
to C libraries, so if they were installed individually I'd expect them
to work.
Best wishes
Stephen
> The following packages are broken, either because they have a problem
> listed above, or because they depend on a broken package.
> binary-0.5.0.2
> digest-0.0.0.8
> template-0.1.1.1
> utf8-string-0.3.6
> zip-archive-0.1.1.4
> haddock-2.4.2
>
> Excuse me? Broken packages right after installation?
Except for haddock, none of these packages come with the Haskell
Platform. These are packages that you must have installed previously. So
ghc-pkg check is quite right to report them.
> Okay, reinstalling them all (with --user --reinstall").
>
> Except haddock:
>
> C:\Users\Thomas>cabal install haddock --user --reinstall
> Resolving dependencies...
> cabal: cannot configure haddock-2.6.0. It requires ghc >=6.12 && <6.14
> There is no available version of ghc that satisfies >=6.12 && <6.14
Right, try installing the same version as you've got currently rather
than the latest version.
In an ideal world the cabal-install package dependency resolver would
work out that the latest version cannot be installed (since it needs a
later ghc) and fall back to the next version that can work. However at
the moment it is not quite that smart. Use:
cabal install haddock-2.4.2
> "cabal install cabal-install" ends with:
>
> Linking dist\build\cabal\cabal.exe ...
> cabal: Error: some packages failed to install:
> cabal-install-0.6.4 failed during the final install step. The exception was:
> CreateDirectory: permission denied (Zugriff verweigert)
>
> Would be nice to know which directory cabal-install tried to create,
> don't you think?
>
> (This was just thrown in to show why I've only user user installations
> so far).
>
> Okay, the same with "--user" succeeds. Yay!
Right, global installs require admin permissions.
Historically Windows users did have admin permissions so the Windows
folks advised us that global should be the default. Obviously that's not
such a good default on Windows Vista or Windows 7. I've been agitating
to switch the default to per-user installations for a while now:
http://hackage.haskell.org/trac/hackage/ticket/465
I've not got much feedback from the Windows Haskell hacker. In the
development version of cabal-install I'm going to experimentally switch
the default to per-user installs and see how that goes.
> Just for fun's sake, let's have a look into cabal's config file, since
> I seem to have some directory trouble:
> install-dirs global
> -- prefix: "C:\\Program Files (x86)\\Haskell"
> -- bindir: $prefix\bin
> -- libdir: $prefix
> -- libsubdir: $pkgid\$compiler
> -- libexecdir: $prefix\$pkgid
> -- datadir: "C:\\Program Files (x86)\\Haskell"
> -- datasubdir: $pkgid
> -- docdir: $prefix\doc\$pkgid
> -- htmldir: $docdir\html
> -- haddockdir: $htmldir
>
> I certainly don't have a "C:\\Program Files (x86)\\Haskell"
> folder.
>
> Might that result in problems?
No, but not having permissions to create it would.
You can edit this config file. I suggest you change it to use per-user
installs by default. Set "user-install: True" (and make sure you
uncomment the line, the "--" prefix).
> But then again I shouldn't have to meddle with some installed
> configuration file,
These defaults worked ok for Windows XP but they're clearly no good for
Vista and Win7. Just change the default to per-user installs.
> especially since there has been no warning that I had to do that and
> very especially since I entered my destination folder upon
> installation. Maybe it's okay, but it kind of makes me nervous. And
> God knows what else I haven't stumbled upon yet.
Where you install the Haskell Platform is independent of these settings.
You would not want to install other packages into the same location as
the platform and there's no particular reason to suppose that you would
have the file permissions to do so.
> Has anyone who is *not* a Haskell/ghc/cabal expert been able to
> install Haskell satisfactorily on Windows 7?
> What are my options now? Any stupid mistakes I made?
No, it's reasonable to expect the defaults to work. Sadly they do not at
the moment for Windows 7. Change it to use per-user installs by default
and let us know how that goes.
Duncan
Duncan Coutts <duncan...@googlemail.com> writes:
> Except for haddock, none of these packages come with the Haskell
> Platform. These are packages that you must have installed previously. So
> ghc-pkg check is quite right to report them.
Okay, right.
>> Okay, reinstalling them all (with --user --reinstall").
>>
>> Except haddock:
>>
>> C:\Users\Thomas>cabal install haddock --user --reinstall
>> Resolving dependencies...
>> cabal: cannot configure haddock-2.6.0. It requires ghc >=6.12 && <6.14
>> There is no available version of ghc that satisfies >=6.12 && <6.14
>
> Right, try installing the same version as you've got currently rather
> than the latest version.
>
> In an ideal world the cabal-install package dependency resolver would
> work out that the latest version cannot be installed (since it needs a
> later ghc) and fall back to the next version that can work. However at
> the moment it is not quite that smart. Use:
>
> cabal install haddock-2.4.2
"cabal install haddock-2.4.2 --user --reinstall" ends with:
Linking dist\build\haddock\haddock.exe ...
cabal: Error: some packages failed to install:
haddock-2.4.2 failed during the final install step. The exception was:
CreateDirectory: permission denied (Zugriff verweigert)
> You can edit this config file. I suggest you change it to use per-user
> installs by default. Set "user-install: True" (and make sure you
> uncomment the line, the "--" prefix).
That doesn't work at all. As soon as I uncomment that line and set it
to True, I get:
cabal: C:\Users\Thomas\AppData\Roaming\cabal\packages
user-install: True\hackage.haskell.org\00-index.tar: openBinaryFile: invalid arg
ument (Invalid argument)
>> But then again I shouldn't have to meddle with some installed
>> configuration file,
>
> These defaults worked ok for Windows XP but they're clearly no good for
> Vista and Win7. Just change the default to per-user installs.
>
>> especially since there has been no warning that I had to do that and
>> very especially since I entered my destination folder upon
>> installation. Maybe it's okay, but it kind of makes me nervous. And
>> God knows what else I haven't stumbled upon yet.
>
> Where you install the Haskell Platform is independent of these settings.
> You would not want to install other packages into the same location as
> the platform and there's no particular reason to suppose that you would
> have the file permissions to do so.
Not in the Platform directory itself, but I'd like to group bigger
chunks like "everything Haskell" in a common directory (with
subdirectories "Platform", "Local-Cabal", "whatever"), just as I put
TeX Live into its own directory, right under the root directory. Makes
PATHs shorter, as well.
> No, it's reasonable to expect the defaults to work. Sadly they do not at
> the moment for Windows 7. Change it to use per-user installs by default
> and let us know how that goes.
No luck with haddoch, so far, and hakyll (which sounded cool and I
wanted to try out) doesn't work, either:
Linking dist\build\markdown2pdf\markdown2pdf.exe ...
Created man\man1\pandoc.1
Created man\man1\hsmarkdown.1
Created man\man1\html2markdown.1
Created man\man1\markdown2pdf.1
setup.exe: CreateDirectory: permission denied (Zugriff verweigert)
cabal: Error: some packages failed to install:
hakyll-0.2 depends on pandoc-1.3 which failed to install.
pandoc-1.3 failed during the final install step. The exception was:
exit: ExitFailure 1
As I said before, I don't have a clue, where cabal wants to install
what. Some error messages beyond "failed" would have been nice. Like
"creating directory XYZ failed".
BTW, I just retried installing everything manually (GHC 6.12.1) and I
almost got there, but the network package doesn't install. Probably
because I don't have a full mingw installation, only what came with
GHC. Lots of headers missing and other compilation
problems. configure.sh probably didn't run, as well.
Is there no way to get binary objects from hackage, for the C parts at
least, so that GHC can just link the Haskell parts against it?
Thomas
Stephen Tetley <stephen...@gmail.com> writes:
> I suspect the problem you are having is specifically with Pandoc.
> Pandoc has a couple of dependencies on C libraries: network and zlib
> are two - they are part of the Haskell platform so they would be
network gave me a hard time without the Haskell Platform as well.
> Digest seems to depend on C internals of the zlib library. Now, zlib
> package is part Haskell platform and it includes a binary library of
> (the C) zlib and the source headers, so it might be possible to build
> digest by itself but you might end up needing cygwin or MinGW / msys
> (I've built it just now under Cygwin).
I feared that I'd need a complete GNU C toolchain.
> Trying to installing digest before Pandoc is one possibility - if it
> fails, at least it will show if further attempts to install Pandoc are
> going to be futile.
digest has been installed successfully, as far as I can see.
I'll probably try my luck with a MINGW installation in the next few
days, hopefully it helps.
Thomas
> Also, if a library fails to build because of your ghc version, you
> can install a specific version of that library instead. E.g. for
> haddock you see that the failing version was 2.4.2 but if you leave
> out the version number cabal will fetch the latest one for you,
> which isn't compatible with GHC 6.10.
Thanks, I wasn't aware that I could specify versions that easily, I
assumed that I could only get the latest version.
Speaking as a Windows 7-using Haskeller, I'd be very glad if user install were to become the default. (And even on Windows XP, it is still recommended not to write to Program Files during normal usage.) I agree with the assessment in http://hackage.haskell.org/trac/hackage/ticket/465#comment:2 too.
Don't forget http://hackage.haskell.org/trac/hackage/ticket/466. This can also cause failing in the default setup, even with --user installs. Presumably this would be addressed by switching to the same thing cabal does on other platforms, which is to use "$prefix/share" or similar.
A little progress report:
Installing packages as administrator works fine.
But now I have changed cabal's config file, so that prefix and datadir
point to a user-writable directory, and that works as well.
So for starting out, I guess I'm happy with my installation so far
(although I haven't *used* those libraries yet, so I don't know,
whether they are found in the new location -- what might I have to do
there, if anything?)
> network gave me a hard time without the Haskell Platform as well.
Hi Thomas
Network installed for me without a hitch via MinGW for 6.12.1 (via the
old skool process of runhaskell Setup.hs ...). MinGW becomes all but
essential once you start installing libraries that are bindings to C
libraries - unfortunately it can be hard to tell if a library is a
binding or depends on a binding. Also some Haskell libraries do use C
but only rely on the standard C libraries - as GHC ships with a gcc
executable from MinGW usually these libs will install transparently.
Best wishes
Stephen
> The most likely cause is that your "user-install: True" line is
> indented. Indentation is significant in the config file because it
> indicates layout for nested sections: remove any leading spaces on
> that line and that should do the trick.
Damn, I made sure to keep the indentation. That is, delete dashes, add
spaces until aligned. :-)
> It's probably best to wait for the next Haskell Platform instead of installing GHC 6.12 itself.
Do you have any idea when that will happen?
> Okay, then I'll do that. I suppose the mingw that GHC ships is an
> abridged one, so that setting some environment variables does not
> suffice?
Hi Thomas
GHC ships with the compiler (gcc), the binutils (linker, ar etc.) and
not much else.