Это действительно зависит от того, хотите ли вы играть с Julia изначально или вы спешите и готовы использовать установку на основе Docker.
Если вы можете пожертвовать нативным подходом, вы можете создать простой контейнер на основе Docker (путем создания следующего Dockerfile):
FROM ubuntu:18.10
LABEL description="Environment for running Julia based codes"
RUN apt-get update
RUN apt-get install -y git
RUN apt-get install -y vim
RUN apt-get install -y libopenmpi-dev
RUN apt-get install -y openmpi-bin
RUN apt-get install -y gfortran
RUN apt-get install -y open-coarrays-bin
RUN apt-get install -y make
RUN apt-get install -y tree
RUN apt-get install -y gdb
RUN apt-get install -y curl
RUN mkdir -p /opt
ADD run.sh /opt/run.sh
RUN chmod +x /opt/run.sh
RUN useradd -ms /bin/bash fortcoder
USER fortcoder
WORKDIR /home/fortcoder
RUN echo 'PS1="[\u@coarray-docker:\w ] $ "' >> /home/fortcoder/.bashrc
RUN echo 'PATH=/home/fortcoder/opt/julia/julia-1.3.1/bin:${PATH}' >> /home/fortcoder/.bashrc
RUN mkdir -p /home/fortcoder/code
RUN mkdir -p /home/fortcoder/opt/julia
RUN curl -o /home/fortcoder/opt/julia/julia-1.3.1-linux-x86_64.tar.gz https://julialang-s3.julialang.org/bin/linux/x64/1.3/julia-1.3.1-linux-x86_64.tar.gz
RUN tar zxf /home/fortcoder/opt/julia/julia-1.3.1-linux-x86_64.tar.gz -C /home/fortcoder/opt/julia/
CMD /opt/run.sh
не забудьте поставить run.sh рядом с Dockerfile
#!/bin/bash
cat << EOF
***************************************************
Juli Docker for macOS
-----------------------------------------------
This Docker image allows you to play with
Julia on macOS.
Remember that you can easily attach other
samples by passing
-v ~/dir_with_code:/home/fortcoder/code
to your 'docker -it' command
-----------------------------------------------
EOF
/bin/bash
Затем вы можете создать контейнер следующим образом:
> docker build -t coarrays .
> mkdir sample_code
> docker run -i -t -v `pwd`/sample_code:/home/fortcoder/code coarrays
Вы можете сопоставить каталог на основе macOS (sample_code) с каталогом внутри контейнера.
Как только вы окажетесь в контейнере, просто запустите julia
> julia
> using Pkg
> Pkg.clone("https://github.com/QuantEcon/Games.jl")
┌ Warning: Pkg.clone is only kept for legacy CI script reasons, please use `add`
└ @ Pkg.API /buildworker/worker/package_linux64/build/usr/share/julia/stdlib/v1.3/Pkg/src/API.jl:664
Cloning git-repo `https://github.com/QuantEcon/Games.jl`
...
...
Building CMake ─────→ `~/.julia/packages/CMake/nSK2r/deps/build.log`
Building MbedTLS ───→ `~/.julia/packages/MbedTLS/a1JFn/deps/build.log`
Building NLopt ─────→ `~/.julia/packages/NLopt/eqN9a/deps/build.log`
Building CodecBzip2 → `~/.julia/packages/CodecBzip2/T5yr7/deps/build.log`
Building CodecZlib ─→ `~/.julia/packages/CodecZlib/5t9zO/deps/build.log`
Building FFTW ──────→ `~/.julia/packages/FFTW/qqcBj/deps/build.log`
Building Rmath ─────→ `~/.julia/packages/Rmath/BoBag/deps/build.log`
Building Clp ───────→ `~/.julia/packages/Clp/4DejL/deps/build.log`
julia>
как только Games будет установлен, вы можете выйти из julia и запустить свой код. Просто создайте файл внутри контейнера Docker (code.jl).
using Games
pd_payoff = [9.0 1.0; 10.0 3.0]
A, B = Player(pd_payoff), Player(pd_payoff)
pd = NormalFormGame((A, B))
rpd = RepeatedGame(pd, 0.75)
hp_pts = outerapproximation(rpd; nH=64, maxiter=500, tol=1e-8, verbose=true, nskipprint=10)
и запустить его
> julia ./code.jl
10 0.08865814883358247 (2.709875698216042, 2.7098756982160457)
20 0.004992651968453998 (2.9836620808639114, 2.983662080863915)
30 0.0002811537800653241 (2.9990799543504063, 2.9990799543504094)
40 1.5832757529921082e-5 (2.9999481889957704, 2.9999481889957793)
50 8.915982272483802e-7 (2.999997082340249, 2.999997082340251)
60 5.020902937857841e-8 (2.999999835696323, 2.9999998356963244)
>
person
Oo.oO
schedule
12.02.2020
gfortranвозникли проблемы: a. у вас его вообще нет, б. у вас это не в том месте. Обратите внимание, что вы всегда можете изменитьrpathбиблиотеки с помощьюinstall_name_tool— посмотрите здесь (в нижней части статьи: owsiak.org/setting-up-googletest-on-macos). Также убедитесь, что у вас установленgfortran(это можно сделать черезbrewиз пакета или из исходников: owsiak.org/) - person Oo.oO   schedule 12.02.2020@giordano)? - person giordano   schedule 12.02.2020Fortranна основеDocker. Таким образом, вы можете изолировать всю среду внутри контейнера и использовать ее так, как это было в Linux: github.com/mkowsiak/ coarrays-докер - person Oo.oO   schedule 12.02.2020