limitusus’s diary

主に技術のことを書きます

PugsをHardyに手動でインストールした


andLinuxではaptで簡単にPugsをインストールできたのにHardyでは見つからなかったよ?レポジトリ登録してないせいかな?とも思ったのですが面倒だったので手動で入れました。
せっかくなので手順を残しておきます。

Pugsって?

現在開発中のPerl6のインタラクティブシェルとして機能します。
中身はよくわかりませんがHaskellで実装されているらしいです。したがってHaskellのパッケージを事前にインストールしておく必要があります。私のHardyでもHaskellはちゃんとインストールされていました。

Pugsのチェックアウト

まずはこの辺を眺めます(Perl6)。
ページ左のメニューにPugsというリンクが見つかりました(Pugs)。
そしてこのメニューに「Download」というリンクがあります・・・が、リンク切れてるようです。幸いにもメインカラムに「How to get the code」とあります。そこにSubversionのレポジトリへのリンクがあったので、これをチェックアウトしておきます。私はメインレポジトリをチェックアウトしました。

svn co http://svn.pugscode.org/pugs/

チェックアウトして中を見るとINSTALLというファイルが転がってました。中身を見ると・・・

2. Type the following commands:

cabal update
cabal install Pugs

...and you're done.

cabal(Haskell付属のパッケージインストーラみたいなもの)が要るじゃん(入ってない)

依存関係の解消:Cabalのインストー

そして

% apt-cache search cabal 
libghc6-cabal-dev - Haskell Common Architecture for Building Applications and Libraries

というのを見つけてインストールを試みます。が

以下のパッケージには満たせない依存関係があります:
libghc6-cabal-dev: 依存: ghc6 (< 6.6.1+) しかし、6.8.2-2ubuntu1 はインストールされようとしています
E: 壊れたパッケージ

・・・?ghcのバージョンが新しすぎると言われている?
仕方ないのでcabalも手動でインストールします。

cabalはThe Haskell Cabalから入手します。Downloadをクリックしてcabal-install-0.6.0.tar.gzを入手。
READMEを読んでまずbootstrap.shを走らせます。依存パッケージ3つを自動でダウンロード・インストールしてくれるようです。
cabalをインストールするのにcabalが必要なところがおもしろいです。この操作、通常ユーザでできます。

% sh bootstrap.sh

走らせるとパッケージの依存関係がうまくいかないと言われました。HTTP,networkあたりがダメのようでした。

依存関係の解消:HTTP,network

そういうわけで

% apt-cache search haskell | grep network
% apt-cache search haskell | grep http

で探し出します。

% sudo apt-get install libghc6-network-dev libghc6-http-dev

で入ったようです。もう一度bootstrap.shを走らせたら成功しました。~/.cabal/binにPATHを通しておきます。

% export PATH=$PATH:~/.cabal/bin

本題に戻る

元に戻ってPugsを入れます。さっきのワーキングコピーへ。

cabal update;cabal install Pugs         

これでインストールできました。pugsのバイナリも~/.cabal/binに入っています。

動作チェック

% pugs                                    
   ______                                                           
 /\   __ \                                                        
 \ \  \/\ \ __  __  ______  ______     (P)erl 6                
  \ \   __//\ \/\ \/\  __ \/\  ___\    (U)ser's           
   \ \  \/ \ \ \_\ \ \ \/\ \ \___  \   (G)olfing      
    \ \__\  \ \____/\ \____ \/\_____\  (S)ystem           
     \/__/   \/___/  \/___/\ \/____/                           
                       /\____/            Version: 6.2.13.14
                       \/___/    Copyright 2005-2008, The Pugs Contributors
--------------------------------------------------------------------
 Web: http://pugscode.org/           Email: perl6-compiler@perl.org 

Welcome to Pugs -- Perl6 User's Golfing System
Type :h for help.

Loading Prelude... done.
pugs> "Hello World!".say;
Hello World!
pugs> 

これで大丈夫そうですね。