教你使用luarocks來建立rock包

一、什麼是Luarocks?

Luarocks是一個Lua包管理器,基於Lua語言開發,提供一個命令行的方式來管理Lua包依賴、安裝第三方Lua包等,社區比較流行的包管理器之一,另還有一個LuaDist,Luarocks的包數量比LuaDist多,更細節的二者對比可參閱這裏git

二、源碼安裝Luarocks

wget https://luarocks.org/releases/luarocks-2.4.1.tar.gz
tar -zxvf luarocks-2.4.1.tar.gz
cd luarocks-2.4.1
./configure
make build && make install
cd ..

三、建立rockspec文件並修改

mkdir lua-package
cd lua-package
luarocks write_rockspec

執行完以後會發現多了一個 lua-package-dev-1.rockspec 文件,這個文件就是咱們建立的 rockspec 文件,接着咱們打開這個文件,查看裏面的元信息,以下所示github

#該包名
package = "lua-package"
#版本號(注意:一、版本號和你文件名所包含的版本號要一致,如這裏的版本號是:dev-1,文件名是:lua-package-dev-1.rockspec
#二、版本號要以-x結尾,如0.0.1-1,1.3-1,若是你不按照這種規則定義則會報錯!)
version = "dev-1"
source = {
   #指定源碼的位置(通常咱們會發布到git所在的託管服務器,如我託管的是github就能夠填寫github託管地址了)
   url = "*** please add URL for source tarball, zip or repository here ***"
}
description = {
   #該包所在的說明文檔位置(我託管的是github,因此這裏能夠填寫分支在gh-pages所在的url)
   homepage = "*** please enter a project homepage ***",
   #指明所基於的開源協議
   license = "*** please specify a license ***"
}
build = {
   #編譯方式
   type = "builtin",
   #指定包含的模塊
   modules = {}
}

如今咱們來修改下 rockspec 文件,以下所示:vim

package = "lua-package"
version = "1.0-1"
source = {
   #這裏我指定的是我當前包所在的github託管地址
   url = "git://github.com/zhangwei900808/lua-package.git",
   #指定tag版本號
   tag = "v1.0-1",
   #設置爲master分支
   branch = "master"
}
description = {
   #設置描述信息
   summary = "A test lua package with luarocks",
   #源碼所在的說明文檔地址
   homepage = "https://github.com/zhangwei900808/lua-package",
   #指定維護者信息
   maintainer = "zhangwei<zw900808@gmail.com>",
   #指定開源協議
   license = "MIT"
}
#設置Lua的依賴環境
dependencies = {
  "lua >= 5.1, < 5.4"
}
build = { 
   type = "builtin",
   modules = {}
}

注意:version 如今已經改爲了 1.0-1 因此文件名也要改爲lua-package-1.0-1.rockspecapi

四、建立lua-package.lua文件,並修改rockspec文件

touch lua-package.lua

建立好以後,接着咱們編輯這個文件,加入下面代碼服務器

local _M = {}
_M._VERSION = '0.1'

local mt = { __index = _M }

function _M.new( self, firstname, lastname )
    return setmetatable({
        firstname = firstname,
        lastname = lastname
    }, mt)
end

function _M.get_fullname(self)
    return self.firstname .. self.lastname
end

return _M

修改以後,咱們在rockspec文件裏面加上這段curl

modules = {
     ["lua-package"] = "lua-package.lua"
   }

完整的rockspec代碼以下所示:ide

package = "lua-package"
version = "1.0-1"
source = {
   url = "git://github.com/zhangwei900808/lua-package.git",
   tag = "v1.0-1",
   branch = "master"
}
description = {
   summary = "A test lua package with luarocks",
   homepage = "https://github.com/zhangwei900808/lua-package",
   maintainer = "zhangwei<zw900808@gmail.com>",
   license = "MIT"
}
dependencies = {
  "lua >= 5.1, < 5.4"
}
build = {
   type = "builtin",
   modules = {
     ["lua-package"] = "lua-package.lua"
   }
}

五、推送代碼到github並添加README.md文件

touch README.md
vim README.md

git add .
git commit -am 'your commit'
git push -u origin master

並添加gh-pages分支作爲 rockspec的homepage使用,以下所示:工具

git branch gh-pages
git checkout gh-pages
git push --set-upstream origin gh-pages

clipboard.png

六、添加git tag

git tag v1.0-1
git push --tags

若是發現tag打錯了,可使用下面代碼進行刪除測試

#刪除本地版本
git tag -d your-tag
#刪除遠程倉庫版本
git push origin :refs/tags/your-tag

七、註冊luarocks並建立api-key

註冊地址在這,註冊完成以後,點擊菜單裏面的 Settings ,進去以後再點擊 API keys,在這裏你就能夠建立本身的api-keys了,建立好以後複製一下,接下來咱們會用到。ui

clipboard.png

八、上傳你的lua-package包

luarocks upload your-rockspec-name.rockspec --api-key=your-api-key

成功以後,咱們到luarocks官網看看你剛上傳的包,以下是我上傳的結果

clipboard.png

九、安裝並使用lua-package包

luarocks install lua-package

接下來咱們寫一段代碼測試下lua-package可用性,以下所示:

location /test {
    content_by_lua_block {
        local package = require("lua-package")
        local packageObj = package:new('zhang', 'wei')
        ngx.say(packageObj:get_fullname())
    }
}

啓動這段代碼,並訪問查看輸出結果:

curl "http://127.0.0.1/test"

zhangwei

十、總結:

1:不要把tag和推送代碼搞反了,是先推送代碼,後打包tag

11 、引用

  1. 源碼
  2. Creating a rock
  3. Lua包管理工具Luarocks詳解
相關文章
相關標籤/搜索