0
0

More than 5 years have passed since last update.

erlang: rebar3で依存するパッケージたちを管理、更新する

Last updated at Posted at 2018-06-22

rebar3を使ってerlangアプリの依存するパッケージを管理できます

rebar3 version
rebar 3.4.7 on Erlang/OTP 20 Erts 9.2

取り込むパッケージを記録

{deps, [
        {cowboy, "1.0.1"}, % package
        {cowboy, {git, "git://github.com/ninenines/cowboy.git", {tag, "1.0.1"}}} % alternatively, source
        ]
}.

以上のように使用するパッケージ(cowboy)をタグ指定で設定できました。
他にもbranch指定とgitのhash指定でパッケージ設定ができます。詳しくはドキュメントを参照してください

パッケージの初回更新

rebar3 update
でローカルにインデックスファイルが作成されます
rebar3 upgrade
依存するパッケージをダウンロードする及びロックファイルrebar.lockを作成します
以降たとえrebar.configにある依存するパッケージを変更してもrebar.lockファイルがいる限りrebar3が取ってくれない

パッケージの二回以降の更新

公式ページによるとrebar3 upgradeコマンドがrebar.lockファイルがあってもいい感じに更新してくれますが、うまくいかなかった、、
自分が使う方法:
- rebar.lockファイルを削除してから依存パッケージを更新する
- rebar3 unlockを実行してから更新する
ちなみにプロファイルを使ってのupgrade、例えばrebar3 as dev upgradeがうまくいかない時があります、プロファイルを外しての更新が無難かな

さらに

例えばこういう依存関係があり:

module_foo->msgpack:0.3.2
module_bar->msgpack:0.3.2

そのあと

module_bar->msgpack:0.7.0

module_barが依存するmsgpackのバージョンを0.7.0にあげてもrebar3 upgradeではmsgpackのバージョンをあげない
さらに、rebar3 unlock module_fooした上で、rebar.cofigファイルからmodule_fooを削除し、rebar3 upgradeしても、msgpackのバージョンが上がらない。一回rebar3 unlock msgpackしてからupgradeしないとパッケージが更新されない

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0