ফেডোরা 22 তে গ্লাসগো হাস্কেল সংকলক সংকলন করুন


1

সুতরাং আমি "GHC 7.8.4-45" আপগ্রেড করতে চাই যা ফেডোরা 22 ( ফেডোরা হাস্কেল সিগের সৌজন্যে ) এর সাথে জিএইচসি 7.10.2 (সর্বশেষতম) এ প্রিপেইকেজড আসে comes

কীভাবে সহজে করবেন?


ফেডোরা 24 এখনও জিএইচসি 7.8.4 এ রয়েছে ... আরও সুনির্দিষ্টভাবে : "এফ 24 হ্যাশেল-প্ল্যাটফর্ম -2014.2 (জিএইচসি-7.8.4) দিয়ে শিপিং করতে চলেছে .... এফ 25 হ্যাশেল-প্ল্যাটফর্ম-7.10 দিয়ে শিপিংয়ের পরিকল্পনা করা হয়েছে। 3 (ghc-7.10.3) "
ডেভিড টোনহোফার

সুবিধাজনকভাবে, কেউ ফেডোরা হাস্কেল এসআইজি পৃষ্ঠার মাধ্যমে আরও নতুন সংস্করণ পেতে পারে । নীচে নীচে তালিকাবদ্ধ করা হয়েছে যা "হাস্কেল কোপারস" বলা হয় ( coprমনে হয় ধারাবাহিক বিল্ড সিস্টেম, তাহলে?)। একটা হল 7.10.3 জন্য copr "দ্বারা নির্মিত পিটারসেন "। কোপার রিপোজিটরিটি সক্ষম করে সক্ষম করা হয়েছে dnf copr enable petersen/ghc-7.10.3, তবে আমি কীভাবে এই আপগ্রেড সংস্করণটি ইনস্টল করব?
ডেভিড টনহোফার

1) সক্ষম করুন ": এখানে কেমন dnf copr enable petersen/ghc-7.10.32) Recursively অপসারণ সমস্ত প্যাকেজ ফেডোরা প্যাকেজের জন্য টানা haskell-platformব্যবহার dnf(পরিবর্তে rpm, যা বিকল্প উপলব্ধ করা হয় না):" dnf erase haskell-platform"3) প্যাকেজ যে কুশলী পরবর্তী আসতে পারে পুনরায় যোগ:" dnf install ncurses-c++-libs freeglut-devel"ইত্যাদি)) স্রেফ চালান" dnf install ghc"। আমার dnfpetersen-ghc-7.10.3ncurses-devel
সঞ্চিত্রে রিপোজিটরি থেকে সর্বশেষতম জিএসিসি টেনে আনবে

উত্তর:


1

নথি এবং লিঙ্কসমূহ

স্টার্ট-অফ তথ্য উত্স haskell.orgরয়েছে

যে কেউ এটি দ্বারা ইনস্টল করতে পারেন:

উপরন্তু:

তাই ...

আমরা হাস্কেল-প্ল্যাটফর্ম ইনস্টলার ghcব্যবহার করে গ্লাসগো হাস্কেল সংকলক তৈরি করব ।

কিছু গ্রন্থাগার ঠিক করুন

আমাদের সিস্টেমের পরিবর্তে প্রাক্পম্পাইলড, সর্বশেষ Cabalপ্যাকেজ সরঞ্জামটি ব্যবহার করতে হবে Cabal। দুর্ভাগ্যক্রমে এটি 32-বিটের মধ্যে আসে।

আপনি কোনও বিদ্যমান আনইনস্টল করতে চাইতে পারেন Cabal(আমরা পরে PATHএটি নতুনতে সেট করব Cabal, সুতরাং এটি কঠোরভাবে প্রয়োজনীয় নয়)

# as root
dnf erase cabal-install cabal-install-static ghc-Cabal-devel

-৪-বিট সিস্টেমে আমাদের নতুনের জন্য লাইব্রেরির 32-বিট সংস্করণ প্রয়োজন Cabal:

# as root
dnf install glibc.i686 zlib.i686 gmp-devel.i686 gmp.i686

সংকলন করতে আমাদের 64৪ ghc-বিট দরকার gmp-devel:

# as root
dnf install gmp-devel.x86_64

32-বিট এবং 64-বিট উভয়ই ব্যবহার করে ইনস্টল করা আছে তা পরীক্ষা করুন:

rpm --query gmp-devel
> gmp-devel-6.0.0-9.fc22.i686
> gmp-devel-6.0.0-9.fc22.x86_64

CentOS- র ghcজন্য পূর্বনির্ধারিত , যা আমরা পরে ডাউনলোড করব, libgmp.3কিছু মুহূর্তে খুঁজব, সুতরাং আমাদের একটি সিমিলিংক প্রয়োজন:

# as root
cd /usr/lib64
ln -s libgmp.so.10.2.0 libgmp.so.3

অতিরিক্ত প্যাকেজ ইনস্টল করুন

জেড লাইব্রেরি এবং 3 ডি লাইব্রেরি নিখোঁজ হওয়ার বিষয়ে অভিযোগ থাকবে। তাই:

# as root
dnf install zlib-devel
dnf install freeglut freeglut-devel

এবং হয়ত:

# as root
dnf install ncurses-devel libffi-devel

"লিবিফি" (বিদেশী ফাংশন ইন্টারফেস) আকর্ষণীয় বলে মনে হচ্ছে।

যাইহোক, আপনার প্রয়োজন make(জিএনইউ মেক):

# as root
dnf install make

বিশেষ ব্যবহারকারী যুক্ত করুন যিনি বিল্ড প্রক্রিয়াটি পরিচালনা করবেন

আমরা ব্যবহারকারী হিসাবে তৈরি করব builder, এর মতো নয় root:

# as root
useradd builder

পুরানো যোগ করুন ghcযা ফেডোরা 22 প্যাকেজ হিসাবে আসে

ghcসংকলনটি কিকস্টার্ট করতে ফেডোরা 22 এর সাথে আমাদের দরকার । Platform README অনুযায়ী , ghc> 7.4 (ফেডোরার ghc7.8.4 আছে) থাকতে হবে।

# as root
dnf install ghc

এটি 55 টি প্যাকেজের মধ্যে টানছে, libffi-develএটি এখনও সেখানে না থাকলে including

আপনারও দরকার:

# as root
dnf install ghc-split

অথবা আপনি ত্রুটি পাবেন:

> cabal: At least the following dependencies are missing:
> hastache >=0.6.0, shake >=0.14, split -any, text -any

একটি নতুন প্রাকম্পম্পাইল যুক্ত করুন Cabal

উল্লেখ্য যে. Cabalফেডোরা 22 এর সাথে আসা পুরানোটি প্রতিস্থাপন করতে আপনাকে পূর্বনির্ধারিত ইনস্টল করতে হবে ।

প্রকৃতপক্ষে Cabal1.18.1.0 ব্যবহার করে যা ফেডোরার সাথে আসে তা শেষ পর্যন্ত একটি ত্রুটি দেয়:

> ghc: ghc no longer supports single-file style package databases
> (dist/package.conf.inplace) use 'ghc-pkg init' to create the
> database with the correct format.

ব্যবহারকারী হন builder:

su - builder

ক্যাবল ডাউনলোড পৃষ্ঠাCabal থেকে নতুন পান , তবে উপরে যেমন বলা হয়েছে এটি বর্তমানে কেবল 32-বিটে আসে।

# as builder
cd
wget https://www.haskell.org/cabal/release/cabal-install-1.22.0.0/cabal-1.22.0.0-i386-unknown-linux.tar.gz
# 3.84 MiB; just contains the "cabal" binary
tar xzf cabal-1.22.0.0-i386-unknown-linux.tar.gz 
mkdir cabalbin
mv cabal cabalbin/

একটি সাম্প্রতিক প্রাকম্পাইল যুক্ত করুন ghc

ghcসংকলনের জন্য আমাদের একটি প্রিপেইকেজড "বাইন্ডিস্ট" (প্রাকম্পাইল ) দরকার যা হাস্কেলের পক্ষে যুক্তি হিসাবে পাস করা হয়েছে Platform

সর্বশেষতমটি এখানে পাওয়া যাবে - "CentOS" নিন।

# as builder
cd
wget http://downloads.haskell.org/~ghc/7.10.2/ghc-7.10.2-x86_64-unknown-linux-centos66.tar.bz2

131.82 মাইবি টারবালটি সঙ্কুচিত বা আনটার করার দরকার নেই।

সুর Platform

পরীক্ষা করা হচ্ছে README :

যদি আপনি সিস্টেমে (লিনাক্স, বা বিএসডি) মতো পিক্সিক্সের জন্য তৈরি করে থাকেন তবে টার্গেট সিস্টেমে বিল্ট জিনিসগুলির গাছটি কোথায় স্থাপন করা হবে তা নির্দিষ্ট করতে আপনি কমান্ড লাইন বিকল্পটি - प्रीফিক্স যুক্ত করতে পারেন। এটি "/ usr / স্থানীয় / হাস্কেল" এ ডিফল্ট হয়। বিল্ডটির মধ্যে "ghc-xyz-arch" নামের অধীনে আরেকটি ডিরেক্টরি অন্তর্ভুক্ত থাকবে এবং সেখানে সমস্ত কিছু ইনস্টল করা হবে।

... তাই আমরা কোনও সুর করি না কারণ আমাদের /usr/local/haskellযা ইচ্ছা ঠিক তেমনই শোনায়।

এবং আরো:

বিল্ডের অনুরোধে -j [n] যুক্ত করা একসাথে একাধিক কোরগুলিতে বিল্ডিং সক্ষম করবে।

এটি চেষ্টা করে দেখে মনে হচ্ছে ...

পাওয়া Platform

Platformগিথুব থেকে ".sav" ডিরেক্টরিতে ক্লোন করুন । এটি প্রয়োজন কারণ সংকলন ব্যর্থ হতে পারে এবং সেক্ষেত্রে আপনি কেবল যা করা হয়েছে তা উড়িয়ে দিয়ে আবার শুরু করতে চান:

# as builder
cd
git clone https://github.com/haskell/haskell-platform
mv haskell-platform haskell-platform.sav

ব্যবহারকারীর PATH ঠিক করুন builder! কিছু সময়ে, সর্বশেষ, সংকলিতটি ghcসিস্টেমের সাথে আসে তার পরিবর্তে ব্যবহার করতে হবে!

ব্যবহারকারী হিসাবে builder, আপনার সম্পাদনা করুন ~/.bash_profileএবং যুক্ত করুন:

PATH=$HOME/cabalbin/:$HOME/haskell-platform/build/ghc-bindist/local/bin/:$PATH:$HOME/.local/bin:$HOME/bin

পূর্বে সেট আপ হিসাবে $HOME/cabalbinএকটি তাজা থাকে Cabalএবং কিছু সময়ে $HOME/haskell-platform/build/ghc-bindist/local/bin/সর্বশেষতম থাকবে ghc

নতুন পাথ ব্যবহার করতে লগআউট / লগইন করুন।

নির্মাণ করা

এখন ব্যবহার করে বিল্ডিং শুরু করুন

# as builder
cd
/bin/rm -rf haskell-platform 
cp -a haskell-platform.sav haskell-platform 
cd haskell-platform
./platform.sh ../ghc-7.10.2-x86_64-unknown-linux-centos66.tar.bz2

এই বিল্ডটি আসলে সফল হওয়া উচিত তবে একটি ধীর-ধীর মেশিনে প্রায় 20 মিনিট সময় নিতে পারে। তারপরে আপনি দেখতে পাবেন:

> To install this build:
> 1) copy build/product/haskell-platform-7.10.2-a-unknown-posix-x86_64.tar.gz to the target machine
> 2) untar it (creates files in the working directory)
> 3) as root, run the script ./install-haskell-platform.sh
> Build completed in 22:54m
> # tar (for build/product/hp-usr-local.tar.gz)
> # cp (for build/product/haskell-platform-7.10.2-a-unknown-posix-x86_64.tar.gz)
> # tar (for build/product/haskell-platform-7.10.2-a-unknown-posix-x86_64.tar.gz)

ইনস্টল করুন

উপরে বর্ণিত হিসাবে এগিয়ে যান

# as root
cp ~builder/haskell-platform/build/product/haskell-platform-7.10.2-a-unknown-posix-x86_64.tar.gz ~
cd
tar xzf haskell-platform-7.10.2-a-unknown-posix-x86_64.tar.gz
./install-haskell-platform.sh

আপনি দেখুন:

> Unpacking ./hp-usr-local.tar.gz to /...
> Running /usr/local/haskell/ghc-7.10.2-x86_64/bin/activate-hs ...
> 
> Haskell set to:
> GHC         /usr/local/haskell/ghc-7.10.2-x86_64
> Haddocks    file:///usr/local/haskell/ghc-7.10.2-x86_64/doc/frames.html
> Other doc   file:///usr/local/haskell/ghc-7.10.2-x86_64/share/doc/ghc/html/index.html
> 
> Symlinks for command line tools (ghc, cabal, etc..) added to:
> /usr/local/bin

সিমলিংকগুলি এখানে ইনস্টল করা হবে /usr/local/bin/:

> activate-hs -> /usr/local/haskell/ghc-7.10.2-x86_64/bin/activate-hs
> alex -> /usr/local/haskell/ghc-7.10.2-x86_64/bin/alex
> cabal -> /usr/local/haskell/ghc-7.10.2-x86_64/bin/cabal
> ghc -> /usr/local/haskell/ghc-7.10.2-x86_64/bin/ghc
> ghc-7.10.2 -> /usr/local/haskell/ghc-7.10.2-x86_64/bin/ghc-7.10.2
> ghci -> /usr/local/haskell/ghc-7.10.2-x86_64/bin/ghci
> ghci-7.10.2 -> /usr/local/haskell/ghc-7.10.2-x86_64/bin/ghci-7.10.2
> ghc-pkg -> /usr/local/haskell/ghc-7.10.2-x86_64/bin/ghc-pkg
> ghc-pkg-7.10.2 -> /usr/local/haskell/ghc-7.10.2-x86_64/bin/ghc-pkg-7.10.2
> haddock -> /usr/local/haskell/ghc-7.10.2-x86_64/bin/haddock
> haddock-ghc-7.10.2 -> /usr/local/haskell/ghc-7.10.2-x86_64/bin/haddock-ghc-7.10.2
> happy -> /usr/local/haskell/ghc-7.10.2-x86_64/bin/happy
> hp2ps -> /usr/local/haskell/ghc-7.10.2-x86_64/bin/hp2ps
> hpc -> /usr/local/haskell/ghc-7.10.2-x86_64/bin/hpc
> hsc2hs -> /usr/local/haskell/ghc-7.10.2-x86_64/bin/hsc2hs
> HsColour -> /usr/local/haskell/ghc-7.10.2-x86_64/bin/HsColour
> runghc -> /usr/local/haskell/ghc-7.10.2-x86_64/bin/runghc
> runghc-7.10.2 -> /usr/local/haskell/ghc-7.10.2-x86_64/bin/runghc-7.10.2
> runhaskell -> /usr/local/haskell/ghc-7.10.2-x86_64/bin/runhaskell

নীতিগতভাবে, আমরা বিদ্যমান প্যাকেজগুলি থেকে মুক্তি পেতে পারি ghc(নীচের কমান্ডটি কেবলমাত্র যদি আপনি -yএটি দিয়ে থাকেন তবে কার্যকর হবে dnf erase)

rpm --query --all | grep -e '^ghc-' | xargs dnf erase

টেস্ট স্যুট চালান

পরীক্ষা স্যুটটি চালানো ভাল ধারণা।

আসলে, আমি বর্তমানে কিছু ত্রুটি মারছি ...

এগুলি জিএইচসি ট্র্যাকের বাড়িতে যাবে

জেনেরিক নির্দেশাবলীর জন্য haskell.org এ " চলমান পরীক্ষা " দেখুন ।

পরীক্ষা চালানোর জন্য, বিল্ড দ্বারা নির্মিত উত্স গাছের "শীর্ষে" এই পৃষ্ঠা থেকে একটি টেস্ট স্যুট উত্স ইনস্টল করতে হবে :

# as builder
cd
# the '..' below is not a typo!
cd ./haskell-platform/build/ghc-bindist/ghc-7.10.2/..
wget http://downloads.haskell.org/~ghc/7.10.2/ghc-7.10.2-testsuite.tar.bz2
bunzip2 ghc-7.10.2-testsuite.tar.bz2
tar xf ghc-7.10.2-testsuite.tar

নির্দিষ্ট পরীক্ষা চালানোর জন্য আপনি অতিরিক্ত ক্যাবল প্যাকেজ ইনস্টল করতে চাইতে পারেন। কিছু ইতিমধ্যে ইনস্টল করা হয়েছে। চালান:

# as builder
## To install hmatrix you will probably have to perform, as root:
## dnf install blas-devel lapack-devel
# Linear systems, matrix decompositions, and other numerical computations
cabal install hmatrix 
# Monad classes using functional dependencies
cabal install mtl
# This package provides a library for parallel programming.
cabal install parallel
# Parsec is designed as an industrial-strength parser library.
cabal install parsec 
# various primitive memory-related operations
cabal install primitive
# library for random testing of program properties.
cabal install QuickCheck
# provides a basic random number generation library
cabal install random
# one module layer over regex-posix to replace Text.Regex
cabal install regex-compat  
# the generics system described in the "Scrap Your Boilerplate" papers
cabal install syb
# A UTF8 layer for Strings
cabal install utf8-string 
# An efficient implementation of Int-indexed arrays
cabal install vector 

cabal info $PACKAGEপ্যাকেজ তথ্য পেতে চালান । প্যাকেজ কনফিগারেশন যায় ~/.ghc/x86_64-linux-7.10.2/package.conf.d/, প্যাকেজ বিষয়বস্তু যান ~/.cabal/lib/x86_64-linux-ghc-7.10.2/$PACKAGE

তারপরে পরীক্ষা শুরু করুন । আমরা আউটপুট এতে ক্যাপচার করব ~/test_output.txt:

# as builder
cd
cd ./haskell-platform/build/ghc-bindist/ghc-7.10.2
make test 2>&1 | tee ~/test_output.txt

কিছু সময়ের পরে, আপনি আউটপুট পাবেন:

> Unexpected results from:
> TEST="T9203 T9961 parsing001 T9675 T6048"
> 
> OVERALL SUMMARY for test run started at Mon Oct 26 17:52:52 2015 CET
>  0:33:17 spent to go through
>     4142 total tests, which gave rise to
>    15728 test cases, of which
>    11883 were skipped
> 
>       45 had missing libraries
>     3754 expected passes
>       41 expected failures
> 
>        0 caused framework failures
>        0 unexpected passes
>        0 unexpected failures
>        5 unexpected stat failures
> 
> Unexpected stat failures:
>    perf/compiler    T6048 [stat not good enough] (optasm)
>    perf/compiler    T9675 [stat not good enough] (optasm)
>    perf/compiler    T9961 [stat not good enough] (normal)
>    perf/compiler    parsing001 [stat too good] (normal)
>    perf/should_run  T9203 [stat too good] (normal)

আমার নিজের উত্তর এখানে গ্রহণ। এই প্রশ্নটি অবশ্যই উদাসীনতার সাথে মিলিত হচ্ছে ...
ডেভিড টনহোফার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.