ফেডোরা 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.