Linux 开发环境主要用于开发 Teleport 的服务端。
一、基本信息
- 系统:CentOS 7 x64
- 编译器:gcc-8
二、安装/配置开发环境
🔔 可以在虚拟机中配置一套开发teleport服务端的开发环境。非商业用途,可以从 VmWare 官网下载 VmWare Player 15 进行安装使用。 因为要进行大量编译操作,建议虚拟机配置为:CPU: 4核,内存: 8GB,硬盘: 120GB
-
从 CentOS 官网下载 CentOS 7 的最小安装镜像,CentOS-7-x86_64-Minimal-2009.iso,然后正常安装。
-
配置为阿里云的CentOS源:
# 切换为root用户身份 su # 安装必要的网络工具 yum install -y wget # 备份源配置 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup # 换为阿里云的源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 略作调整,将CentOS-Base.repo中的所有http改为https vi /etc/yum.repos.d/CentOS-Base.repo # 更新缓存 yum clean all yum makecache # 更新已安装的软件 yum update
-
如果在 VmWare 虚拟机中安装,建议安装 VmWare-Tools
# 切换为root用户身份 su # 安装 VmWare-Tools yum install -y open-vm-tools
-
最小化安装的系统中是没有开发工具的,如果直接 yum install gcc,则安装的是gcc 4.x。我们希望安装 gcc-8。
# 切换为root用户身份 su # 安装 gcc-8 相关软件、调试器等 yum install -y centos-release-scl-rh devtoolset-8-build devtoolset-8-gdb devtoolset-8-gcc devtoolset-8-gcc-c++ # 应用 gcc-8,使之成为默认编译器(但是关闭终端或者重启系统后,就失效了) source /opt/rh/devtoolset-8/enable # 查看 gcc 版本 gcc --version
-
设置开机就默认使用 gcc-8
# 切换为root用户身份 su vi /etc/profile
在最后一行加入以下内容
source /opt/rh/devtoolset-8/enable
-
安装其他必要的工具和开发库
yum install -y git automake libtool zip unzip yum install -y libffi-devel zlib-devel
-
安装 CMake。yum 安装的 cmake 为2.x版,但我们想要使用 3.x 版,需要源码编译安装,这比较麻烦。 偷个懒,使用CLion内带的高版本 CMake。从 JetBrains 官网下载最新版本的 Linux 版 CLion,解压缩,将里面的cmake拿来用。
# JetBrains 官网地址: https://www.jetbrains.com/ 下载最新版本的 CLion,然后: tar zxvf CLion-2021.1.1.tar.gz # 切换为root用户身份 su # 将 CLion 内置的 CMake 复制到 opt 目录下 cp clion-2021.1.1/bin/cmake/linux /opt/cmake ln /opt/cmake/bin/cmake /usr/local/bin/cmake # 查看 CMake 版本(目前是3.19) cmake --version
-
配置工作目录(以下操作均为普通用户身份进行,不建议使用 root 身份)。下面假定将代码 clone 到当前用户的
work/tp4a/teleport
目录下,并在下文中以${TP}
来指代这个源码根目录。
cd ~
mkdir -p work/tp4a
cd work/tp4a
git clone git@github.com:tp4a/teleport.git teleport
三、编译Python
teleport 服务端安装包内建 Python 运行环境和必要的库,目前采用源码编译的方式进行编译,编译工作已经使用脚本进行封装,只需要执行编译命令即可自动完成源代码下载、解压、编译等工作。
在编译前,还需要做一点点准备工作:
# 进入teleport源代码根目录
cd ~/work/tp4a/teleport
# 复制一个配置文件,用于配置 linux 环境下的工具链
cp conf.json.in conf.linux.json
# 修改 conf.linux.json,主要是要配置其中的 CMake 路径
# 将 toolchain 部分修改为:
"toolchain": {
"pyexec": "",
"qt_path": "",
"cmake": "/usr/local/bin/cmake"
},
然后就可以开始编译了,编译时间非常的长,建议开始编译后出去走动一下,活动活动筋骨。
./make.sh
🔔需要注意的是:因为常见的网络抽风的情况,有时候下载源代码包可能会失败,导致编译失败。遇到问题不要慌,检查一下文件是否下载正常。
下载的文件位于 ${TP}/external/_download_
目录下。正在下载的文件以 dl_
为前缀。如果文件下载失败,极有可能文件大小为 0 字节,需要将 0 字节的文件删除,并重新执行 ./make.sh
脚本。
一切正常的情况下,经过漫长的编译过程,最终会进入到 teleport 的构建环境中,界面如下所示:
[]==========================================================[]
| Teleport Projects Builder v2.0 |
| auth: apex.liu@qq.com |
[]==========================================================[]
=====================[ MENU ]===============================
prepare for server [build once]:
[ 1] Make Python-Runtime for python37-x64
server side:
[ 2] build external libraries for server
[ 3] build server applications [release]
[ 4] make server installer for linux
clear:
[ 5] clear external libraries for server
misc:
[ 6] update version setting
----------------------------------------------------------
[ Q] exit
select action:
以后要编译 teleport 服务端,也只需要再次执行 ./make.sh
即可进入这个界面。
【未完,待续】