7. Реестры
Реестры содержат информацию о пакетах, например о доступных выпусках и зависимостях, а также о том, где их можно скачать. Реестр General
является заданным по умолчанию и устанавливается автоматически, если другие реестры не установлены.
Управление реестрами
Реестры можно добавлять, удалять и обновлять как из REPL Pkg, так и с помощью функционального API. В этом разделе описывается интерфейс REPL. Сведения об API реестра приведены в разделе Справка по API реестра.
Добавление реестров
Пользовательский реестр можно добавить с помощью команды registry add
из REPL Pkg. Обычно это делается с помощью URL-адреса реестра.
Если был установлен пользовательский реестр, в результате чего реестр General
не был установлен автоматически, его легко добавить вручную: он будет добавлен автоматически. В этом случае можно просто добавить General
,
pkg> registry add General
и все пакеты, зарегистрированные в General
, доступны для, например, добавления. Чтобы узнать, какие реестры установлены в данный момент, можно воспользоваться командой registry status
(или registry st
)
pkg> registry st
Registry Status
[23338594] General (https://github.com/JuliaRegistries/General.git)
Реестры всегда добавляются в пользовательское хранилище, которое является первой записью в DEPOT_PATH
(см. раздел Глоссарий).
Возможно, сервер пакетов представляет дополнительные доступные реестры пакетов . Когда Pkg запускается с чистым хранилищем Julia (например, после новой установки) с пользовательским сервером пакетов, настроенным с помощью |
Удаление реестров
Для удаления реестров можно использовать команду registry remove
(или registry rm
). Здесь мы удалим реестр General
:
pkg> registry rm General
Removing registry `General` from ~/.julia/registries/General
pkg> registry st
Registry Status
(no registries found)
В случае, если установлено несколько реестров с именем General
, вам придется различать их с помощью uuid
, как и при работе с пакетами. Например:
pkg> registry rm General=23338594-aafe-5451-b93e-139f81909106
Removing registry `General` from ~/.julia/registries/General
Обновление реестров
Для обновления реестров доступна команда registry update
(или registry up
). Здесь мы обновим реестр General
:
pkg> registry up General
Updating registry at `~/.julia/registries/General`
Updating git-repo `https://github.com/JuliaRegistries/General`
а чтобы обновить все установленные реестры, просто выполните следующее:
pkg> registry up
Updating registry at `~/.julia/registries/General`
Updating git-repo `https://github.com/JuliaRegistries/General`
Реестры автоматически обновляются один раз в каждом сеансе при выполнении операции с пакетом, поэтому обновление вручную осуществляется редко.
Формат реестра
В реестре каждый пакет имеет собственный каталог, в котором находятся следующие файлы: Compat.toml
, Deps.toml
, Package.toml
и Versions.toml
. Форматы этих файлов описываются ниже.
Файл Compat.toml реестра
Файл Compat.toml
содержит ряд блоков, указывающих номера версий, а также набор зависимостей, перечисленных ниже. Например, часть такого файла может выглядеть следующим образом:
["0.8-0.8.3"]
DependencyA = "0.4-0.5"
DependencyB = "0.3-0.5"
["0.8.2-0.8.5"]
DependencyC = "0.7-0"
Зависимости, которые остаются неизменными в разных версиях, объединяются в эти блоки. Интерпретация этих диапазонов приведена в комментарии после каждой строки ниже:
"0.7-0.8" # [0.7.0, 0.9.0)
"0.7-0" # [0.7.0, 1.0.0)
"0.8.6-0" # [0.8.6, 1.0.0)
"0.7-*" # [0.7.0, ∞)
Так, для этого пакета версии [0.8.0, 0.8.3]
зависят от версий [0.4.0, 0.6.0)
зависимости DependencyA
и версии [0.3.0, 0.6.0)
зависимости DependencyB
. Между тем, верно и то, что для версий [0.8.2, 0.8.5]
требуются определенные версии DependencyC
(так что для версий 0.8.2
и 0.8.3
требуются все три).
Виды реестров
Стандартный сервер Pkg (pkg.julialang.org
) предлагает два различных «вида» реестров.
Совместимость: Julia 1.8
Виды реестров доступны только начиная с Julia версии 1.8. |
-
conservative
: подходит для большинства пользователей; все пакеты и артефакты в этом виде реестра доступны с сервера Pkg без необходимости скачивания из других источников. -
eager
: этот реестр предлагает последние версии пакетов, даже если сервер Pkg и сервер хранилища не закончили их обработку; таким образом, некоторые пакеты и артефакты могут быть недоступны с сервера Pkg и их придется скачивать из других источников (например, с сайта GitHub).
Видом реестра по умолчанию является conservative
. Рекомендуется, чтобы большинство пользователей использовали вид conservative
, если только они не знают, что им нужно работать с видом eager
.
Чтобы выбрать вид eager
:
ENV["JULIA_PKG_SERVER_REGISTRY_PREFERENCE"] = "eager"
import Pkg
Pkg.Registry.update()
Чтобы выбрать вид conservative
:
ENV["JULIA_PKG_SERVER_REGISTRY_PREFERENCE"] = "conservative"
import Pkg
Pkg.Registry.update()
Создание и поддержка реестров
Pkg предоставляет только клиентские средства для работы с реестрами, а не функциональные возможности для их создания или поддержки. Однако Registrator.jl и LocalRegistry.jl предлагают способы создания и обновления реестров, а в RegistryCI.jl доступны функции автоматического тестирования и слияния для поддержки реестра.