extensions-repo/user-guide/files/插件依赖管理.md

183 lines
8.4 KiB
Markdown
Raw Normal View History

# 插件依赖管理器安装使用说明
## 功能概述
插件依赖管理器为其他插件提供依赖包检查安装功能。
- 插件在实现功能时,通常需要调用操作系统上的软件,称之为依赖软件。用户安装插件后还需要安装插件依赖软件才能够让插件正常运行。
- 在Linux或类Linux系统中不同CPU架构、不同版本的操作系统的软件包有可能名称不同、版本不同插件依赖软件安装可能会给用户带来困扰。
- 本插件希望简化依赖软件的安装,屏蔽不同架构和操作系统版本差异。
* 为实现该目的插件需要使用depends.json文件描述不同CPU架构、不同系统版本上的插件依赖软件
* 本插件通过读取各个插件的depends.json来做插件依赖软件检查和安装
## 主要功能
- 插件列表
- 插件依赖包信息检查
- 插件依赖包安装
## 要求
- 系统包以deb形式管理的操作系统
- dpkg软件包
- apt软件包
- 系统包以rpm形式管理的操作系统
- rpm软件包
- yum软件包
## 安装
安装插件依赖管理器插件extension dependency
- 启动集成开发环境,点击活动栏中的插件图标,调出插件视图。
- 在插件视图中找到KYLIN-IDE推荐的插件选择Kylin-IDE(KylinCode)插件分类->插件管理器
- 通过以上步骤找到extension dependency插件点击安装
- 安装成功后,重新加载窗口
## 使用
### 插件依赖管理器页面
- 启动集成开发环境
- 执行ctrl+shift+p,启动命令面板
- 执行命令面板中的插件依赖安装命令(Install Dependency Package)或者通过点击菜单中的帮助->打开插件依赖管理器进入插件依赖管理器页面,显示插件列表。如下图:
![图3](./resources/extension-dependency/ext-list.jpg)
### 插件依赖包信息显示
- 进入插件依赖管理器页面后,点击表格中的查看详情按钮,显示对应插件的依赖包安装情况。如下图:
![图4](./resources/extension-dependency/soft-info.jpg)
- 若出现软件依赖不满足要求,当鼠标放置在否上时给出提示信息
![图5](./resources/extension-dependency/tishi.jpg)
### 插件依赖包安装
- 进入插件依赖管理器页面后,点击表格中的查看详情按钮,若软件包依赖不满足要求,点击安装按钮,弹出终端执行面板,输入用户密码,然后进行依赖安装
![图6](./resources/extension-dependency/inst.jpg)
- 或者通过勾选插件,然后点击选中安装按钮进行插件依赖批量安装
![图7](./resources/extension-dependency/select-inst.jpg)
# depends.json文件配置
插件开发者如果想要使用插件依赖管理器管理所开发插件的依赖包安装则需要将所开发插件的依赖包信息按照规则写入depends.json文件中depends.json文件最终应该存放在所开发插件的安装目录内。
## 配置规则
depends.json内容整体作为一个对象进行处理所以depends.json内容需要{}括起来。开发者所开发的插件可能涉及适配多架构、多操作系统插件依赖信息针对不同架构操作系统可能有所区别所以depends.json文件定义了多层嵌套结构。
- 第一层标识系统包管理形式是rpm包还是deb包如果是deb包则定义为```"deb":{}```如果是rpm包则定义为```"rpm":{}```;
- 第二层标识平台架构:支持默认架构(即支持所有架构)和具体架构,如果是默认架构定义```"default_arch":{}```如果是具体架构比如x64架构定义为```"x64":{}```。具体架构的获取方式为在命令行执行arch获取到返回值就是需要的值
- 第三层标识操作系统:支持默认操作系统(即支持所有操作系统)和具体操作系统。如果是默认操作系统定义为```"default_os":{}```如果是具体的操作系统比如kylinV10SP1定义为```"kylinV10SP1":{}```。具体操作系统值获取方式为命令行执行cat /etc/os-release 然后获取PRETTY_NAME的值最后去掉所有空格
- 第四层记录插件对依赖包具体要求,比如需要的依赖包名称,需要的依赖包版本。分为三种情况;
+ A.依赖软件包,但是对软件包无版本要求;
比如依赖软件包cmake,定义```"cmake":{}```
+ B.依赖软件包,对软件包有版本限制;
- 例子1
比如依赖软件包cmake,但是限制cmake版本>=1.0.0 但是小于5.0.0
定义:
```json
"cmake":{
"relations":[
{
"relation":">=",
"version":"1.0.0"
},
{
"relation":"<=",
"version":"5.0.0"
}
]
}
```
- 例子2:
比如依赖软件包cmake,但是限制cmake版本必须是1.0.0
定义:
```json
"cmake":{
"relations":[
{
"relation":"==",
"version":"1.0.0"
}
]
}
```
- 例子3
比如依赖软件包cmake,但是限制cmake版本必须小于1.0.0 ,无其他要求
定义:
```json
"cmake":{
"relations":[
{
"relation":"<",
"version":"1.0.0"
}
]
}
```
注意目前relation的值支持```">",">=","==","!=","<","<="```
一般软件包的版本号由多个部分组成所以在写version时需要注意一下。可以先查一下依赖包的软件包版本号比如查询到软件包clangd版本号为 1:10.0.0-4kylin1 那当插件需要clangd软件包且对版本有要求时应该从左到右进行填写定义
```json
"clangd":{
"relations":[
{
"relation":">",
"version":"1:10.0"
}
]
}
```
**不要写**
```json
"clangd":{
"relations":[
{
"relation":">",
"version":"10.0" //错误
}
]
}
```
+ C.依赖的软件包包名和版本有关联,不同的版本,软件包名称不一样。
比如插件需要openjdk软件包"openjdk-8-jdk","openjdk-11-jdk","jdk-17"三个软件包中只要有一个软件包安装就可以。
定义:
```json
"java":{
"exhaustion":["openjdk-8-jdk","openjdk-11-jdk","jdk-17"]
}
```
其中java为标识标识定义不要定义特殊符号不要以数字开头。
**注意**因为支持默认架构和默认os,所以在第四层可能会出现软件包名重复的情况,所以给嵌套的结构定义了优先级:
**优先级**```default_arch+default_os <default_arch+具体的os<具体的架构+default_os<具体的架构+具体的os```
比如:插件A的depends.json定义如下
```json
{
"deb":{
"default_arch":{
"default_os":{
"tree":{
"relations":[
{
"relation":"<",
"version":"1.0.0"
}
]
}
},
"KylinV10Professional":{
"cmake":{}
}
},
"x64":{
"default_os":{
"java":{
"exhaustion":["openjdk-11-jdk","jdk-17"]
}
},
"KylinV10Professional":{
"tree":{
"relations":[
{
"relation":"<",
"version":"4.0.0"
}
]
}
}
}
},
"rpm":{}
}
```
**解释**
- 插件A在x64平台KylinV10Professional的操作系统上依赖软件包tree且版本应小于4.00 依赖java包要求"openjdk-11-jdk","jdk-17" 有一个即可依赖cmake软件包无版本要求
- 插件A在x64平台非KylinV10Professional的其他操作系统上依赖软件包tree且版本<1.0.0依赖java包要求"openjdk-11-jdk","jdk-17" 有一个即可
- 插件A在非x64平台非KylinV10Professional操作系统上依赖软件包tree且版本<1.0.0
- 插件A在非x64平台KylinV10Professional操作系统上依赖软件包tree且版本<1.0.0 依赖cmake软件包无版本要求