P4环境搭建-ubuntu 18.04,20.04

本文详细记录了在Ubuntu 20.04环境下安装P4环境的过程,包括准备工作、安装步骤及遇到的问题,如grpc子模块下载问题的解决方法,供读者参考和避免常见困扰。
摘要由CSDN通过智能技术生成

更新.ubuntu20.04版本快速安装!!!

https://github.com/jafingerhut/p4-guide
认真阅读:https://github.com/jafingerhut/p4-guide/blob/master/bin/README-install-troubleshooting.md

$ sudo apt install git
$ git clone https://github.com/jafingerhut/p4-guide
$ ./p4-guide/bin/install-p4dev-v5.sh |& tee log.txt

只需要3G,只需要几分钟就能弄完!!!冲啊!

0. 环境与前言

我的环境:ubuntu 18.04 (4G内存40G磁盘空间)
安装P4环境的日期:2020.11.23
参考资料:https://github.com/jafingerhut/p4-guide

       看了网上的很多资料,最初是根据别人的博客进行安装的,跟着别人的教程走还是遇到了很多问题,没有成功。最后,还是选择了https://github.com/jafingerhut/p4-guide 上的脚本进行安装,依旧遇到了一些问题,然后终于成功了!

       在此重新梳理了一下安装流程与步骤,并且记录下我遇到的问题和解决方案,希望大家安装顺利!!!

1. 准备工作!!

       由于从github上clone很慢,经常会卡住不动,所以,在此把所有需要用到的github上的内容导入到gitee网站中(从github导入到gitee网站中很快,在ubuntu上从gitee上clone也会很快)。

以https://github.com/jafingerhut/p4-guide为例,步骤如下:

  1. 进入gitee网站注册用户
  2. 新建库并导入
    点击网站右上角+,选择新建仓库。选择页面最下方的 导入已有仓库 ,填入github上的url ,创建仓库。
  1. 此时在ubuntu上,就可以将git clone https://github.com/jafingerhut/p4-guide.git 语句转换成
git clone https://gitee.com/自己的名字/p4-guide.git

我已经导入好了所有的库,大家如果懒得导入的话,可以用我已经导入好的,即将文章中所有“自己的名字”改成 hahahawt 就是我的仓库。

2. 安装步骤

  1. 新建p4文件夹,复制 p4-guide到p4文件夹。
$ mkdir p4
$ cd p4
$ sudo apt install git
$ git clone https://gitee.com/自己的名字/p4-guide
  1. 根据不同的操作系统选择参考资料p4-guide中的不同安装脚本。
    由于我的环境是Ubuntu 18.04,我选择的是 /bin/install-p4dev-v2.sh,打开此脚本。
$ gedit ./p4-guide/bin/install-p4dev-v2.sh
  1. 打开脚本,查看所有要从github上clone的链接,将对应链接按照“1. 准备工作”所示,导入到gitee中,并且替换脚本中的链接。具体包括:
  • https://github.com/google/protobuf 替换成 https://gitee.com/自己的名字/protobuf
  • https://github.com/google/grpc.git 替换成 https://gitee.com/自己的名字/grpc.git
  • https://github.com/p4lang/PI 替换成 https://gitee.com/自己的名字/PI
  • https://github.com/p4lang/behavioral-model.git 替换成 https://gitee.com/自己的名字/behavioral-model.git
  • https://github.com/p4lang/p4c.git 替换成 https://gitee.com/自己的名字/p4c.git
  • https://github.com/mininet/mininet 替换成 https://gitee.com/自己的名字/mininet

举例:将shell文件中的

$ git clone https://github.com/p4lang/PI

替换成

$ git clone https://gitee.com/hahahawt/PI

 

  1. 除了上述链接以外,还有一些需要下载子模块的,也需要导入到gitee中。如果在脚本中有以下语句,则需要下载对应子模块。
$ git submodule update --init --recursive

       在install-p4dev-v2.sh脚本中,可以发现需要下载submodule的包括grpc、PI和p4c。

       以grpc为例,在对应gitee库中,打开.gitmodules文件,将所有关于子模块的github链接也按照“1. 准备工作”所示导入到gitee中,并且更改 .gitmodules文件中对应url的内容,替换为自己导到gitee后的链接。如下图所示:

       到此,所有需要用到的github上的库都已经更换成功了,此时,gitee上包含的库如下图所示:

  1. 进入p4文件夹,运行脚本。
$ ./p4-guide/bin/install-p4dev-v2.sh |& tee log.txt

       其中 |& log.txt表示将终端显示的内容同时保存至log.txt中,以便后续查看。
 

  1. 等待… 直至出错或者clone处卡住。
    此处我就卡住了,具体方法和注意事项,见“3. 遇到的问题与解决方法”。

  2. 如果没有卡住的话,全部运行完毕后,可以选择运行官方实例进行测试

$ git clone https://gitee.com/自己的名字/tutorials
$ cd tutorials/exercises/basic
$ cp -f solution/basic.p4 ./
$ make run

       然后自动进入到mininet中

mininet> pingall

       可以选择输入mininet的其他语句,进行测试,最后退出。

mininet> exit
  1. 安装成功!!

3. 遇到的问题与解决方法

问题:在安装中clone grpc的子模块时卡住了,并没有按照.gitmodules上更改后的路径进行下载。

解决:停止shell脚本运行,手动clone相关模块。进入grpc/third_party中,逐个克隆子模块。此时要打开grpc 文件夹下的.gitmodules查看所有需要用到的模块。

$ cd grpc
$ cat .gitmodules
$ cd third_party
$ git clone -b 3.0.x https://gitee.com/hahahawt/protobuf.git
$ git clone https://gitee.com/hahahawt/udpa.git
... ...
... ...

       注意!!有些模块有指定的分支!千万不要克隆错误! 我就是因为没有下载对应的分支导致make出现了很多错误… …
例如:

       当手动clone后,再继续运行安装的shell文件即可,这里我是把之前在shell文件中已经安装过的模块注释掉后,再重新运行的脚本。

### 安装和配置 Perforce (P4) 服务器 为了在 Kali Linux 上成功安装并配置 Perforce (P4) 服务器,需遵循一系列特定的操作流程。 #### 准备工作 确保系统的软件包列表是最新的,并且已更新到最新版本。这可以通过运行 `apt update` 和 `apt upgrade` 命令实现[^1]。 ```bash sudo apt update && sudo apt upgrade -y ``` #### 下载与安装 Helix Core Server 访问官方网站获取适用于 Linux 平台的 Helix Core Server 版本。下载完成后解压文件至指定目录下: ```bash wget https://cdist2.perforce.com/perforce/r20.2/bin.linux26x86_64/p4d.tgz tar zxvf p4d.tgz mv bin.linux26x86_64 /opt/perforce/ ``` 创建必要的用户和服务脚本来启动 P4D 进程。通常建议为 Perforce 创建专用的服务账户以提高安全性。 ```bash adduser --system --group perforce chown -R perforce:perforce /opt/perforce ``` 编写 systemd service 文件 `/etc/systemd/system/p4d.service` 来定义服务行为: ```ini [Unit] Description=Helix Versioning Engine Service After=syslog.target network.target [Service] Type=forking User=perforce Group=perforce ExecStart=/opt/perforce/sbin/startup.p4d Restart=no PrivateTmp=true [Install] WantedBy=multi-user.target ``` 初始化数据库并将权限分配给新创建的服务账号: ```bash su -s /bin/bash perforce -c "/opt/perforce/sbin/p4d -r /var/lib/perforce -i" chown -R perforce:perforce /var/lib/perforce ``` 启用并启动该服务: ```bash systemctl enable p4d systemctl start p4d ``` 此时应该已经可以正常运作了;可通过命令行工具或其他图形界面客户端连接测试。 --- ### 配置 Perforce (P4) 客户端 对于想要使用本地机器作为开发工作站的情况来说,在相同操作系统内完成客户端部分同样重要。 #### 设置环境变量 编辑用户的 shell profile 脚本(如 `.bashrc`,`.zshrc`) 添加如下几行用于设定默认参数: ```bash export P4PORT=localhost:1666 export P4USER=<your_username> export P4CLIENT=<workspace_name> ``` 记得执行 source 或重新加载终端使更改生效。 #### 获取并编译源码版 Client Tools 前往官网下载对应平台上的二进制分发包或者直接克隆 Git 仓库自行构建。 ```bash git clone https://github.com/perforce/helix-p4js.git ~/helix-p4js cd ~/helix-p4js npm install npm run build ``` 也可以选择更简便的方式——利用 APT 包管理器快速部署官方维护好的预编译版本: ```bash echo "deb http://package.perforce.com/apt/ubuntu focal non-free" | tee /etc/apt/sources.list.d/perforce.sources.list curl -o- https://package.perforce.com/perforce.pubkey | gpg --dearmor | tee /usr/share/keyrings/perforce-archive-keyring.gpg >/dev/null chmod 644 /usr/share/keyrings/perforce-archive-keyring.gpg gpg --no-default-keyring --keyring /usr/share/keyrings/perforce-archive-keyring.gpg --refresh-keys apt-get update apt-get install helix-cli ``` 现在应当可以在任意位置调用 `p4` 指令来进行日常操作了。
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值