Mindoc 编译安装教程

常规编译mindoc
# 克隆源码
git clone https://github.com/mindoc-org/mindoc.git
# go包安装
go mod tidy -v
# 编译(sqlite需要CGO支持)
go build -ldflags "-w -s" -o mindoc main.go
# 数据库初始化(此步骤执行之前,需配置`conf/app.conf`)
./mindoc install
# 执行
./mindoc
# 开发阶段运行
bee run
如果使用MySQL储存数据
则编码必须是utf8mb4_general_ci
安装前把数据库配置填充到项目目录下的 conf/app.conf 中
如果使用 SQLite 数据库则直接在配置文件中配置数据库路径即可
如果conf目录下不存在 app.conf 重命名 app.conf.example 为 app.conf。
默认程序会自动初始化一个超级管理员用户
admin 密码:123456
请登录后重新设置密码


Go version >= 1.13
Installation
To install or update bee use the go install command:
$ go install github.com/beego/bee/v2@latest

Then you can add bee binary to PATH environment variable in your ~/.bashrc or ~/.bash_profile file:
$ export PATH=$PATH:<your_main_gopath>/bin

Installing and updating bee prior Go version 1.17
To install bee use the go get command:

$ go get github.com/beego/bee/v2

If you already have bee installed, updating bee is simple:
$ go get -u github.com/beego/bee/v2

bee version
To display the current version of bee, beego and go installed on your machine:
$ bee version


问题
新创建的golang项目
用 go mod init 命令时出现 cannot determine module path for source directory xxxxxxx (outside GOPATH, module path must be specified)
解决方案
因为go mod init 初始化项目时需要定义一个 module
当打开一个 go.mod 文件会发现第一行就有module ProjectName
因此 执行 go mod init 时需要定义 module
新创建的golang项目
$ mkdir helloWorld
$ cd helloWorld
$ go mod init helloWorld
指令就会在 helloWorld 项目的根目录下生成一个go.mod文件
module helloWorld
go 1.20
Go 依赖管理
$ go mod tidy
履行 go mod tidy 然后看go.mod文件
发现文件中多个require
就是把项目中依靠的包增加到了go.mod文件中


go mod命令
go mod download 下载依赖的module到本地cache(默认为$GOPATH/pkg/mod目录)
go mod edit 编辑go.mod文件
go mod graph 打印模块依赖图
go mod init 初始化当前文件夹, 创建go.mod文件
go mod tidy 增加缺少的module,删除无用的module
go mod vendor 将依赖复制到vendor下
go mod verify 校验依赖
go mod why 解释为什么需要依赖
1.go mod init project_name
go mod init 命令用于初始化新的 Go 模块
会在当前目录下创建一个新的 go.mod 文件,该文件包含了模块的名称、版本等信息,以及该模块所依赖的其他模块的信息
在使用 go mod 管理依赖关系时,go.mod 文件是必须的

2. go mod tidy
go mod tidy 命令用于整理和清理项目的 go.mod 文件和依赖项
主要作用是移除未使用的依赖项,更新依赖项的版本,以及将 go.mod 文件中的依赖项列表与实际使用的依赖项列表保持一致
开发 Go 项目 常用第三方包或库
这些依赖项会被记录在项目的 go.mod 文件中
但是,有时候可能会添加依赖项 最终却没有使用这些未使用的依赖项将会增加项目的体积和构建时间
因此需要将其移除
此外,当使用的依赖项有新的版本时 也需要更新依赖项的版本以获得更好的性能和安全性
go mod tidy 命令会自动分析项目的代码和依赖项,找出未使用的依赖项并将其移除,同时更新依赖项的版本
还会检查 go.mod 文件中的依赖项列表是否与实际使用的依赖项列表一致,如果不一致,会自动更新 go.mod 文件中的依赖项列表
这样可以确保项目的依赖项列表始终保持最新和准确
3. go build project_name
go build可以创建一个二进制的程序
在新的环境中即使没有GO的环境下也能使用这个包
但是在不同操作系统下这个二进制的程序也是不同的。如下:
如果你的Windows使用的是cmd,那么按如下方式指定环境变量。
SET CGO_ENABLED=0 // 禁用CGO
SET GOOS=linux // 目标平台是linux
SET GOARCH=amd64 // 目标处理器架构是amd64
如果你的Windows使用的是PowerShell终端,那么设置环境变量的语法为
$ENV:CGO_ENABLED=0
$ENV:GOOS="linux"
$ENV:GOARCH="amd64"
在你的Windows终端下执行完上述命令后
再执行下面的命令,得到的就是能够在Linux平台运行的可执行文件了。
go build
Windows编译Mac可执行文件
Windows下编译Mac平台64位可执行程序:
cmd终端下执行:
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build
PowerShell终端下执行:
$ENV:CGO_ENABLED=0
$ENV:GOOS="darwin"
$ENV:GOARCH="amd64"
go build
Mac编译Linux可执行文件
Mac电脑编译得到Linux平台64位可执行程序:
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build
Mac编译Windows可执行文件
Mac电脑编译得到Windows平台64位可执行程序:
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build

Linux编译Mac可执行文件
Linux平台下编译Mac平台64位可执行程序:
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build

Linux编译Windows可执行文件
Linux平台下编译Windows平台64位可执行程序:
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build

4. go get
在项目中执行go get命令可以下载依赖包,并且还可以指定下载的版本。
运行go get -u将会升级到最新的次要版本或者修订版本(x.y.z, z是修订版本号, y是次要版本号)
运行go get -u=patch将会升级到最新的修订版本
运行go get package@version将会升级到指定的版本号version
如果下载所有依赖可以使用go mod download命令。
5. go mod edit
格式化
因为可以手动修改go.mod文件,所以有些时候需要格式化该文件。Go提供了一下命令:
go mod edit -fmt
添加依赖项
go mod edit -require=golang.org/x/text
移除依赖项
如果只是想修改go.mod文件中的内容,那么可以运行go mod edit -droprequire=package path,比如要在go.mod中移除golang.org/x/text包,可以使用如下命令:
go mod edit -droprequire=golang.org/x/text
关于go mod edit的更多用法可以通过go help mod edit查看。


作者:新媒体人  创建时间:2023-07-14 22:36
最后编辑:新媒体人  更新时间:2023-07-14 23:34