ACF 开发入门

来自 Alpine Linux
此材料已过时...

请随时帮助我们制作最新版本。(讨论

本文档描述了如何使用 setup-acf-dev 脚本开始 ACF 开发。

可以在您的桌面(Ubuntu/Debian/Fedora/Gentoo/或其他)上设置一个最小的 alpine chroot 环境,以便进行 ACF 开发。这样就无需运行完整的虚拟机(或真实机器)来进行 ACF 开发。虽然此环境会有些限制(没有 grsecurity 或其他内核特定内容),但它仍然提供了进行有意义的 ACF 开发所需的所有必要内容。

这里有一个小脚本可以设置此环境:https://dev.alpinelinux.org/~ncopa/setup-acf-dev

该脚本将

  • 设置一个小的 alpine chroot 环境
  • 在环境中设置一个具有 sudo 访问权限的用户
  • 安装所需的应用程序,如 subversion、http 服务器和 vim
  • 配置 http 服务器
  • 从 svn 仓库检出 ACF 模块并将它们安装到环境中
  • 创建一个带有实用快捷键的简单 .vimrc 文件
  • 创建一个简单的脚本以进入 chroot

调用脚本

$ sudo ./setup-acf-dev 
usage: setup-acf-dev TARGETDIR
The following environment variables are used:"
  WGET        path to wget program (/usr/bin/wget)
  TAR         path to tar program (/usr/bin/tar)
  MIRROR      alpine mirror (https://dev.alpinelinux.org/alpine/v1.7 [Dead Link])
  BASE        name of alpine base package (base.tar.bz2)
  ACFUSER     non-root username to use in chroot ($SUDO_USER)
  ACFSVN      svn repository base (svn://svn.alpinelinux.org/acf)
  MODULES     svn modules to checkout (core alpine-baselayout)
  CHROOT      chroot program. I.E 'linux32 chroot' (chroot)
  PORT        port for mini_httpd (80)
  http_proxy  proxy server ()

因此,例如,如果您使用 64 位 Gentoo 桌面,则可以按如下方式运行脚本

CHROOT='linux32 chroot' ./setup-acf-dev acfroot

那么所有 chroot 调用都将在正确的 32 位模式下进行。

要仅在目录 acfroot 中设置 chroot,您可以按如下方式运行脚本

$ sudo ./setup-acf-dev acfroot
>>> Fetching https://dev.alpinelinux.org/alpine/v1.7/base.tar.bz2...
./
./var/
./var/db/
./var/db/apk/
./var/db/apk/uclibc-0.9.28.3.tar.gz
 
...

>>> Creating .vimrc...
>>> Creating enter-chroot script...
>>>
>>> Setup Completed. Enter the chroot environement with (as root):
>>>
>>>     acfroot/enter-chroot
>>>
>>> Once inside the chroot the privileges will drop to 'ncopa'.
>>> You can start and stop mini_httpd within chroot by executing:
>>>
>>>     sudo /etc/init.d/mini_httpd start
>>>     sudo /etc/init.d/mini_httpd stop
>>>
>>> You can specify the port in /etc/mini_httpd.conf
>>>
>>> Remember to install the acf module to activate changes:
>>>
>>>     sudo make install
>>>

进入和离开 ACF chroot

帮助文本将告诉您如何进入 chroot。请注意,您需要以 root 身份执行 enter-chroot 脚本。enter-chroot 脚本将在 chroot 内部挂载一个 /proc,然后将其权限更改为由 setup-acf-dev 脚本创建的用户

如果您在 acfroot 目录中安装了 ACF 环境,则可以通过键入 sudo acfroot/enter-chroot 进入 chroot

在我的 Gentoo 系统上,它看起来像这样

ncopa@nc ~ $ sudo acfroot/enter-chroot 
Password:
Entering ACF develmopment chroot. Type 'exit' or press ctrl-d to leave.
~ $ 

启动 Web 服务器

进入 chroot 后,您可以使用以下命令启动 Web 服务器

sudo rc-service mini_httpd start

默认情况下,它将绑定到端口 80。如果您需要更改端口,可以通过编辑 /etc/mini_httpd.conf 来完成。

将您的 Web 浏览器指向 http://localhost,您应该会看到 Alpine webconf。

使用源文件

进入 chroot 后,您已检出 acf 模块。目前只有 2 个模块,alpine-buildroot 和 core。进入您感兴趣的模块,进行更改,然后运行 sudo make install 以安装更改。创建的 .vimrc 文件为 F9 键映射了保存文件并执行 sudo make install 的功能。因此,在正常开发期间,只需按 F9 并刷新 Web 浏览器即可查看更改。

添加文件

如果您想添加文件,则需要使 Makefile 知道您的文件。如果您忘记此步骤,该文件将不会包含在发行版源码包中,也不会包含在最终的 apk 包中。为了尽早检测到这些错误,请始终使用 make install 安装编辑过的文件。

在将任何内容提交到 svn 之前,还要确保 make install 工作正常。

未完待续

设置不使用 chroot 的 acf-dev

以下假设您已经拥有一个可以正常运行的 Alpine Linux,并且您计划在 Alpine Linux 上运行此操作

  • 安装所需的软件包
apk_add haserl mini_httpd subversion luaposix json4lua
  • 检出 acf-core(和 acf-devtools)
git clone https://gitlab.alpinelinux.org/acf/acf-core.git /usr/share/acf
svn co svn://svn.alpinelinux.org/acf/devtools/trunk /usr/share/acf/app/devtools
  • 创建所需的文件夹和符号链接
mkdir -p /var/www/localhost/
ln -s /usr/share/acf/www/ /var/www/localhost/htdocs
  • 编辑 /etc/mini_httpd.conf
nochroot
dir=/var/www/localhost/htdocs
user=nobody
logfile=/var/log/mini_httpd.log
cgipat=cgi-bin**
port=80
  • 编辑 /etc/conf.d/mini_httpd
MINI_HTTPD_OPTS="-C /etc/mini_httpd.conf"
MINI_HTTPD_DOCROOT=/var/www/localhost/htdocs
  • 创建/修改 /etc/acf/acf.conf
mkdir /etc/acf/
echo "appdir=/usr/share/acf/app/
libdir=/usr/share/acf/lib/
skin=static" > /etc/acf/acf.conf
  • 启动您的 mini_httpd
rc-service mini_httpd start
  • 现在更新您的项目

在您的 Web 浏览器中浏览到您的 acf-dev 机器的 IP 地址(使用 Firefox 或其他 Web 浏览器)。单击“DevTools”>“SVN status (for ACF)”,它将帮助您下载所有可能的项目。现在应该可以工作了!