【いろんな言語で書いてみた】パッケージ管理
それぞれの言語で、もちろんいろんな人が作ったライブラリ等を使いたい場合がある。その時に、どうやってそのソースを持ってきて、どうやって管理するか?という問題がある。
もちろん、自分でダウンロードして、適所に置くでもいいのだが、一人で開発する場合、これでもいいかもしれない。
でもやっぱり、複数人で開発するとなるとパッケージ管理が必要になってくる。今回は、各言語ではどのようなパッケージ管理の仕組みが用意されているのか調べていこう。
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
- ここにpkgが登録されている https://hex.pm/