2022年1月11日13:57:45
官方:https://opm.openresty.org/
官方文檔:https://opm.openresty.org/docs#table-of-contents
為什么建議使用opm不建議使用luarocks?
http://openresty.org/cn/using-luarocks.html
官方解釋:請注意!LuaRocks 並不是 OpenResty 官方推薦的裝包方式。LuaRocks 上絕大部分的 Lua 庫都可能會阻塞 OpenResty 的事件循環,而讓性能急劇下降。推薦使用 OPM。
非常推薦一個本書 如果你要學習openresty 《openresty最佳實踐》 https://moonbingbing.gitbooks.io/openresty-best-practices/content/
目錄:
- 名稱
- 狀態
- 概要
- 描述
- 用法
- 安全安裝
- 本地安裝
- HTTP 代理支持
- 作者工作流程
- dist.ini 文件
- name
- abstract
- version
- author
- license
- requires
- repo_link
- is_original
- lib_dir
- exclude_files
- main_module
- doc_dir
- File .opmrc文件
- github_account
- github_token
- upload_server
- download_server
- 版本號處理
- 安裝
- For opm
- 安全注意事項
- 信用
- 待完成
- 作者
- 版權和許可
狀態
實驗性的.
概要
對於庫的用戶:
# 顯示用法
opm --help
# 使用用戶模式“lock”搜索包名稱和摘要。
opm search lock
# 使用多種模式“lru”和“cache”搜索包名稱和摘要。
opm search lru cache
# 在 some_author 的名稱下安裝一個名為 lua-resty-foo 的包
opm get some_author/lua-resty-foo
# 獲取所有作者下的 lua-resty-foo 包列表。
opm get lua-resty-foo
# 顯示由名稱指定的已安裝包的詳細信息。
opm info lua-resty-foo
# 顯示所有已安裝的軟件包。
opm list
# 升級包 lua-resty-foo 到最新版本。
opm upgrade lua-resty-foo
# 將所有已安裝的軟件包更新到最新版本。
opm update
# 卸載新安裝的包
opm remove lua-resty-foo
所有命令都可以跟隨 --cwd 選項在當前工作目錄(在 ./resty/modules/ 下)而不是系統范圍的位置工作。
# 安裝到 ./resty_modules/ 而不是系統范圍的位置:
opm --cwd get foo/lua-resty-bar
# 檢查 ./resty_modules/ 下本地安裝的包
opm --cwd list
# 刪除 ./resty_modules/ 下本地安裝的包
opm --cwd remove lua-resty-bar
對於庫的作者:
cd /path/to/lua-resty-foo/
opm build
# optional:
# cd lua-resty-foo-VERSION/ && opm server-build
# 您可能需要編輯 ~/.opmrc 文件來設置您的 github
# 個人訪問令牌。 “opm upload”的第一次運行將創建
# 為您提供樣板文件 ~/.opmrc 文件。
opm upload
# 清理 opm build 命令的剩余部分。
opm clean dist
描述
opm 是官方的 OpenResty 包管理器,原理上類似於 Perl 的 CPAN 和 NodeJS 的 npm。
我們在此 GitHub 代碼存儲庫中為中央包存儲庫提供 opm 客戶端命令行實用程序和服務器端應用程序。
OpenResty 用戶可以使用 opm 命令行實用程序下載在中央 opm 服務器(即 opm.openresty.org)上發布的包。 它還可以用於打包 OpenResty 包並將其上傳到服務器,以供包作者和維護者使用。 您可以在 bin/ 目錄下找到 opm 的來源。 它目前被實現為獨立的 Perl 腳本。
服務器端 Web 應用程序基於 OpenResty 構建並用 Lua 編寫。 您可以在 web/ 目錄下找到服務器代碼。
與許多其他包管理系統(如 cpan、luarocks、npm 或 pip)不同。 我們的 opm 采用了類似於 github 的包命名規則,即每個包名都應該由一個發布者 ID 限定,如 agentzh/lua-resty-foo 其中 agentzh 是發布者 ID 而 lua-resty-foo 是包名 本身。 這種命名要求避免了占用好包名的誘惑,也允許多個同名庫共存於同一個中央服務器存儲庫中。 由用戶決定安裝哪個庫(甚至在她的不同項目中安裝同一庫的多個分支)。 為簡單起見,我們只是將 GitHub 用戶 ID 和組織 ID 映射到 opm 的發布者 ID。 出於這個原因,我們使用 GitHub 個人訪問令牌(或 oauth 令牌)來驗證我們的包發布者。 這也完全消除了 opm 包作者的注冊過程。
opm 內置了對 restydoc 工具的支持,即通過 opm 安裝的包的文檔已經被 restydoc 索引,可以直接在終端上用 restydoc 工具查看。
opm 目前只支持純 Lua 庫,但我們將很快添加對純 C 或一些 C 組件的 Lua 庫的支持。 未來還希望通過 opm 添加對將 3rd-party NGINX C 模塊重新分發為動態 NGINX 模塊的支持。 OpenResty 世界畢竟由各種不同類型的“模塊”組成。
我們還計划允許用戶通過特殊用戶 ID luarocks 通過 opm 安裝 LuaRocks 包。 安裝一個與 OpenResty 無關的 Lua 模塊會帶來風險,該模塊會在網絡 I/O 上嚴重阻塞 NGINX 工作進程,但是,作為 opm 的開發人員,我們總是喜歡選擇,尤其是那些給我們用戶的選擇。
Back to TOC
用法
opm [options] command package...
Options:
-h --help 打印此幫助。 --install-dir =PATH 安裝到指定的 PATH 目錄而不是系統范圍內包含此工具的 OpenResty 安裝樹。 --cwd 安裝到 ./resty_modules/ 下的當前工作目錄,而不是包含在系統范圍內的OpenResty 安裝樹這個工具。 Commands: build 從當前工作目錄構建一個包 tarball,准備上傳到服務器。 clean ARGUMENT ... 做清理工作。目前有效的參數是“dist”,它清理“build”命令創建的臨時文件和目錄。 info PACKAGE ... 輸出指定的詳細信息(或元數據)包。像“lua-resty-lock”這樣的短包名是可以接受的。 get PACKAGE ... 獲取並安裝指定的包。完全合格的包裝像“openresty/lua-resty-lock”這樣的名字是必需的。一個還可以指定版本約束,如“=0.05”和“>=0.01”。 list 列出所有已安裝的軟件包。包名稱和版本被顯示。 remove PACKAGE ... 刪除(或卸載)指定的包。短包名稱像“lua-resty-lock”是可以接受的。 search QUERY ... 在服務器上搜索匹配用戶查詢的包名稱或摘要。可以指定多個查詢,並且它們必須同時實現。 server -build 構建最終的包 tarball,准備在服務器上分發。這個命令一般是服務器用來驗證上傳的包壓縮包。 update 將所有已安裝的軟件包更新到最新版本服務器。 upgrade PACKAGE ... 將名稱指定的包升級到最新版本服務器。像“lua-resty-lock”這樣的短包名是可以接受的。 upload 將包 tarball 上傳到服務器。該命令總是調用在上傳之前自動生成命令。
全局安裝
要全局安裝 opm 包,只需使用 sudo opm get foo/bar 命令。
Back to TOC
本地安裝
當您使用 --cwd 選項將軟件包安裝到 ./resty_modules/ 目錄時,您應該將以下行放入您的 nginx.conf 中的 http {} 塊內:
lua_package_path "$prefix/resty_modules/lualib/?.lua;;";
lua_package_cpath "$prefix/resty_modules/lualib/?.so;;";
不要自己將 $prefix 更改為硬編碼的絕對路徑! OpenResty 將在啟動時自動解析指令值中的特殊 $prefix 變量。 $prefix 值將被解析為服務器前綴,稍后將通過 openresty 命令行的 -p 選項指定。
然后你應該像這樣從當前工作目錄啟動你的 OpenResty 應用程序:
openresty -p $PWD/
假設您在當前目錄中有以下 OpenResty 應用程序目錄布局:
logs/
conf/
conf/nginx.conf
resty_modules/
或者,如果您只想使用安裝在 ./resty_modules 目錄中的 opm 模塊的 resty 命令行實用程序,那么您應該只使用 -I ./resty_modules/lualib 選項,如
resty -I ./resty_modules/lualib -e 'require "foo.bar".go()'
Back to TOC
HTTP 代理支持
通過 http_proxy 和 https_proxy 系統環境變量支持 HTTP 代理,如
http_proxy [protocol://]<host>[:port]
Sets the proxy server to use for HTTP.
https_proxy [protocol://]<host>[:port]
Sets the proxy server to use for HTTPS.
Back to TOC
作者工作流程
包作者應該在 Lua 庫源代碼樹的頂層放置一個名為 dist.ini 的元數據文件。 opm build 命令使用此文件來構建庫並將其打包成一個 tarball 文件,該文件可以稍后通過 opm upload 命令上傳到中央包服務器。
對於 OpenResty 的 lua-resty-core 庫,一個示例 dist.ini 文件如下所示:
# opm 打包的分發配置
name = lua-resty-core
abstract = New FFI-based Lua API for the ngx_lua module
author = Yichun "agentzh" Zhang (agentzh)
is_original = yes
license = 2bsd
lib_dir = lib
doc_dir = lib
repo_link = https://github.com/openresty/lua-resty-core
main_module = lib/resty/core/base.lua
requires = luajit, openresty/lua-resty-lrucache >= 0.04
正如我們所見,dist.ini 文件使用流行的 INI 文件格式。 此示例中的大多數字段應該是不言自明的。 有關 dist.ini 中可用字段的詳細文檔,請查看文件 dist.ini 部分。
opm build 命令還從當前系統用戶的主目錄(即文件路徑 ~/.opmrc)下的配置文件 .opmrc 中讀取並提取信息。 如果該文件不存在, opm build 將自動在該路徑中生成一個樣板文件。 一個示例 ~/.opmrc 文件如下所示。
# 您的 github 帳戶名(您擁有的 github 組織的 github 用戶名)
github_account=agentzh
# 您可以從 Web UI 生成 github 個人訪問令牌:https://github.com/settings/tokens
# 重要的! 您需要將范圍“user:email”和“read:org”分配給您的 github 令牌。
# 出於安全考慮,您不應將任何其他范圍分配給您的令牌。
github_token=0123456789abcdef0123456789abcdef01234567
# the opm central servers for uploading openresty packages.
upload_server=https://opm.openresty.org
download_server=https://opm.openresty.org
基本上, opm build 命令只需要此文件中的 github_account 設置。嘗試將打包的 tarball 上傳到遠程包服務器的 opm upload 命令需要其他字段。您可以使用自己的 GitHub 登錄名(在本例中為 agentzh),也可以使用您擁有的 GitHub 組織名稱(即擁有管理員權限)。
opm build 成功在當前工作目錄下生成一個.tar.gz 文件后,作者可以使用opm upload 命令將該文件上傳到遠程服務器。為確保一致性,opm upload 在嘗試上傳操作之前自動運行 opm build 本身。中央包服務器(本例中為 opm.openresty.org)在后台調用 GitHub API 來驗證作者的身份。因此,作者需要在她的 ~/.opmrc 文件中提供他的 GitHub 個人訪問令牌。只有 user:email 和 read:org 權限(或 GitHub 術語中的范圍)需要分配給這個訪問令牌。
Back to TOC
dist.ini 文件
dist.ini 文件指定了包的元數據,並被 opm build 用來生成准備上傳到遠程包服務器的 tarball。 該文件應位於庫或模塊源代碼樹的頂部。
此文件使用 INI 文件格式。 它在默認頂級部分中包含以下鍵(或屬性):
Back to TOC
name
指定包的名稱(不包括版本號)。 例如,
name = lua-resty-limit-traffic
名稱只能包含字母、數字和短划線 (-)。
此key是強制性的。
Back to TOC
abstract
當前包的摘要。
abstract = New FFI-based Lua API for the ngx_lua module
您可以在此字段值中使用 UTF-8 字符。 但是,無效的 UTF-8 序列會導致 opm build 或 opm server-build 命令出錯。
此key是強制性的。
Back to TOC
version
當前包的版本號。
如果指定了這個鍵,那么這里指定的版本號將自動與從“主模塊”文件中提取的版本號進行比較(更多詳細信息請參見 main_module 鍵)。
Example:
version = 1.0.2
有關軟件包版本號的更多詳細信息,另請參閱版本號處理部分。
該鍵是可選的。
Back to TOC
author
指定庫的一位或多位作者。 例如,
author = Yichun Zhang (agentzh)
多個作者的姓名應以逗號分隔,並帶有可選的空格。
author = Yichun Zhang (agentzh), Dejiang Zhu
您可以在此字段值中使用 UTF-8 字符。 但是,無效的 UTF-8 序列會導致 opm build 或 opm server-build 命令出錯。
此key是強制性的。
Back to TOC
許可證 (不翻譯)
Specifies the license for the library. For example,
license = 3bsd
This assigns the 3-clause BSD license to the current package.
Special IDs for common code licenses are required. For now, the following IDs are supported:
2bsd
BSD 2-Clause "Simplified" or "FreeBSD" license
3bsd
BSD 3-Clause "New" or "Revised" license
apache2
Apache License 2.0
artistic
Artistic License
artistic2
Artistic License 2.0
ccby
Creative Commons Attribution 4.0 International Public License
ccbysa
Creative Commons Attribution-ShareAlike 4.0 International Public License
ccbynd
Creative Commons Attribution-NoDerivatives 4.0 International Public License
ccbync
Creative Commons Attribution-NonCommercial 4.0 International Public License
ccbyncsa
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License
ccbyncnd
Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License
cddl
Common Development and Distribution License
eclipse
Eclipse Public License
gpl
GNU General Public License (GPL)
gpl2
GNU General Public License (GPL) version 2
gpl3
GNU General Public License (GPL) version 3
lgpl
GNU Library or "Lesser" General Public License (LGPL)
mit
MIT license
mozilla2
Mozilla Public License 2.0
proprietary
Proprietary
public
Public Domain
如果您確實需要上面未列出的開源許可證,請告訴我們。
也可以同時指定多個許可證,如
license = gpl2, artistic2
這指定了雙重許可:GPLv2 和 Artistic 2.0。
要將包上傳到官方的opm包服務器,您至少必須在此處指定一個開源許可。
This key is mandatory.
Back to TOC
依賴
指定此包的運行時依賴項。
多個依賴項用逗號分隔,周圍有可選的空格。 如在
requires = foo/lua-resty-bar, baz/lua-resty-blah
在運行 opm get 或 opm build 命令時,必須同時滿足此鍵中指定的所有依賴項約束。
您還可以指定版本號要求,如
requires = foo/lua-resty-bar >= 0.3.5
支持的版本比較運算符是 >=、= 和 >。 它們的語義是不言自明的。
您還可以指定以下特殊依賴項名稱:
luajit
需要包用戶的 OpenResty 安裝(以及包上傳器)中的 LuaJIT 組件。 當指定版本號約束時,也會檢查 LuaJIT 的版本號。
nginx
需要包用戶的 OpenResty 安裝(以及包上傳器)中的 NGINX 組件。 當指定版本號約束時,也會檢查 NGINX 內核的版本號。
openresty
僅當指定了關聯的版本號約束時,此依賴關系才有意義。 包用戶(以及上傳者)的 OpenResty 安裝的版本號必須滿足這里的版本約束。
ngx_http_lua
需要包用戶的 OpenResty 安裝(以及包上傳者的)中的 ngx_http_lua_module 組件。 當指定版本號約束時,安裝的 ngx_http_lua_module 的版本也會被檢查。
下面是這樣一個例子:
requires = luajit >= 2.1.0, nginx >= 1.11.2, ngx_http_lua = 0.10.6
或者您可以在上面的示例中只指定一個 openresty 版本約束來覆蓋它們:
requires = openresty >= 1.11.2.1
該鍵是可選的。
Back to TOC
repo_link
代碼存儲庫的 URL(通常在 GitHub 上)。 例如,
repo_link = https://github.com/openresty/lua-resty-core
如果存儲庫位於 GitHub 上,則 opm build 確保在 ~/.opmrc 文件中的 github_account 中指定的名稱與 GitHub 存儲庫 URL 中的帳戶匹配。 否則 opm build 會報錯。
此key是強制性的。
Back to TOC
is_original
取值 yes or no 來指定此包是否為原創作品(即,不是其他人的另一個包的分支)。
此key是強制性的。
Back to TOC
lib_dir
指定庫文件(例如 .lua 文件)的根目錄。
不得使用絕對目錄路徑或包含 .. 作為值的路徑。
默認為庫。
該鍵是可選的。
Back to TOC
exclude_files
通過 opm bulid 指定要在打包期間排除的文件的模式。 Unix shell 通配符,如 * 和 ? 支持。
多個模式應該用逗號分隔,周圍有可選的空格。
exclude_files=foo*.lua, bar/baz/*/*.lua, lint_config.lua
Back to TOC
main_module
此項指定當前包的“主模塊”文件的 PATH。 例如,opm build 命令讀取“主模塊”文件以提取當前包的版本號。
opm build 使用簡單的正則表達式來查找 Lua 代碼模式,如下所示:
_VERSION = '1.0.2'
version = "0.5"
version = 0.08
如果未指定此鍵,則 opm build 將嘗試自動查找主模塊文件(盡管這可能是錯誤的)。
您不得使用絕對文件路徑或包含 .. 作為值的路徑。
This key is optional.
Back to TOC
doc_dir
指定文檔文件的根目錄。 默認為庫。
不得使用絕對目錄路徑或包含 .. 作為值的路徑。
opm build 總是嘗試以 Markdown(.md 或 .markdown)或 POD(.pod)格式收集文檔文件。
不管這個 doc_dir 鍵的值是什么, opm build 總是嘗試在當前工作目錄(應該是當前包的根目錄)中收集以下文件:
README.md
,README.markdown
, orREADME.pod
COPYING
COPYRIGHT
Changes.md
,Changes.markdown
, orChanges.pod
您可以在這些文檔文件中使用 UTF-8 字符。 必須避免使用其他多字節字符編碼。
This key is optional.
Back to TOC
.opmrc 文件
當前系統用戶主目錄下的 .opmrc 文件為當前系統用戶配置各種重要設置。 只有庫作者才應該關心這個文件,因為像 opm get、opm search 或 opm list 這樣的命令根本不需要這個文件。
與文件 dist-ini 一樣,該文件也是 INI 文件格式。 當此文件不存在時,第一次運行 opm build 或 opm upload 命令會自動生成一個樣板文件供您以后自己填寫。
該文件識別以下鍵:
Back to TOC
github_account
指定您的 GitHub 帳戶名稱,您的 GitHub 用戶登錄名或您擁有的 github 組織。
例如,文檔作者的 GitHub 登錄名是 agentzh,同時他還擁有 GitHub 組織 openresty。 因此,他可以通過配置此 github_account 密鑰,選擇使用相同的 GitHub 訪問令牌(通過 github_token 密鑰定義)在 agentzh 或 openresty 下上傳他的包。
This key is required.
Back to TOC
github_token
指定用於包上傳的 GitHub 個人訪問令牌。
您可以從 GitHub Web UI 生成 GitHub 個人訪問令牌。
當您在 GitHub 的網站上生成令牌時,為您的令牌分配正確的權限(或 GitHub 術語中的范圍)至關重要。 opm 工具鏈要求令牌必須包含 user:email 范圍。或者,您還可以同時分配 read:org 范圍,如果您想以您擁有的組織名稱上傳 OpenResty 包,則需要這樣做。
GitHub 個人訪問令牌就像密碼一樣,因此在處理時要非常小心。永遠不要與世界其他地方共享它,否則任何人都可以將包上傳到您名下的 OPM 包服務器。
出於安全考慮,包服務器還拒絕過於寬松的 GitHub 個人訪問令牌(即,具有比需要更多的范圍)。包服務器在自己的數據庫中緩存您的令牌的排序哈希,以便服務器在后續上傳時不必查詢 GitHub。因為令牌是散列的,所以包服務器只能驗證您的令牌是否正確,但不能僅從數據庫中恢復您的原始令牌。
This key is required.
Back to TOC
upload_server
指定上傳包的 OPM 服務器。 默認為 https://opm.openresty.org。 強烈建議使用 https(這是默認設置)來保護通信隱私。
官方的 OPM 包服務器是 https://opm.openresty.org。 但是,您可以將此密鑰指向您自己的或任何 第三方服務器(然后您需要自擔風險)。
此鍵可以具有與 download_server 不同的值。
Back to TOC
download_server
指定下載包的 OPM 服務器。 默認為 https://opm.openresty.org。 強烈建議使用 https(這是默認設置)來保護通信隱私。
官方的 OPM 包服務器是 https://opm.openresty.org。 但是,您可以將此密鑰指向您自己的或任何 第三方服務器(然后您需要自擔風險)。
該鍵的值可以與upload_server 不同。
Back to TOC
Version Number Handling
OPM 要求所有包版本號僅由數字、點、字母和下划線組成。 只有數字部分是強制性的。
OPM 將所有版本號視為一個或多個由點 (.) 或任何其他非數字字符分隔的整數。 版本號比較是通過按出現的順序比較每個整數部分來執行的。 例如,以下版本號比較成立:
12 > 10
1.0.3 > 1.0.2
1.1.0 > 1.0.9
0.10.0 > 0.9.2
當您的版本號看起來像十進制數字時,可能會出現一些意外,例如
0.1 < 0.02
這是因為 0.1 被解析為整數對 {0, 1},而 0.02 被解析為 {0, 2},所以后者大於前者。 為避免此類陷阱,請始終指定等長的小數部分,即,將 0.1 寫為 0.10,與 0.02 的長度相同。
OPM 尚不支持“候選版本”(RC)或“開發者版本”等特殊版本。 但我們將來可能會增加這樣的支持。 為了向前兼容,包作者應避免使用 _2 或 rc1 等后綴的版本號。
Back to TOC
安裝
For opm
從 1.11.2.2 開始的 OpenResty 版本已經默認包含並安裝了 opm。 所以通常你不需要自己安裝opm。
值得注意的是,如果你使用的是官方的 OpenResty 預構建的 linux 包,你應該安裝 openresty-opm 包,因為 openresty 二進制包本身不包含 opm。
如果你真的想在代碼庫中更新到最新版本的 opm,那么只需將存儲庫中的文件 bin/opm 復制到 <openresty-prefix>/bin/ 其中 <openresty-prefix> 是值 - 構建 OpenResty 時 ./configure 的 -prefix 選項(默認為 /usr/local/openresty/)。
# <openresty-prefix> defaults to `/usr/local/openresty/`
# unless you override it when building OpenResty yourself.
sudo cp bin/opm <openresty-prefix>/bin/
如果您使用的是默認不包含 opm 的舊版本 OpenResty,那么您還應該創建以下目錄:
cd <openresty-prefix>
sudo mkdir -p site/lualib site/manifest site/pod
請注意,至少需要 OpenResty 1.11.2.1 才能使 opm 正常工作。
要運行 opm 工具,您只需要 perl、tar 和 curl 即可運行 opm 工具。 確保你的 perl 不是太舊(至少應該是 5.10.1),並且你的 curl 支持 SNI。
Back to TOC
安全注意事項
默認情況下,opm 客戶端工具始終使用 HTTPS 與包服務器 opm.openresty.org 通信。 用於包上傳和包下載,以及其他元數據的 Web 服務查詢。 盡管用戶可以通過編輯自己的 ~/.opmrc 文件中的 download_server 和/或 upload_server 鍵來手動切換到 HTTP 協議。 opm 客戶端工具還始終驗證遠程 OPM 包服務器的 SSL 證書(現在通過 curl)。
同樣,OPM 包服務器總是使用 TLS 與 GitHub 和 Mailgun 提供的遠程服務進行通信。 這些遠程站點的 SSL 證書也始終在服務器端進行驗證。 用戶無法關閉此功能。
OPM 包服務器使用 PostgreSQL 的 pgcrypto 擴展來加密數據庫中作者的 GitHub 個人訪問令牌(我們將令牌緩存在我們自己的數據庫中,以在 GitHub API 關閉時加快后續上傳並提高站點可靠性)。 即使是服務器管理員也無法從數據庫中恢復原始訪問令牌。 服務器還通過拒絕此類令牌來確保作者的個人令牌不會過於寬松。
opm 工具鏈和服務器還始終對下載和上傳的包文件執行 MD5 校驗和驗證,以確保通過網絡傳輸時的數據完整性。
Back to TOC
信用
opm 工具的設計靈感來源於各種現有的包管理系統,包括但不限於 Perl 的 cpan 和 Dist::Zilla、RedHat 的 yum、NodeJS 的 npm 和 Mac OS X 的 homebrew。
Back to TOC
待完成
- 添加 opm reinstall 命令以重新安裝已安裝的模塊(在同一版本)。
- 添加 opm doctor 命令檢查當前 opm 包安裝樹是否有不一致的地方。
- 添加 opm files <package> 命令以列出指定包中的所有文件。
- 添加 opm whatprovides <package> 命令來查找指定文件屬於哪個包。
- 為 opm build 添加插件機制(類似於 Perl 的 Dist::Zilla 打包框架)。
- 將 opm.openresty.org 變成一個類似於 search.cpan.org 的成熟網站。
- 使用獨立的 C 庫添加對 Lua C 模塊和 LuaJIT FFI 模塊的支持。
- 添加對第 3 方 NGINX C 模塊的支持(可以編譯為 NGINX 動態模塊)。
- 通過特殊名稱空間 luarocks 添加(有限)對 LuaRocks 的支持,例如,
opm get luarocks/foo
Back to TOC
作者
Yichun Zhang (agentzh) agentzh@gmail.com, OpenResty Inc.
Back to TOC