心の旅 blog

心だけでも旅に出れる

【いろんな言語で書いてみた】パッケージ管理

それぞれの言語で、もちろんいろんな人が作ったライブラリ等を使いたい場合がある。その時に、どうやってそのソースを持ってきて、どうやって管理するか?という問題がある。

もちろん、自分でダウンロードして、適所に置くでもいいのだが、一人で開発する場合、これでもいいかもしれない。

でもやっぱり、複数人で開発するとなるとパッケージ管理が必要になってくる。今回は、各言語ではどのようなパッケージ管理の仕組みが用意されているのか調べていこう。

PHP

  • composer
    PHPではpearが有名だが、最近はcomposerが主流になっている気がする。
    pearだとOS単位でインストールしないといけないのだが、composerだと、プロジェクト単位でインストールできるのがいいところ。

  • composerダウンロード

$ curl -sS https://getcomposer.org/installer | php
  • composer.pharがダウンロードさせる。こいつを使ってパッケージ管理していく。

  • composer.jsonにインストールしたいパッケージを記述

{
    "require": {
        "mockery/mockery": "*",
        "facebook/php-sdk": "v3.2.3"
    }
}

 

  • composer.pharを使ってインストール
$ php ./composer.phar install

上記のコマンドでライブラリがダウンロードされる。
もう一つは、「composer.lock」というファイルが作成される。
 

  • composer.lockファイル インストールしたときに、パッケージの実際のバージョンのリストをこのファイルに書き込みます。
    これでプロジェクトを特定バージョンにロックすることができるようになり、新しいバージョンがあってもアップデートしないようになる。  

  • では、新しいバージョンにアップデートしたい場合はどうするか?

$ php composer.phar update

上記の「update」コマンドでjsonファイルに書いてある最新のバージョンにアップデートし、lockファイルを更新してくれる  

  • 最後にダウンロードしたライブラリをオートロードできる
<?php
require 'vendor/autoload.php';

  * composerも、jsonの書き方とか、様々な書き方ができるので、公式ページ等で調べていただけたらと思う。

JavaScript

npm

  • node.jsのパッケージを管理するためのツール
  • npmのインストールは、最近のnode.jsをインストールすれば一緒に入ります

Bower

  • フロントエンド用のパッケージを管理するためのツール
  • Bowerのインストールはnpmから
$ npm install bower -g

Ruby

Bundleとは

  • Ruby on Railsをインストールすれば、Gemfileというファイルが作成される
  • このGemfileに必要なパッケージを記述していく。これを周りに配布することで同じ環境を構築することができる。
  • bundleは、この仕組を提供してくれるもの。Gemfileに記載したパッケージをインストールしてくれる。
$ bundle install

 

  • インストールされたらGemfile.lockが生成される

Python

  • pipというパッケージ管理ツールがある
$ pip install --user virtualenv

Go

  • ソースファイルに直接、パスを記述する
import (
        "os"
        "github.com/codegangsta/cli"
)
  • go get コマンド
go get github.com/kr/goven

Elixir

  • Hex というパッケージ管理ツールがある。mixコマンドインストールする
$ mix archive.install https://github.com/phoenixframework/phoenix/releases/download/v0.16.1/phoenix_new-0.16.1.ez