@@ -17,94 +17,158 @@ menu:
17
17
18
18
# 使用源代码安装
19
19
20
- 首先你需要安装Golang,关于Golang的安装,参见 [ 官方文档 ] ( https://golang.google.cn/doc/install ) 。
20
+ 你需要 [ 安装Go ] ( https://golang.google.cn/doc/install ) 并正确设置Go环境。特别的,建议设置 ` $GOPATH ` 环境变量,并将 Go 的二进制目录或目录 ` ${GOPATH//://bin:}/bin ` 添加到 ` $PATH ` 中。请参阅 Go 百科上关于 [ GOPATH ] ( https://github.com/golang/go/wiki/GOPATH ) 的词条 。
21
21
22
- 其次你需要[ 安装Node.js] ( https://nodejs.org/zh-cn/download/ ) ,Node.js 和 npm 将用于构建 Gitea 前端。
22
+ 接下来,[ 安装 Node.js 和 npm] ( https://nodejs.org/zh-cn/download/ ) , 这是构建 JavaScript 和 CSS 文件所需的。最低支持的 Node.js 版本是 @minNodeVersion @,建议使用最新的 LTS 版本。
23
+
24
+ ** 注意** :当执行需要外部工具的 make 任务(如` make misspell-check ` )时,Gitea 将根据需要自动下载和构建这些工具。为了能够实现这个目的,你必须将` "$GOPATH/bin" ` 目录添加到可执行路径中。如果没有将 Go 的二进制目录添加到可执行路径中,你需要自行解决产生的问题。
25
+
26
+ ** 注意2** :需要 Go 版本 @minGoVersion @ 或更高版本。不过,建议获取与我们的持续集成(continuous integration, CI)相同的版本,请参阅在 [ Hacking on Gitea] ( development/hacking-on-gitea.md ) 中给出的建议。
23
27
24
28
## 下载
25
29
26
- 你需要获取Gitea的源码,最方便的方式是使用 ` git ` 命令。执行以下命令:
30
+ 首先,我们需要获取源码。由于引入了 Go 模块,最简单的方法是直接使用 Git,因为我们不再需要在 GOPATH 内构建 Gitea。
27
31
28
- ```
32
+ ``` bash
29
33
git clone https://github.com/go-gitea/gitea
30
- cd gitea
31
34
```
32
35
33
- 然后你可以选择编译和安装的版本,当前你有多个选择。如果你想编译 ` main ` 版本,你可以直接跳到 [ 编译] ( #编译 ) 部分,这是我们的开发分支,虽然也很稳定但不建议您在正式产品中使用。
36
+ (之前的版本中建议使用 ` go get ` ,但现在不再需要。)
37
+
38
+ 你可以选择编译和安装的版本,当前有多个选择。` main ` 分支代表当前的开发版本。如果你想编译 ` main ` 版本,你可以直接跳到 [ 构建] ( #构建 ) 部分。
34
39
35
- 如果你想编译最新稳定分支,你可以执行以下命令签出源码 :
40
+ 如果你想编译带有标签的发行版本,可以使用以下命令签出 :
36
41
37
42
``` bash
38
43
git branch -a
39
44
git checkout v@version@
40
45
```
41
46
42
- 最后,你也可以直接使用标签版本如 ` v@version@ ` 。你可以执行以下命令列出可用的版本并选择某个版本签出:
47
+ 要验证一个拉取请求(Pull Request, PR),要先启用新的分支(其中 ` xyz ` 是 PR 的 ID;例如,对于 [ #2663 ] ( https://github.com/go-gitea/gitea/pull/2663 ) ,ID是 ` 2663 ` ):
48
+
49
+ ``` bash
50
+ git fetch origin pull/xyz/head:pr-xyz
51
+ ```
52
+
53
+ 要以指定发行版本(如 v@version@ )的源代码来构建 Gitea,可执行以下命令列出可用的版本并选择某个版本签出。
54
+ 使用以下命令列出可用的版本:
43
55
44
56
``` bash
45
57
git tag -l
46
- git checkout v@version@
58
+ git checkout v@version@ # or git checkout pr-xyz
47
59
```
48
60
49
- ## 编译
61
+ ## 构建
50
62
51
- 要从源代码进行编译,以下依赖程序必须事先安装好 :
63
+ 要从源代码进行构建,系统必须预先安装以下程序 :
52
64
53
- - ` go ` @minGoVersion @ 或以上版本, 详见 [ 这里] ( https://golang.google.cn/doc/install )
54
- - ` node ` @minNodeVersion @ 或以上版本 ,并且安装 ` npm ` , 详见 [ 这里] ( https://nodejs.org/zh-cn/download/ )
55
- - ` make ` , 详见 [ 这里] ( /zh-cn/hacking-on-gitea/ )
65
+ - ` go ` @minGoVersion @ 或更高版本,请参阅 [ 这里] ( https://golang.org/dl/ )
66
+ - ` node ` @minNodeVersion @ 或更高版本 ,并且安装 ` npm ` , 请参阅 [ 这里] ( https://nodejs.org/zh-cn/download/ )
67
+ - ` make ` , 请参阅 [ 这里] ( /zh-cn/hacking-on-gitea/ )
56
68
57
- 各种可用的 [ make 任务] ( https://github.com/go-gitea/gitea/blob/main/Makefile )
58
- 可以用来使编译过程更方便。
69
+ 为了尽可能简化编译过程,提供了各种 [ make任务] ( https://github.com/go-gitea/gitea/blob/main/Makefile ) 。
59
70
60
- 按照您的编译需求 ,以下 tags 可以使用:
71
+ 根据你的构建需求 ,以下 tags 可以使用:
61
72
62
- - ` bindata ` : 这个编译选项将会把运行Gitea所需的所有外部资源都打包到可执行文件中,这样部署将非常简单因为除了可执行程序将不再需要任何其他文件。
63
- - ` sqlite sqlite_unlock_notify ` : 这个编译选项将启用SQLite3数据库的支持,建议只在少数人使用时使用这个模式。
64
- - ` pam ` : 这个编译选项将会启用 PAM (Linux Pluggable Authentication Modules) 认证,如果你使用这一认证模式的话需要开启这个选项。
73
+ - ` bindata ` : 构建一个单一的整体二进制文件,包含所有资源。适用于构建生产环境版本。
74
+ - ` sqlite sqlite_unlock_notify ` : 启用对 [ SQLite3] ( https://sqlite.org/ ) 数据库的支持。仅建议在少数人使用时使用这个模式。
75
+ - ` pam ` : 启用对 PAM( Linux 可插拔认证模块)的支持。可用于对本地用户进行身份验证或扩展身份验证到 PAM 可用的方法。
76
+ - ` gogit ` :(实验性功能)使用 go-git 变体的 Git 命令。
65
77
66
- 使用 bindata 可以打包资源文件到二进制可以使开发和测试更容易,你可以根据自己的需求决定是否打包资源文件。
67
- 要包含资源文件,请使用 ` bindata ` tag:
78
+ 将所有资源(JS/CSS/模板等)打包到二进制文件中。在生产环境部署时,使用` bindata ` 构建标签是必需的。在开发/测试 Gitea 或能够明确分离资源时,可以不用` bindata ` 。
79
+
80
+ 要包含所有资源,请使用 ` bindata ` 标签:
68
81
69
82
``` bash
70
83
TAGS=" bindata" make build
71
84
```
72
85
73
- 默认的发布版本中的编译选项是: ` TAGS="bindata sqlite sqlite_unlock_notify" ` 。以下为推荐的编译方式 :
86
+ 在我们的持续集成系统的默认发行版中,构建标签为: ` TAGS="bindata sqlite sqlite_unlock_notify" ` 。因此,从源码构建的最简单、推荐方式是 :
74
87
75
88
``` bash
76
89
TAGS=" bindata sqlite sqlite_unlock_notify" make build
77
90
```
78
91
92
+ ` build ` 目标分为两个子目标:
93
+
94
+ - ` make backend ` 需要 [ Go @minGoVersion @] ( https://golang.google.cn/doc/install ) 或更高版本。
95
+ - ` make frontend ` 需要 [ Node.js @minNodeVersion @] ( https://nodejs.org/zh-cn/download/ ) 或更高版本。
96
+
97
+ 如果存在预构建的前端文件,可以仅构建后端:
98
+
99
+ ``` bash
100
+ TAGS=" bindata" make backend
101
+ ```
102
+
103
+ 在开发构建中,默认启用 Webpack 源映射,在生产构建中禁用。可以通过设置` ENABLE_SOURCEMAP=true ` 环境变量来启用它们。
104
+
79
105
## 测试
80
106
81
- 在执行了以上步骤之后,你将会获得 ` gitea ` 的二进制文件,在你复制到部署的机器之前可以先测试一下。在命令行执行完后,你可以 ` Ctrl + C ` 关掉程序 。
107
+ 按照上述步骤完成后,工作目录中将会有一个 ` gitea ` 二进制文件。可以从该目录进行测试,或将其移动到带有测试数据的目录中。当手动从命令行启动 Gitea 时,可以通过按下 ` Ctrl + C ` 来停止程序 。
82
108
83
109
``` bash
84
110
./gitea web
85
111
```
86
112
113
+ ## 更改默认路径
114
+
115
+ Gitea 将从` CustomPath ` 中查找许多信息。默认的,这会在运行 Gitea 时当前工作目录下的` custom/ ` 目录中(译者案:即` $PATH_TO_YOUR_GITEA$/custom/ ` )。它还将在` $(CustomPath)/conf/app.ini ` 中查找其配置文件` CustomConf ` ,并将当前工作目录用作一些可配置值的相对基本路径` AppWorkPath ` 。最后,静态文件将从默认为 ` AppWorkPath ` 的` StaticRootPath ` 提供。
116
+
117
+ 尽管在开发时这些值很有用,但可能与下游用户的偏好冲突。
118
+
119
+ 一种选择是使用脚本文件来隐藏` gitea ` 二进制文件,并在运行Gitea之前创建适当的环境。然而,在构建时,可以使用` make ` 的` LDFLAGS ` 环境变量来更改这些默认值。适当的设置如下:
120
+
121
+ - 要设置` CustomPath ` ,请使用` LDFLAGS="-X \"code.gitea.io/gitea/modules/setting.CustomPath=custom-path\"" `
122
+ - 对于` CustomConf ` ,应该使用` -X \"code.gitea.io/gitea/modules/setting.CustomConf=conf.ini\" `
123
+ - 对于` AppWorkPath ` ,应该使用` -X \"code.gitea.io/gitea/modules/setting.AppWorkPath=working-path\" `
124
+ - 对于` StaticRootPath ` ,应该使用` -X \"code.gitea.io/gitea/modules/setting.StaticRootPath=static-root-path\" `
125
+ - 要更改默认的 PID 文件位置,请使用` -X \"code.gitea.io/gitea/cmd.PIDFile=/run/gitea.pid\" `
126
+
127
+ 将这些字符串与其前导的` -X ` 添加到` LDFLAGS ` 变量中,并像上面那样使用适当的` TAGS ` 运行` make build ` 。
128
+
129
+ 运行` gitea help ` 将允许您查看配置的` gitea ` 设置。
130
+
87
131
## 交叉编译
88
132
89
- Go 编译器支持交叉编译到不同的目标架构。有关 Go 支持的目标架构列表,请参见 [ Optional environment variables ] ( https://go.dev /doc/install/source#environment ) 。
133
+ ` go ` 编译器工具链支持将代码交叉编译到不同的目标架构上。请参考 [ ` GOOS ` 和 ` GOARCH ` 环境变量 ] ( https://golang.org /doc/install/source#environment ) 以获取支持的目标列表。如果您想为性能较弱的系统(如树莓派)构建 Gitea,交叉编译非常有用 。
90
134
91
- 交叉构建适用于 Linux ARM64 的 Gitea:
135
+ 要使用构建标签( ` TAGS ` )进行交叉编译Gitea,您还需要一个 C 交叉编译器,该编译器的目标架构与 ` GOOS ` 和 ` GOARCH ` 变量选择的架构相同。例如,要为 Linux ARM64( ` GOOS=linux ` 和 ` GOARCH=arm64 ` )进行交叉编译,您需要 ` aarch64-unknown-linux-gnu-gcc ` 交叉编译器。这是因为 Gitea 构建标签使用了 ` cgo ` 的外部函数接口(FFI)。
92
136
93
- ``` bash
137
+ 在没有任何标签的情况下,交叉编译的 Gitea 为 Linux ARM64 版本:
138
+
139
+ ```
94
140
GOOS=linux GOARCH=arm64 make build
95
141
```
96
142
97
- 交叉构建适用于 Linux ARM64 的 Gitea,并且带上 Gitea 发行版采用的编译选项 :
143
+ 要交叉编译 Linux ARM64 下的Gitea,这是推荐的构建标签 :
98
144
99
- ``` bash
145
+ ```
100
146
CC=aarch64-unknown-linux-gnu-gcc GOOS=linux GOARCH=arm64 TAGS="bindata sqlite sqlite_unlock_notify" make build
101
147
```
102
148
103
- ## 使用Linux与Zig编译或交叉编译
149
+ 根据您的目标架构,适当替换` CC ` 、` GOOS ` 和` GOARCH ` 。
150
+
151
+ 有时您需要构建一个静态编译的镜像。为此,您需要添加以下内容:
152
+
153
+ ```
154
+ LDFLAGS="-linkmode external -extldflags '-static' $LDFLAGS" TAGS="netgo osusergo $TAGS" make build
155
+ ```
156
+
157
+ 这可以与上述的` CC ` 、` GOOS ` 和` GOARCH ` 结合使用。
158
+
159
+ ### 添加 bash/zsh 自动补全(从 1.19 版本起)
160
+
161
+ 在[ ` contrib/autocompletion/bash_autocomplete ` ] ( https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/bash_autocomplete ) 中可以找到一个启用 bash 自动补全的脚本。您可以根据需要进行修改,并在您的 ` .bashrc ` 中使用 ` source ` 命令加载该脚本,或者将其复制到 ` /usr/share/bash-completion/completions/gitea ` 。
162
+
163
+ 类似地,可以在[ ` contrib/autocompletion/zsh_autocomplete ` ] ( https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/zsh_autocomplete ) 中找到一个用于 zsh 自动补全的脚本。您可以将其复制到 ` /usr/share/zsh/_gitea ` ,或者在您的 ` .zshrc ` 中使用 ` source ` 命令加载该脚本。
164
+
165
+ 可能需要你根据具体情况进一步改进这些脚本。
166
+
167
+ ## 在 Linux 上使用 Zig 进行编译或交叉编译
104
168
105
- 按照 [ Getting Started of Zig] ( https://ziglang.org/learn/getting-started/#installing-zig ) 来安装zig 。
169
+ 请按照 [ Zig 的入门指南 ] ( https://ziglang.org/learn/getting-started/#installing-zig ) 安装 Zig 。
106
170
107
- - 编译(Linux ➝ Linux)
171
+ - 编译 (Linux ➝ Linux)
108
172
109
173
``` sh
110
174
CC=" zig cc -target x86_64-linux-gnu" \
@@ -117,7 +181,7 @@ TAGS="bindata sqlite sqlite_unlock_notify" \
117
181
make build
118
182
```
119
183
120
- - 交叉编译(Linux ➝ Windows)
184
+ - 交叉编译 (Linux ➝ Windows)
121
185
122
186
``` sh
123
187
CC=" zig cc -target x86_64-windows-gnu" \
@@ -129,11 +193,11 @@ TAGS="bindata sqlite sqlite_unlock_notify" \
129
193
make build
130
194
```
131
195
132
- ## 使用Windows与Zig编译或交叉编译
196
+ ## 在 Windows 上使用 Zig 进行编译或交叉编译
133
197
134
198
使用` GIT BASH ` 编译。
135
199
136
- - 编译(Windows ➝ Windows)
200
+ - 编译 (Windows ➝ Windows)
137
201
138
202
``` sh
139
203
CC=" zig cc -target x86_64-windows-gnu" \
@@ -145,7 +209,7 @@ TAGS="bindata sqlite sqlite_unlock_notify" \
145
209
make build
146
210
```
147
211
148
- - 交叉编译(Windows ➝ Linux)
212
+ - 交叉编译 (Windows ➝ Linux)
149
213
150
214
``` sh
151
215
CC=" zig cc -target x86_64-linux-gnu" \
0 commit comments