ZoneMinder
所有ZoneMinder的文档现在都可以在 https://zoneminder.readthedocs.org 在线查看
概述
ZoneMinder是一套集成的应用程序,提供完整的监控解决方案,可以捕获、分析、记录和监控连接到基于Linux机器的任何闭路电视或安全摄像头。它设计用于支持Video For Linux (V4L)接口的发行版,并已经在连接到BTTV卡的视频摄像头、各种USB摄像头以及大多数IP网络摄像头上进行了测试。
联系开发团队
在我们的GitHub论坛上创建问题之前,请阅读我们的发帖规则: https://github.com/ZoneMinder/ZoneMinder/wiki/Github-Posting-Rules
我们的Dockerfile已经移动
请在此处提交针对ZoneMinder Dockerfile的问题: https://github.com/ZoneMinder/zmdockerfiles
安装方法
从软件包仓库安装
这是在系统上安装ZoneMinder的推荐方法。以下发行版维护了ZoneMinder软件包:
- Ubuntu通过Isaac Connor的PPA
- Debian从其默认仓库
- RHEL/CentOS及其克隆版通过RPM Fusion
- Fedora通过RPM Fusion
- OpenSuse通过第三方仓库
- Mageia从其默认仓库
- Arch通过AUR
- Gentoo通过Portage Overlays
如果您的发行版没有提供ZoneMinder软件包的仓库,我们鼓励您构建自己的软件包,而不是从源代码构建。虽然每个发行版都有其独特之处,但它们通常相似程度足以让您将其他发行版的软件包构建说明适配到您自己的发行版上。
不鼓励从源代码构建
从历史上看,在系统上安装ZoneMinder需要通过传统的configure、make、make install命令从源代码构建。为了编译ZoneMinder,需要预先确定并安装所有依赖项。构建后还需要手动将init和logrotate脚本复制到适当的位置。可选包如jscalendar和Cambozola也需要手动安装。卸载可能会留下过时的文件,这可能在升级时造成问题。说到升级,当需要升级时,所有这些手动步骤都必须再次重复。 现在有更好的方法可以为你完成大部分工作。目前的开发团队和其他志愿者已经在提供必要资源以避免从源代码构建方面取得了巨大进展。
构建ZoneMinder软件包
将ZoneMinder构建成软件包并不比从源代码构建更困难。事实上,如果你过去成功地从源代码构建过ZoneMinder,那么你可能会发现这些步骤更容易。
在构建软件包时,最好在专门用于开发目的的独立环境中进行这项工作。这可以是创建虚拟机、使用Docker或使用mock等简单方法。只需一个"哎呀"就会让你后悔在生产服务器上做这项工作。
最后,如果你想从主分支构建开发快照,建议你先使用ZoneMinder的官方发布版本构建软件包。这将有助于确定你可能遇到的任何问题是由构建过程引起的,还是主分支中的新问题。
请访问我们的ReadtheDocs网站获取特定发行版的说明。
软件包维护者
许多ZoneMinder配置变量的默认值无法在构建时通过autotools或cmake进行配置。新增了一个名为zmeditconfigdata.sh的工具,允许软件包维护者在不修补源代码的情况下操作存储在ConfigData.pm中的任何变量。
例如,假设我创建了一个包含cambozola javascript文件的新ZoneMinder软件包。然而,默认情况下cambozola支持是关闭的。要解决这个问题,请在打包脚本中添加以下内容:
./utils/zmeditconfigdata.sh ZM_OPT_CAMBOZOLA yes
请注意,zmeditconfigdata.sh应该在运行cmake或configure之前从根构建文件夹中调用。
Docker
Docker是一个在隔离容器中运行应用程序的系统。ZoneMinder和ZM网络服务器将使用此存储库中包含的Dockerfile运行。然而,仍然需要努力确保主要的ZM功能正常工作并得到记录。
贡献模型和开发
- 源代码托管在GitHub
- 在GitHub Issues报告问题
- 在Slack或论坛提出问题/功能请求
非常欢迎提交拉取请求!如果你想贡献,请遵循以下步骤。虽然第3步是可选的,但我们更倾向于这样做。
- Fork仓库
- 在我们的GitHub Issues Tracker上开一个问题。 按照问题模板描述你发现的错误或安全问题。请注意,功能请求或问题应该发布在我们的用户论坛或Slack频道。
- 创建你的功能分支(
git checkout -b 456-my-new-feature
) - 提交你的更改(
git commit -am '添加了某个功能'
) 我们更倾向于你"早期和频繁提交",而不是将所有更改捆绑到一个提交中。 - 将你的分支推送到GitHub上的fork(
git push origin 456-my-new-feature
) - 创建新的拉取请求
- 然后团队将审查、讨论并希望合并你的更改。