Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Chinese documents #26139

Merged
merged 10 commits into from Jul 26, 2023
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
138 changes: 102 additions & 36 deletions docs/content/doc/installation/from-source.zh-cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,98 +17,163 @@ menu:

# 使用源代码安装

首先你需要安装Golang,关于Golang的安装,参见[官方文档](https://golang.google.cn/doc/install)。
你需要 [安装Go](https://golang.org/doc/install) 并正确设置Go环境。特别的,建议设置`$GOPATH`环境变量,并将 Go 的二进制目录或目录`${GOPATH//://bin:}/bin`添加到`$PATH`中。请参阅 Go 百科上关于 [GOPATH](https://github.com/golang/go/wiki/GOPATH) 的条目

其次你需要[安装Node.js](https://nodejs.org/zh-cn/download/),Node.js 和 npm 将用于构建 Gitea 前端。
接下来,[安装 Node.js 和 npm](https://nodejs.org/en/download/),这是构建 JavaScript 和 CSS 文件所需的。最低支持的 Node.js 版本是{{< min-node-version >}},建议使用最新的 LTS 版本。

**注意**:当执行需要外部工具的 make 任务(如`make misspell-check`)时,Gitea 将根据需要自动下载和构建这些工具。为了能够实现这个目的,你必须将`"$GOPATH/bin"`目录添加到可执行路径中。如果没有将 Go 的二进制目录添加到可执行路径中,你需要自行解决产生的问题。

**注意2**:需要 Go 版本 {{< min-go-version >}} 或更高版本。不过,建议获取与我们的持续集成(continuous integration, CI)相同的版本,请参阅在 [Hacking on Gitea]({{< relref "doc/development/hacking-on-gitea.en-us.md" >}}) 中给出的建议。

**目录**

{{< toc >}}

## 下载

你需要获取Gitea的源码,最方便的方式是使用 `git` 命令。执行以下命令:
首先,我们需要获取源码。由于引入了 Go 模块,最简单的方法是直接使用 Git,因为我们不再需要在 GOPATH 内构建 Gitea。

```
```bash
git clone https://github.com/go-gitea/gitea
cd gitea
```

然后你可以选择编译和安装的版本,当前你有多个选择。如果你想编译 `main` 版本,你可以直接跳到 [编译](#编译) 部分,这是我们的开发分支,虽然也很稳定但不建议您在正式产品中使用。
(之前的版本中建议使用 `go get`,但现在不再需要。)

你可以选择编译和安装的版本,当前有多个选择。`main` 分支代表当前的开发版本。如果你想编译 `main` 版本,你可以直接跳到 [构建](#构建) 部分。

如果你想编译最新稳定分支,你可以执行以下命令签出源码
如果你想编译带有标签的发行版本,可以使用以下命令签出

```bash
git branch -a
git checkout v{{< version >}}
```

最后,你也可以直接使用标签版本如 `v{{< version >}}`。你可以执行以下命令列出可用的版本并选择某个版本签出:
要验证一个拉取请求(Pull Request, PR),要先启用新的分支(其中 `xyz` 是 PR 的 ID;例如,对于 [#2663](https://github.com/go-gitea/gitea/pull/2663),ID是 `2663 `):

```bash
git fetch origin pull/xyz/head:pr-xyz
```

要以指定发行版本(如 v{{< version >}} )的源代码来构建 Gitea,可执行以下命令列出可用的版本并选择某个版本签出。

使用以下命令列出可用的版本:

```bash
git tag -l
git checkout v{{< version >}}
git checkout v{{< version >}} # or git checkout pr-xyz
```

## 编译
## 构建

要从源代码进行编译,以下依赖程序必须事先安装好
要从源代码进行构建,系统必须预先安装以下程序

- `go` {{< min-go-version >}} 或以上版本, 详见[这里](https://golang.google.cn/doc/install)
- `node` {{< min-node-version >}} 或以上版本,并且安装 `npm`, 详见[这里](https://nodejs.org/zh-cn/download/)
- `make`, 详见[这里](/zh-cn/hacking-on-gitea/)
- `go` {{< min-go-version >}} 或更高版本,请参阅 [这里](https://golang.org/dl/)
- `node` {{< min-node-version >}} 或更高版本,并且安装 `npm`, 请参阅 [这里](https://nodejs.org/en/download/)
- `make`, 请参阅 [这里]({{< relref "doc/development/hacking-on-gitea.en-us.md" >}}#installing-make)

各种可用的 [make 任务](https://github.com/go-gitea/gitea/blob/main/Makefile)
可以用来使编译过程更方便。
为了尽可能简化编译过程,提供了各种 [make任务](https://github.com/go-gitea/gitea/blob/main/Makefile)。

按照您的编译需求,以下 tags 可以使用:
根据你的构建需求,以下 tags 可以使用:

- `bindata`: 这个编译选项将会把运行Gitea所需的所有外部资源都打包到可执行文件中,这样部署将非常简单因为除了可执行程序将不再需要任何其他文件。
- `sqlite sqlite_unlock_notify`: 这个编译选项将启用SQLite3数据库的支持,建议只在少数人使用时使用这个模式。
- `pam`: 这个编译选项将会启用 PAM (Linux Pluggable Authentication Modules) 认证,如果你使用这一认证模式的话需要开启这个选项。
- `bindata`: 构建一个单一的整体二进制文件,包含所有资源。适用于构建生产环境版本。
- `sqlite sqlite_unlock_notify`: 启用对 [SQLite3](https://sqlite.org/) 数据库的支持。仅建议在少数人使用时使用这个模式。
- `pam`: 启用对 PAM( Linux 可插拔认证模块)的支持。可用于对本地用户进行身份验证或扩展身份验证到 PAM 可用的方法。
- `gogit`:(实验性功能)使用 go-git 变体的 Git 命令。

使用 bindata 可以打包资源文件到二进制可以使开发和测试更容易,你可以根据自己的需求决定是否打包资源文件。
要包含资源文件,请使用 `bindata` tag:
将所有资源(JS/CSS/模板等)打包到二进制文件中。在生产环境部署时,使用`bindata`构建标签是必需的。在开发/测试 Gitea 或能够明确分离资源时,可以不用`bindata`。

要包含所有资源,请使用 `bindata` 标签:

```bash
TAGS="bindata" make build
```

默认的发布版本中的编译选项是: `TAGS="bindata sqlite sqlite_unlock_notify"`。以下为推荐的编译方式
在我们的持续集成系统的默认发行版中,构建标签为:`TAGS="bindata sqlite sqlite_unlock_notify"`。因此,从源码构建的最简单、推荐方式是

```bash
TAGS="bindata sqlite sqlite_unlock_notify" make build
```

`build`目标分为两个子目标:

- `make backend` 需要 [Go {{< min-go-version >}}](https://golang.org/dl/) 或更高版本。
- `make frontend` 需要 [Node.js {{< min-node-version >}}](https://nodejs.org/en/download/) 或更高版本。

如果存在预构建的前端文件,可以仅构建后端:

```bash
TAGS="bindata" make backend
```

在开发构建中,默认启用 Webpack 源映射,在生产构建中禁用。可以通过设置`ENABLE_SOURCEMAP=true`环境变量来启用它们。

## 测试

在执行了以上步骤之后,你将会获得 `gitea` 的二进制文件,在你复制到部署的机器之前可以先测试一下。在命令行执行完后,你可以 `Ctrl + C` 关掉程序
按照上述步骤完成后,工作目录中将会有一个`gitea`二进制文件。可以从该目录进行测试,或将其移动到带有测试数据的目录中。当手动从命令行启动 Gitea 时,可以通过按下`Ctrl + C`来停止程序

```bash
./gitea web
```

## 更改默认路径

Gitea 将从_`CustomPath`_中查找许多信息。默认的,这会在运行 Gitea 时当前工作目录下的`custom/`目录中(译者案:即`$PATH_TO_YOUR_GITEA$/custom/`)。它还将在`$(CustomPath)/conf/app.ini`中查找其配置文件_`CustomConf`_,并将当前工作目录用作一些可配置值的相对基本路径_`AppWorkPath`_。最后,静态文件将从默认为 `AppWorkPath`的_`StaticRootPath`_提供。

尽管在开发时这些值很有用,但可能与下游用户的偏好冲突。

一种选择是使用脚本文件来隐藏`gitea`二进制文件,并在运行Gitea之前创建适当的环境。然而,在构建时,可以使用`make`的`LDFLAGS`环境变量来更改这些默认值。适当的设置如下:

- 要设置_`CustomPath`_,请使用`LDFLAGS="-X \"code.gitea.io/gitea/modules/setting.CustomPath=custom-path\""`
- 对于_`CustomConf`_,应该使用`-X \"code.gitea.io/gitea/modules/setting.CustomConf=conf.ini\"`
- 对于_`AppWorkPath`_,应该使用`-X \"code.gitea.io/gitea/modules/setting.AppWorkPath=working-path\"`
- 对于_`StaticRootPath`_,应该使用`-X \"code.gitea.io/gitea/modules/setting.StaticRootPath=static-root-path\"`
- 要更改默认的PID文件位置,请使用`-X \"code.gitea.io/gitea/cmd.PIDFile=/run/gitea.pid\"`

将这些字符串与其前导的`-X`添加到`LDFLAGS`变量中,并像上面那样使用适当的`TAGS`运行`make build`。

运行`gitea help`将允许您查看配置的`gitea`设置。

## 交叉编译

Go 编译器支持交叉编译到不同的目标架构。有关 Go 支持的目标架构列表,请参见 [Optional environment variables](https://go.dev/doc/install/source#environment)。
`go`编译器工具链支持将代码交叉编译到不同的目标架构上。请参考[`GOOS`和`GOARCH`环境变量](https://golang.org/doc/install/source#environment)以获取支持的目标列表。如果您想为性能较弱的系统(如树莓派)构建 Gitea,交叉编译非常有用

交叉构建适用于 Linux ARM64Gitea
要使用构建标签(`TAGS`)进行交叉编译Gitea,您还需要一个 C 交叉编译器,该编译器的目标架构与`GOOS`和`GOARCH`变量选择的架构相同。例如,要为 Linux ARM64(`GOOS=linux`和`GOARCH=arm64`)进行交叉编译,您需要`aarch64-unknown-linux-gnu-gcc`交叉编译器。这是因为 Gitea 构建标签使用了`cgo`的外部函数接口(FFI)。

```bash
在没有任何标签的情况下,交叉编译的 Gitea 为 Linux ARM64 版本:

```
GOOS=linux GOARCH=arm64 make build
```

交叉构建适用于 Linux ARM64 的 Gitea,并且带上 Gitea 发行版采用的编译选项
要交叉编译 Linux ARM64 下的Gitea,这是推荐的构建标签

```bash
```
CC=aarch64-unknown-linux-gnu-gcc GOOS=linux GOARCH=arm64 TAGS="bindata sqlite sqlite_unlock_notify" make build
```

## 使用Linux与Zig编译或交叉编译
根据您的目标架构,适当替换`CC`、`GOOS`和`GOARCH`。

按照[Getting Started of Zig](https://ziglang.org/learn/getting-started/#installing-zig)来安装zig。
有时您需要构建一个静态编译的镜像。为此,您需要添加以下内容:

- 编译(Linux ➝ Linux)
```
LDFLAGS="-linkmode external -extldflags '-static' $LDFLAGS" TAGS="netgo osusergo $TAGS" make build
```

这可以与上述的`CC`、`GOOS`和`GOARCH`结合使用。

### 添加 bash/zsh 自动补全(从1.19版本起)

在[`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`。

类似地,可以在[`contrib/autocompletion/zsh_autocomplete`](https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/autocompletion/zsh_autocomplete)中找到一个用于 zsh 自动补全的脚本。您可以将其复制到 `/usr/share/zsh/_gitea`,或者在您的 `.zshrc` 中使用 `source` 命令加载该脚本。

可能需要你根据具体情况进一步改进这些脚本。

## 在Linux上使用Zig进行编译或交叉编译

请按照 [Zig 的入门指南](https://ziglang.org/learn/getting-started/#installing-zig) 安装Zig。

- 编译 (Linux ➝ Linux)

```sh
CC="zig cc -target x86_64-linux-gnu" \
Expand All @@ -121,7 +186,7 @@ TAGS="bindata sqlite sqlite_unlock_notify" \
make build
```

- 交叉编译(Linux ➝ Windows)
- 交叉编译 (Linux ➝ Windows)

```sh
CC="zig cc -target x86_64-windows-gnu" \
Expand All @@ -133,11 +198,11 @@ TAGS="bindata sqlite sqlite_unlock_notify" \
make build
```

## 使用Windows与Zig编译或交叉编译
## 在Windows上使用Zig进行编译或交叉编译

使用`GIT BASH`编译。

- 编译(Windows ➝ Windows)
- 编译 (Windows ➝ Windows)

```sh
CC="zig cc -target x86_64-windows-gnu" \
Expand All @@ -149,7 +214,7 @@ TAGS="bindata sqlite sqlite_unlock_notify" \
make build
```

- 交叉编译(Windows ➝ Linux)
- 交叉编译 (Windows ➝ Linux)

```sh
CC="zig cc -target x86_64-linux-gnu" \
Expand All @@ -161,3 +226,4 @@ GOARCH=amd64 \
TAGS="bindata sqlite sqlite_unlock_notify" \
make build
```

10 changes: 10 additions & 0 deletions docs/content/doc/installation/on-cloud-provider.zh-cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,13 @@ Gitea 可以在 [Vultr](https://www.vultr.com) 的市场中被找到。
[alwaysdata](https://www.alwaysdata.com/) 将 Gitea 作为其市场中的一个 droplet.

要将 Gitea 部署到 alwaysdata, 请参考 [alwaysdata Marketplace](https://www.alwaysdata.com/en/marketplace/gitea/).

## Exoscale

[Exoscale](https://www.exoscale.com/) 在其市场中提供由 [Glasskube](https://glasskube.eu/) 管理的 Gitea。

Exoscale 是一家欧洲的云服务提供商。

该软件包通过开源的 [Glasskube Kubernetes Operator](https://github.com/glasskube/operator) 进行维护和更新。

要在 Exoscale 上部署 Gitea,请参考 [Exoscale Marketplace](https://www.exoscale.com/marketplace/listing/glasskube-gitea/)。
6 changes: 3 additions & 3 deletions docs/content/doc/installation/upgrade-from-gitea.zh-cn.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ Gitea 会保留首二位版本号相同的版本的兼容性 (`a.b.x` -> `a.b.y`
| 1.4.0 | 1.4.1 | ✅ |
| 1.4.1 | 1.4.0 | ⚠️ 不建议,后果自负!尽管数据库结构可能不会变更,让它可以正常工作。我们强烈建议降级前进行完全的备份。 |
| 1.4.x | 1.5.y | ✅ 数据库会被自动升级。你可以直接从 1.4.x 升级到最新的 1.5.y。 |
| 1.5.y | 1.4.x | ❌ 数据库已被升级且不可被旧版 Gitea 利用,使用备份来进行降级。 |
| 1.5.y | 1.4.x | ❌ 数据库已被升级且无法用于旧版本Gitea,使用备份来进行降级。 |

**因为你不能基于升级后的数据库运行旧版 Gitea,所以你应该在数据库升级前完成数据备份。**

Expand All @@ -64,7 +64,7 @@ Gitea 会保留首二位版本号相同的版本的兼容性 (`a.b.x` -> `a.b.y`

* `docker pull` 拉取 Gitea 的最新发布版。
* 停止运行中的实例,备份数据。
* 使用 `docker` 或 `docker-compose` 启动更新的 Gitea Docker 容器.
* 使用 `docker` 或 `docker-compose` 启动较新的 Gitea Docker 容器.

## 从包升级

Expand All @@ -86,6 +86,6 @@ Gitea 会保留首二位版本号相同的版本的兼容性 (`a.b.x` -> `a.b.y`
Gitea 的模板结构与变量可能会随着各个版本的发布发生变化,如果你使用了自定义模板,
你得注意你的模板与你使用的 Gitea 版本的兼容性。

如果自定义模板与 Gitea 版本不兼容,你可能会得到
如果自定义模板与 Gitea 版本不兼容,你可能会遇到
`50x` 服务器错误,页面元素丢失或故障,莫名其妙的页面布局,等等…
移除或更新不兼容的模板,Gitea Web 才可以正常工作。