OSXとHomebrew-caskでHaskellの開発環境を構築

この記事ではHomebrewではなくHomebrew-caskを使ってHaskellの環境を構築します。

インストールには、以下のOSX用のHaskellディストリビューションを使います。コンパイル済みのバイナリとcabalが入っていて早くてお手軽です。

GHC

  1. インストール

     brew cask install ghc
    
  2. GHCのパスを通す

    1. F4を押してlaunchpadを起動します。
    2. ghcと入力してghc-7.8.3を起動します。
    3. 画面左上にあるAppend to ~/.bash_profileボタンをクリックします。

      f:id:slowquery:20140727115203p:plain

      ※ 表示されているスクリプト.bash_profileに追加されます。

      zshの場合は表示されているスクリプト.zshrcなどに自分で追加します。

  3. GHC起動

     ghc     
    

Cabal

Haskellのパッケージ管理ツールcabalは、初めからインストールされているのでアップデートするだけです。

  • cabal自体のアップグレード

      cabal install cabal-install
    
  • パッケージアップデート

      cabal update
    

OSX 10.10 Yosemiteでhomebrewによるgccインストールのエラーを回避する方法

OSX 10.10 YosemiteのDeveloper Preview版で普通にbrew install gccgccをインストールしようとするとエラーになると思います。ここではパッチを当ててgcc4.9.1をインストールしてみます。

前提

  • OSX 10.10 Developer Preview 4
  • gcc 4.9.1

参考

https://github.com/Homebrew/homebrew/issues/29845

方法

  1. homebrewをアップデートしてgccのformulaを最新版にします。

     brew update
    
  2. gccのformulaの編集モードに入ります。

     brew edit gcc
    
  3. 2行目に以下の4行を追加します。

     patch do
       url "https://gcc.gnu.org/bugzilla/attachment.cgi?id=33180"
       sha1 "def0cb036a255175db86f106e2bb9dd66d19b702"
     end
    

     class GCC < Formula
    
       # Patch for OSX 10.10 Developer Preview 4
       # ref. https://github.com/Homebrew/homebrew/issues/29845
       patch do
         url "https://gcc.gnu.org/bugzilla/attachment.cgi?id=33180"
         sha1 "def0cb036a255175db86f106e2bb9dd66d19b702"
       end
    
       def arch
         if Hordware::CPU.type +== : intel
         略
    
  4. インストール

     brew install gcc
    

以上

OSXでssh-copy-idを使ってリモートサーバにパスワードなしでログインする

OSXssh-copy-idを使う方法です。

何ができる?

  1. sshでサーバにログインする際のパスワード入力が不要になる。
  2. そのために必要なssh公開鍵の配布を簡単に行うことができる。

インストール

beautifulcode/ssh-copy-id-for-OSX - GitHubを使います。

  1. ダウンロード

     curl https://raw.githubusercontent.com/beautifulcode/ssh-copy-id-for-OSX/master/ssh-copy-id.sh -o /usr/local/bin/ssh-copy-id
    
  2. 実行権限を付与

     chmod +x /usr/local/bin/ssh-copy-id
    

使い方

  1. 公開鍵を生成します。~/.ssh/id_rsa.pubが存在する場合は不要です。

     ssh-keygen  
    

    以下が生成されます。

     ~/.ssh/id_rsa.pub
    
  2. 公開鍵を配布します。

    通常

     ssh-copy-id [ユーザID]@[リモートサーバ]
     ssh-id-copy root@192.168.100.10 #例
    

    ~/.ssh/id_rsa.pub以外の公開鍵を使う場合

     ssh-copy-id -i 公開鍵のフルパス [ユーザID]@[リモートサーバ]
     ssh-id-copy ~/.ssh/myidentity.pub root@192.168.100.10 #例
    

    ※ ログインパスワードを聞かれるので入力します。

  3. sshでリモートのサーバにログインします。

     ssh [ユーザID]@[リモートサーバのアドレス]
     ssh root@192.168.100.10 #例
    

    ※ ログインパスワードは聞かれません。

npmに自作のCLIモジュールを公開する

npmのアカウントを作成

https://www.npmjs.orgで登録します。

  • ユーザ名
  • パスワード
  • Emailアドレス

npmコマンドとnpmアカウントの紐付け

先ほど作成したユーザ情報を対話的に入力します。

npm adduser

公開準備 : package.json生成

npm init

package.jsonを対話的に生成します。

"private"trueの場合はfalseに修正します。

"private": false,

公開準備 : CLIモジュール用の設定

npm install -gに対応

"preferGlobal": true,

コマンド名と起動コマンドの登録

"bin": {
  "コマンド名": "起動スクリプト名"
},

公開

npm publish

確認

npm info モジュール名

バージョンアップ

package.jsonのversionを新たなバージョンに変更してnpm publishします。

GitHubのユーザ名を変更する

GitHubのユーザ名を変更する方法です。過去のコミットのユーザ名やメールアドレスも修正します。

GitHubのユーザ名を変更

Account Settings -> Change username

ローカルのgitのユーザ名を変更

git config --global user.name "新ユーザ名"
git config --global user.name "新メールアドレス" 

ローカルのgitリポジトリのリモートリポジトリを変更

  1. ローカルgitリポジトリに移動

     cd ローカルgitリポジトリ
    
  2. 過去のURLを表示

     git remote -v
    
  3. 新URLを表示

    コピペしてユーザ名のみを変更すると楽です

     git remote set-url origin https://github.com/新ユーザ名/リポジトリ名.git
    

過去のコミットの名前を変更

ここからはお勧めできませんがどうしてもという場合

  1. 過去のコミットを全て表示

     git rebase -i --root
    
  2. 修正したいコミットを選択

    修正したいコミットのpickをeditに変更します。

    修正前

     pick XXXXX
     pick XXXXX
    

    修正後

     edit XXXXX
     edit XXXXX      
    

    vimコピペ用

     %s/pick/edit/gc
    
  3. 過去のコミットを修正

    ユーザ名とメールアドレスを変更します

     git commit --amend --author="新ユーザ名 <新メアド@gmail.com>"
    

    コメントも修正できます

  4. 残りのコミットを修正

     git rebase --continue
    
  5. 繰り返す

    3と4をeditに変更した行だけ繰り返します

  6. GitHubへpush

     git push -f
    

以上