前置信息
- 项目源码仓库:
https://github.com/kevoreilly/CAPEv2 - 官方提供的安装文档
https://capev2.readthedocs.io/en/latest/installation/host/installation.html - 详细安装流程可以参考这位的(非常nice)
https://github.com/rebaker501/capev2install
主流程说明
- 下载仓库源码
- 进入installer目录使用两个脚本安装各种依赖和配置以及服务
- 按照在线翻译后的文档安装win10客户机
- 配置ip和快照名等
- 启动服务
主要踩坑记录
- 脚本太长,执行日志看不懂
- 脚本执行后日志内没有明显报错,但无法确认是否安装成功
- 各种网络问题无法下载或网速极慢
两个脚本的内容主要结构如下:
- 脚本说明注释
- 脚本配置全局变量和默认执行提示定义
- 各种函数拆分后分散的定义(要启动一个服务需要多个子依赖或子服务安装成功, 这里的函数就是将相同的子依赖或服务整合到一起)
- 最后来一个case命令,用于确定不同的参数调用哪些函数
# 这是示例脚本
value1="version-1"
function eat() {
...
}
function fun() {
...
}
function sleep() {
...
}
case $1 in
'吃饭')
eat;;
'睡觉')
sleep;;
'打豆豆')
fun;;
'我的一天')
eat
sleep
fun
;;
*)
...
$ ./cape2.sh base cape
# 替换为当前示例后
$ ./cape2.sh 吃饭 cape
错误分析
执行过程中, 分两种错误, 一个是显性错误, 也就是日志里面有明显的error信息,且跟随着大量的错误提示行, 这个稍好一些, 找到最开始的错误原因,改正即可. 还有一种是隐性错误, 比如某个依赖找不到,某个文件下载失败,这种可能就提示 E: 无法定位软件包 谁谁谁
然后一闪而过就没有其他错误提示了,这种情况下, 两个方案, 1是知道可能会提示什么报错, 直接全局搜索对应的错误日志, 2是根据脚本里面需要安装的软件名进行逆推, 脚本执行后在本地使用apt命令搜索是否已安装这个软件或使用systemctl查看某个服务的状态来检查是否安装了某个服务.
版本冲突
如果你在安装过程中出现了某个组件需要A依赖 1-5 的版本, 另一个组件需要A依赖 10-15 版本,这时候A依赖无论安装哪一个都有问题, 这时候说明你的apt仓库默认版本和脚本里面需要安装的依赖版本冲突了. 解决方法是先移除这个组件的所有相关依赖, 然后按照脚本里面需要的版本进行本地安装或使用apt命令指定版本安装.
涉及到的网络问题的解决方案
- 给ubuntu系统配置代理
# 文件位置: /etc/profile 追加内容
export http_proxy=http://192.168.0.1:4560
export https_proxy=http://192.168.0.1:4560
- 给pip配置代理
python -m pip install --upgrade pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
- git配置代理
git config --global http.proxy 'http://192.168.0.1:4560'
git config --global https.proxy 'http://192.168.0.1:4560'
- 配置urllib3网络代理
有时候命令会通过pip直接安装git仓库,这时候如果仓库地址无法访问就崩了, 比如:
pip install git+https://github.com/user/repo.git@master#egg=my_package
具体修改如下:
$ sudo vim /usr/lib/python3/dist-packages/pip/_internal/network/download.py
# row number = 115
def _http_get_download(session: PipSession, link: Link) -> Response:
target_url = link.url.split("#", 1)[0]
# 新增开始
proxy={
"http": "http://192.168.0.1:4560",
"https": "http://192.168.0.1:4560"
}
session.proxies=proxy
# 新增结束
resp = session.get(target_url, headers=HEADERS, stream=True)
raise_for_status(resp)
return resp
- poetry虚拟环境配置代理
pyproject.toml 配置文件的末尾添加如下信息(来源: https://python-poetry.org/docs/repositories/)
[[tool.poetry.source]]
name = "tsinghua-pypi"
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
default = true
mongodb
ubuntu22.04官方默认没有mongodb-org的包,需要脚本添加对应apt仓库或手动添加, 可以参考这个文章:
https://apmb.co.uk/posts/mongodb-4.4-ubuntu-22-04/
安装后执行cape脚本里面 mongo相关命令启动服务
pip提示依赖找不到
如果使用poetry运行服务, 则使用
poetry run pip install …
如果不使用poetry运行服务, 则使用
pip install …
windonws客户机iso镜像下载
分享一个:
https://hellowindows.cn/