Tarantool CE/EE Documentation portal logo
Помощь
Обновлена 15 сентября 2026 г. в 08:55

Управление модулями

В этом разделе описывается установка и перезагрузка модулей Tarantool.

Установка модуля

Модули на Lua и C от разработчиков Tarantool и сторонних разработчиков:

Установка модуля из репозитория

Подробнее см. файл README в репозитории tarantool/rocks.

Установка модуля из deb/rpm

Выполните следующие действия:

  1. Установите Tarantool, как описано на странице загрузки.

  2. Установите нужный модуль. Найдите имя модуля на странице Tarantool rocks и добавьте префикс tarantool- перед именем модуля во избежание неоднозначности:

    $ # for Ubuntu/Debian:$ sudo apt-get install tarantool-<module-name>$ # for RHEL/CentOS/Amazon:$ sudo yum install tarantool-<module-name>

    Например, чтобы установить модуль vshard на Ubuntu, введите:

    $ sudo apt-get install tarantool-vshard

Теперь можно:

  • Загрузить любой модуль с помощью:

    tarantool> name = require('module-name')

    Например:

    tarantool> vshard = require('vshard')
  • Искать установленные модули локально с помощью package.path (Lua) или package.cpath (C):

    tarantool> package.path---- ./?.lua;./?/init.lua; /usr/local/share/tarantool/?.lua;/usr/local/share/tarantool/?/init.lua;/usr/share/tarantool/?.lua;/usr/share/tarantool/?/init.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua;/usr/share/lua/5.1/?.lua;/usr/share/lua/5.1/?/init.lua;tarantool> package.cpath–--- ./?.so;/usr/local/lib/x86_64-linux-gnu/tarantool/?.so;/usr/lib/x86_64-linux-gnu/tarantool/?.so;/usr/local/lib/tarantool/?.so;/usr/local/lib/x86_64-linux-gnu/lua/5.1/?.so;/usr/lib/x86_64-linux-gnu/lua/5.1/?.so;/usr/local/lib/lua/5.1/?.so;...

Перезагрузка модуля

Любое приложение или модуль Tarantool можно перезагрузить с нулевым временем простоя.

Перезагрузка модуля на Lua

Ниже приведен пример, иллюстрирующий типичный случай обновления и перезагрузки.

  1. Обновите файл приложения. Например, модуль в /usr/share/tarantool/app.lua:

    local function start()  -- initial version  box.once("myapp:v1.0", function()    box.schema.space.create("somedata")    box.space.somedata:create_index("primary")    ...  end)  -- migration code from 1.0 to 1.1  box.once("myapp:v1.1", function()    box.space.somedata.index.primary:alter(...)    ...  end)  -- migration code from 1.1 to 1.2  box.once("myapp:v1.2", function()    box.space.somedata.index.primary:alter(...)    box.space.somedata:insert(...)    ...  end)end-- start some background fibers if you needlocal function stop()  -- stop all background fibers and clean up resourcesendlocal function api_for_call(xxx)  -- do some businessendreturn {  start = start,  stop = stop,  api_for_call = api_for_call}
  2. Обновите файл экземпляра. Например, /etc/tarantool/instances.enabled/my_app.lua:

    #!/usr/bin/env tarantool---- hot code reload example--box.cfg({listen = 3302})-- ATTENTION: unload it all properly!local app = package.loaded['app']if app ~= nil then  -- stop the old application version  app.stop()  -- unload the application  package.loaded['app'] = nil  -- unload all dependencies  package.loaded['somedep'] = nilend-- load the applicationlog.info('require app')app = require('app')-- start the applicationapp.start({some app options controlled by sysadmins})

    Самое главное - правильно выгрузить приложение и его зависимости.

  3. Перезагрузите файл приложения вручную. Например, с помощью tt:

    $ tt connect my_app -f /etc/tarantool/instances.enabled/my_app.lua

Перезагрузка модуля на С

После компиляции новой версии модуля на C (библиотека общего пользования *.so), вызовите функцию box.schema.func.reload('module-name') из Lua-скрипта для перезагрузки модуля.