パッケージのインストール・スクリプト

新しい環境にJuliaをインストールするときに、自分が使うパッケージ群をまとめてインストールしたいことがあります。

僕の場合、以前はテキストファイルに

add Atom
add Juno
add IJulia

のように書いたものを準備しておいて、Pkgモードにコピペするようにしていました。パッケージの数が少ないときはそれでいいのですが、パッケージをインストールする順序によって成功・不成功が変わったりする問題に遭遇しました(→Julia 1.3.1にSampledSignalsをインストールした - 丸井綜研)。さらにコピペするのも面倒ですし、インストール作業の再現性なども考慮すると、すべてを自動化できるのが理想的です。

そのため、パッケージ群をインストールするスクリプトを作っておいて、まっさらなJulia上でそれを実行することで「いつもの作業場」が再現できるようにしています。以下、僕が使っているスクリプトです。julia13_install.jlというファイル名で保存してあれば、

julia> include("julia13_install.jl")

と読み込むだけで、パッケージのインストールとプリコンパイルをしてくれます。

using Pkg
ENV["PYTHON"] = ""

## Development Environment ####################################################

Pkg.add("Atom")
Pkg.add("Juno")
Pkg.add("IJulia")

Pkg.add("CxxWrap")



## Plotting ###################################################################

Pkg.add("Conda")
Pkg.add("LaTeXStrings")
Pkg.add("PyCall")
Pkg.add("PyPlot")
Pkg.add("UnicodePlots")
Pkg.add("Plots")
Pkg.add("StatsPlots")
# Pkg.add("Interact")
# Pkg.add("Documenter")



## Math and Statistics ########################################################

Pkg.add("StatsKit")
Pkg.add("StatsBase")
Pkg.add("StatsModels")
Pkg.add("DataFrames")
Pkg.add("Distributions")
Pkg.add("MultivariateStats")
Pkg.add("HypothesisTests")
Pkg.add("MLBase")
Pkg.add("Distances")
Pkg.add("KernelDensity")
Pkg.add("Clustering")
Pkg.add("GLM")
Pkg.add("NMF")
Pkg.add("Lasso")
Pkg.add("TimeSeries")
Pkg.add("Bootstrap")
Pkg.add("Loess")
Pkg.add("MultipleTesting")
Pkg.add("CategoricalArrays")
Pkg.add("CSV")

Pkg.add("RCall")
Pkg.add("RDatasets")

#Pkg.add("JuliaDB")

Pkg.add("Calculus")
Pkg.add("DifferentialEquations")

Pkg.add("Primes")
Pkg.add("SymPy")

# Pkg.add("MixedModels")
# Pkg.add("ANOVA")
# Pkg.add("BayesNets")
# Pkg.add("CmdStan")
# Pkg.add("MCMCChain")

# Pkg.add("Turing")
# Pkg.add("Flux")
# Pkg.add("https://github.com/probcomp/Gen")
# Pkg.add("MLJ")
# Pkg.add("MLJModels")



## Audio and Music ############################################################

Pkg.add("FileIO")
Pkg.add("FFTW")
Pkg.add("DSP")
Pkg.add(PackageSpec(name="SampledSignals", rev="master"))
# Pkg.add("Compat")   # maybe needed for building LibSndFile
Pkg.add(PackageSpec(name="LibSndFile", rev="master"))
Pkg.add(PackageSpec(url="https://github.com/JuliaAudio/PortAudio.jl", rev="julia1"))

#=
Pkg.add("MIDI")
Pkg.add("MotifSequenceGenerator")
Pkg.add("MusicManipulations")
Pkg.add("https://github.com/fundamental/OSC.jl")
=#



## Graphics ###################################################################

# Pkg.add("Homebrew")
# using Homebrew
# Homebrew.brew(`unlink glib`)
# Homebrew.brew(`install https://raw.githubusercontent.com/Homebrew/homebrew-core/b27a055812fe620e0d3dbe67f2a424ed3a846ecf/Formula/glib.rb`)
# Pkg.add("Gtk")
# Pkg.add("Luxor")
# Pkg.add("Colors")

# commented because it requires Gtk.jl
# Pkg.add("Images")
# Pkg.add("TestImages")
# Pkg.add("ImageView")
# Pkg.add("VideoIO")

Pkg.add("SimpleDirectMediaLayer")

Pkg.add("Makie")
Pkg.add("MakieGallery")
Pkg.add("AbstractPlotting")
Pkg.add("ImageFiltering")



## Misc #######################################################################

# Pkg.add("HDF5")

# Pkg.add("ColorSchemeTools")

# Pkg.add("ACME")

# Pkg.add("PackageCompiler")
# Pkg.add("Suppressor")



## Precompilation #############################################################

Pkg.precompile()

自分が使っているパッケージ一覧を公開するのって、iTunesに入っている音楽ライブラリを公開するのと同じような気恥ずかしさがありますね。