目次
はじめに
すぐ忘れるのでメモしておきます。
パッケージ管理
インストールされているパッケージを表示する
using Pkg;Pkg.installed()
指定したパッケージをインストールする
using Pkg;Pkg.add("JuMP")
指定したバージョンのパッケージをインストールする
using Pkg; Pkg.add(PackageSpec(name="JuMP", version="0.18"))
すべてのパッケージをアップデートする
using Pkg; Pkg.update()
指定したパッケージを削除する
using Pkg; Pkg.rm("JuMP")
パッケージのバージョンを固定する
パッケージのバージョンを固定するには、
pinコマンドを使います。
$ pkg> pin JuMP
このようにバージョンを固定すると
updateコマンドでバージョンが更新されなくなります。
解除したい場合はfreeコマンドを使います。
パッケージリポジトリの最新のバージョン情報を取得する
こちらを参照
新しいパッケージを作成する時
Juliaの新しいパッケージを作成して、GitHub上で公開する時の注意点です。
初期パッケージを生成する(デフォルトのPkgモジュールを使う)
デフォルトのPkgモジュールを使って、
$ julia -e 'using Pkg; Pkg.generate("hogePkg")
とすると、必要最小限のパッケージディレクトリ
(srcディレクトリとProject.tomlが入っている)を作ってくれます。
PkgTemplatesを使う
前述のデフォルトのPkgモジュールで生成されたパッケージは、
かなりシンプルですが、実際にOSSとして公開するとなると、
上記以外に、
ユニットテストコード
CI用の設定
自動オンラインドキュメント作成
など様々なツールが必要になります。
それらをまとめてやってくれるのが、
PkgTemplatesというツールです。
juliaのパッケージのtop directoryは
src: .jlソースファイル用ディレクトリ
doc: ドキュメント用ディレクトリ
test: ユニットテスト用ディレクトリ
Project.toml, Manifest.toml: 依存関係用ファイル
で構成されますが、それらを自動生成してくれます。
ちなみに、Manifest.tomlはPkg.jlが自動生成するファイルで
手動で変更することはありません
docディレクトリのオンラインドキュメントは、
Documenter.jlを使います。
具体的なパッケージのセットアップ方法
GitHub上にMyPackcage.jlのようにリポジトリを作る
PackageTemplateでディレクトリパッケージのテンプレートを作る
julia> using PkgTemplates julia > t = Template(; dir="./MyPackage", julia=v"1.4", plugins=[ License(; name="MIT"), Git(;ssh=true), GitHubActions(), Documenter{GitHubActions}(), ], ) julia > t("MyPackage")
- Documenterツールでドキュメント作成用のsshキーを生成する
pkg> add DocumenterTools julia> using DocumenterTools julia> DocumenterTools.genkeys(user="AtsushiSakai", repo="git@github.com:AtsushiSakai/MyPackage.jl.git")
ここで表示された
短いキーを Settings -> Deploy keys に documenter という名前で追加
(登録するときに、Write権限のチェックをちゃんと入れること)
長いキーをSettings -> Secrets -> にDOCUMENTER_KEYという名前で追加
すると、コミット毎に自動的に、GitHub Actionsでドキュメントが生成されます。
詳細は下記の記事が非常に参考になります。
既存のパッケージにPRを作成する
前述の方法で、自作のパッケージを作ることができますが、
いつも使っている、他人が作ったパッケージを改善し、
PRを投げたいと思った場合の方法について説明します。
基本的には、下記のページの解答通りなのですが、
下記の2つの方法でPRを作成できます。
方法1
Example.jlというパッケージにPRを投げたいとします。
1 GitHub上でExample.jlをforkする
2 REPLのpkgモードで、
pkg> develop Example
として、Exampleを~/.julia/dev下にクローンして、利用するようにする
3 ~/.julia/dev/Exampleのコードを修正し、コミットする
4 gitでremoteとして自分のforkを追加する
例)
$ git remote add myfork https://github.com/myname/Example.jl
- 5 Pushする
$ git push myfork
方法2
Example.jlというパッケージにPRを投げたいとします。
1 GitHub上でExample.jlをforkして、cloneしておく。
2 REPLのpkgモードで、
pkg> develop /path/to/Example
として、Exampleを使えるようにしておく。
- 3 クローン済みのExampleのコードを修正し、コミット& pushする
参考資料
MyEnigma Supporters
もしこの記事が参考になり、
ブログをサポートしたいと思われた方は、
こちらからよろしくお願いします。