Julia, cuenta con varias herramientas para la administración de paquetes. Todas estas herramientas están disponibles en el módulo, Base.Pkg, que se incluye por defecto.
La ayuda para dichas herramientas está disponible en la consola de las sesiones interactivas y en línea:
In [1]:
Pkg.status() # Obtenemos el "estado" de la biblioteca
Como podemos observar, en este caso tenemos paquetes:
Si no ha instalado ningún paquete al momento de ejecutar el comando, obtendrá:
Pkg.status()
INFO: Initializing package repository ~/.julia/v0.5
INFO: Cloning METADATA from git://github.com/JuliaLang/METADATA.jl
No packages installed.
Si deseamos saber dónde está instalado un paquete en particular, usamos:
Pkg.dir("IJulia")
In [2]:
Pkg.available() # Qué librerías (paquetes) están disponibles para instalar
Out[2]:
Este comando regresa un vector de tipo String:
In [3]:
typeof(Pkg.available()) # Qué tipo de respuesta nos regresa Pkg.available()
Out[3]:
Por lo que podríamos usar las funciones disponibles para cadenas de caracteres, como contains()
In [4]:
contains(==, # igualdad que evaluará la función
Pkg.available(), # vector donde hacemos la búsqueda
"IJuliaPortrayals") # cadena a buscar
Out[4]:
Para saber más:
In [5]:
Pkg.installed()
Out[5]:
Como se puede observar, este comando regresa un diccionario:
In [6]:
typeof(Pkg.installed())
Out[6]:
Las variables de tipo diccionario cuentan con sus propias funciones, por ejemplo:
In [7]:
haskey(Pkg.installed(), "PlotlyJS")
Out[7]:
1. Copiar el archivo REQUIERE de la versión anterior a la nueva:
$ ls ~/.julia/ # obtenemos listado del directorio local de julia
lib v0.5 v0.6
$ cp ~/.julia/v0.5/REQUIRE ~/.julia/v0.6/ # copiamos "REQUIERE" de v0.5 a v0.6
$ cat ~/.julia/v0.6/REQUIRE # mostramos el contenido de "REQUIERE"
IJulia
PyPlot
Weave
Plots
PlotlyJS
UnicodePlots
StatPlots
PlotRecipes
Blink
Rsvg
Distributions
GLM
RDatasets
DataFrames
DataArrays
LaTeX
Winston
Gadfly
Measures
Compose
2. Ahora, lance la nueva versión de julia y, desde la REPL, ejecute:
Pkg.resolve()
In [8]:
if !haskey(Pkg.installed(), "Distributions") # ¿Está instalado el paquete?
Pkg.add("Distributions") # Si no está, lo instalamos
using Distributions
else
using Distributions
end
In [14]:
workspace()
In [15]:
function p_load(a::String)
if !haskey(Pkg.installed(), a) # ¿Está instalado el paquete?
Pkg.add(a) # Si no está, lo instalamos
# using Distributions
else
#using Distributions
println("Ya esta")
end
end
Out[15]:
In [16]:
methods(p_load)
Out[16]:
In [17]:
p_load("IJulia")
In [18]:
p_load(Distributions)
In [11]:
Pkg.status()
In [12]:
versioninfo()
In [13]:
Dates.today()
Out[13]: