前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Ubuntu20上离线安装joern(包括sbt和scala)

如何在Ubuntu20上离线安装joern(包括sbt和scala)

作者头像
ahao
发布2024-07-01 09:25:19
630
发布2024-07-01 09:25:19
举报
文章被收录于专栏:学习学习

在Ubuntu 20上离线安装Joern,由于Joern通常需要通过互联网从其官方源或GitHub等地方下载,但在离线环境中,我们需要通过一些额外的步骤来准备和安装。(本人水平有限,希望得到大家的指正)

我们首先要做的就是需要安装sbt和scala(前提是得有java的环境,java配置的步骤几乎和这两个相同)

离线安装我们需要将提前下好的安装包下载,然后传入你的Ubuntu虚拟机中,由于我用的是VMware,所以我采用的方法是共享文件夹的方式至于如何共享文件夹可以参考这篇文章:https://blog.csdn.net/google20/article/details/134816043?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171973251616800185840141%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=171973251616800185840141&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_ecpm_v1~rank_v31_ecpm-1-134816043-null-null.nonecase&utm_term=vmtools&spm=1018.2226.3001.4450

当然,前提是得安装好vmtools,但是在离线的环境下无法安装vmtools,有两种方法:一是在联网的机器上进行安装之后放入离线机器,而是选择一个vmtools的镜像,然后运行其脚本,这里我选择的是第二种方式,可以参考这篇文章(获取镜像的方式):链接: https://blog.csdn.net/DT_FlagshipStore/article/details/123394535,但是在插入镜像后的方式就不同了,文中双击的方式一般是无效的,你需要进入虚拟机中点击插入后的镜像,然后将其脚本和压缩包复制进入你的home目录下,然后运行脚本既可,这样就可以使用共享文件夹(由于机器的问题没有离线机器上的图片)

如果你导入镜像后你的离线环境下的other locations的位置会有一个新的磁盘,你需要把其中的文件和压缩包复制到home目录下(可能还得解压压缩包之后才能有脚本),运行脚本,就可安装完毕

安装完毕后再终端运行指令,查看vmtools是否安装成功为你服务:

代码语言:javascript
复制
systemctl status vmware-tools-services

假设vmware-tools-services正在运行,输出可能类似于:

代码语言:javascript
复制
● vmware-tools-services.service - VMware Tools Services  
   Loaded: loaded (/lib/systemd/system/vmware-tools-services.service; enabled; vendor preset: enabled)  
   Active: active (running) since [启动时间]; [经过的时间] ago  
   Docs: man:vmware-tools-services(8)  
 Main PID: [主进程ID] (vmware-tools-services)  
    Tasks: [任务数] (limit: [任务限制])  
   Memory: [内存使用量]  
   CGroup: /system.slice/vmware-tools-services.service  
           └─[主进程ID] /usr/sbin/vmware-tools-services

下载好之后就可以正式配置环境了

Scala和Sbt的离线安装

进入scala的官网下载压缩包 https://www.scala-lang.org/download/ sbt官网: https://www.scala-sbt.org/download

注意是下载后缀为.tgz的压缩包 尽量选择新的版本进行下载

下载完成后我们进入Ubuntu虚拟机中:

输入指令,进入共享文件夹:

代码语言:javascript
复制
cd /mnt/hgfs/"ubuntu share"

首先创建存放解压后的文件夹

代码语言:javascript
复制
sudo mkdir /opt/sbt
sudo mkdir /opt/scala

然后在执行解压指令: sbt_file和scala_file需要替换为你的压缩包名字

代码语言:javascript
复制
sudo tar -xzf sbt_file.tgz -C /opt/sbt
sudo tar -xzf scala_file.tgz -C /opt/scala

进入解压后的文件夹: 直到找到你的bin文件夹,然后记住该路径,scala和sbt一样的

代码语言:javascript
复制
cd /opt/sbt

下面开始配置环境变量: 使用指令

代码语言:javascript
复制
nano ~/.bashrc

在该文件的最后一行加入

代码语言:javascript
复制
export PATH=/your/path/to/sbt/bin:$PATH
export PATH=/your/path/to/scala/bin:$PATH

加入完成后按ctrl+x键,再按shift+y,按回车即可 使用指令让环境变量生效

代码语言:javascript
复制
source ~/.bashrc

这样我们的sbt和scala的离线安装就完成了,当然,我们在这之前还需要安装java jdk,最好是安装最新的版本,我们可以使用指令查看我们的版本

代码语言:javascript
复制
java --version
sbt --version
scala --version

安装完这些之后就可以安装joern了

joern的离线安装

起始这些joern的离线安装和上两个一样 进入joern的官网下载压缩包后放入共享文件夹 下载链接: https://github.com/joernio/joern/releases 下载新版本的tar.gz后缀的压缩包

然后进入share目录

代码语言:javascript
复制
cd /mnt/hgfs/"ubuntu share"

解压指定文件夹 记得换成你自己的文件路径

代码语言:javascript
复制
sudo mkdir /opt/joern
sudo tar -xzf joern_file.tgz -C /opt/joern

我们先将他解压后,我们需要在在线的机器上配置好joern的依赖之后在将依赖复制放入自己的离线环境下: 我们进入联网的机器中,进入joern的安装目录:

这是编译下载之后的joern的目录,如果没有编译和打包是会有很多链接是断开的 我们进入终端,执行编译指令:

代码语言:javascript
复制
sbt stage

但是由于joern的一些依赖项需要外网,所以前提是你的网络状态是可以访问外网

这个下载周期比较长,可能会需要多次尝试,另外就是内存的问题,最好是分配最大的内存,不然会被杀死很多进程导致下载依赖项失败

sbt编译打包成功之后,我们就需要进行依赖项的复制粘贴了,将它的依赖项移动到离线环境中,根据外网资料,sbt和joern的官方文档和gpt的辅助我大概推断出来了依赖项存储到了这些位置:

代码语言:javascript
复制
~/.ivy2
~/.sbt
/you/path/to/joern/target
/you/path/to/joern/project
/you/path/to/joern/lib
/you/path/to/joern/macros
还包括了/you/path/to/joern目录下的各个文件夹中的target目录

大家会发现各个文件夹都有大量的jar包,并且如果你将整个joern的文件打包是不可能的,中间会出现文件损坏的问题,所以一部分情况下你必须得自己单独将所有的jar包打包然后(我用的是tar.gz的压缩包格式)传入离线环境,然后解压到joern的目录下

当然,~/.ivy2和 ~/.sbt这两个依赖项可不是放入joern目录下,你得放入家目录,就是 ~目录下,同时你可能会遇到文件权限的问题,你可以根据提示修改权限:

你需要将~/.sbt/boot目录下的sbt.boot.lock文件可读可写的权限

代码语言:javascript
复制
sudo chmod -R ugo+wx sbt.boot.lock

然后我们最后进入joern的目录下,同样执行sbt stage的指令,等待一段时间,虽然他会报出error的错误,但是你不用管,进入你的joern目录下你就会发现,目录下的之前“上锁”和“打叉”的文件都已经可以使用,最后一步配置环境变量:

代码语言:javascript
复制
nano ~/.bashrc

在最后一行加入

代码语言:javascript
复制
export PATH=/you/path/to/joern:$PATH

退出后使用指令使其生效:

代码语言:javascript
复制
source ~/.bashrc

随后使用joern命令判断是否安装成功,可能得等待一段时间,不用急:

这样就安装成功了!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Scala和Sbt的离线安装
  • joern的离线安装
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档