Ubuntu系统中多个版本的程序指定默认版本

2023-10-29

最近在编译clickhouse的过程中,遇到了操作系统默认安装了一个clang 10的版本,但编译clickhouse需要安装11版本以上的clang程序,所以就通过命令:

bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" 

安装了一个最新版本 13的clang程序,具体如下:

可以看到有2个版本的clang;

现在我们要通过update-alternatives 工具,来指定一个系统默认调用的程序版本;

1.首先,我们查看一下系统是否已经有这个clang的配置:执行命令:

update-alternatives --display clang

可以看到系统当前没有默认执行clang程序的配置;

2.创建一个clang的默认程序配置信息;

update-alternatives  --install /usr/bin/clang clang /usr/bin/clang-13 100 

 其中,最后一个参数100,是一个自己指定的优先级(或者叫版本号)的值,这个值越大,说明它的优先级越高,系统在auto模式下从这个值最大的里面选择默认程序;

如下:

第一次设置失败是因为权限的问题,切换到root账号下,就执行成功了;

3.验证是否配置成功

执行命令:update-alternatives --display clang   ,结果如下说明创建成功

4.这个时候,我们只是创建了一个clang的默认程序配置,clang++还没有对应的改过来,查看clang++的版本号执行命令:clang++ -v

我们可以看到,还是10的版本;

5.配置clang++的默认执行程序

执行命令:sudo update-alternatives  --install /usr/bin/clang clang /usr/bin/clang-13 100 --slave  /usr/bin/clang++ clang++ /usr/bin/clang++-13

执行完命令后,查看版本号结果如下:

我们可以看到,配置成功了;默认的clang++也成了13的版本了;

6.我就想能在2个版本之间随意的切换,怎么办呢?

可以的,我们先找到路径 /usr/bin 路径下,执行ll查看当前路径下的程序,如下图:

我们可以看到,在当前路径下,有一个clang-10、clang-13 以及clang对应的软连接,clang++也类似;

于是我们可以执行如下命令;给clang-10的版本也创建一个配置选项在默认程序的配置文件里;

sudo update-alternatives  --install /usr/bin/clang clang /usr/bin/clang-10 90 --slave  /usr/bin/clang++ clang++ /usr/bin/clang++-10

结果如下:

看着似乎没有生效,但大家注意,我命令行中的优先级给的是90这个值,是小于13版本给的100的,但他到底创建成功了没?我们通过下个命令 --config来查看,具体命令如下:

sudo update-alternatives --config clang

从结果中,能看到clang-10的配置项已经创建成功了,只不过在auto mode下,系统默认选择的是13的版本,同时当前命令行下,我们可以手动选择默认版本,这里我们输入1,即clang-10对应的编号:

验证一下我们的选择对不,执行命令clang -v查看版本号如下:

我们可以看到,clang的默认版本号已经改成了10版本;再次执行命令:

sudo update-alternatives --config clang

我们选择0,自动模式,结果如下:

我们看到,程序clang的版本号,又切换到了clang-13的版本;

总结:在系统安装了多个程序版本的情况下,可以通过sudo update-alternatives --config 来选择默认的版本号;当然其前提是创建了对应版本的软连接;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu系统中多个版本的程序指定默认版本 的相关文章

随机推荐

  • JAVA开发环境配置指南

    进入Java世界之前 我们需要铺一条 路 才能通往Java的世界并且尽情遨游 那么这条 路 是什么呢 是的 就是Java的开发环境 今天我们一起来学习Java开发环境的配置 1 下载与安装Java JDK 首先 我们需要从Oracle官网下
  • Leetcode-257 二叉树的所有路径(深搜)

    给你一个二叉树的根节点 root 按 任意顺序 返回所有从根节点到叶子节点的路径 叶子节点 是指没有子节点的节点 输入 root 1 2 3 null 5 输出 1 gt 2 gt 5 1 gt 3 示例 2 输入 root 1 输出 1
  • SAP ABAP HANA 使用ECLIPSE而不是HANA Studio

    首先是ECLIPSE下载 链接 在这个网页中找到SAP HANA Tools这一块 然后跟着procedure的操作来做 即下图 安装完成后 连接SAP系统 打开Eclipse 点图中的按钮或菜单栏Windows gt Perspectiv
  • 创建SpringBoot + Druid + Mybatis项目

    本章目录 前言 一 搭建SpringBoot框架 二 配置druid连接池 1 选择原因 2 druid参数 3 druid的配置 三 Mybatis持久层 1 三层架构 2 选择原因 3 mybatis配置 本章将讲述如何创建spring
  • 机器视觉检测系统完整解决方案以及开发流程

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 第一步是确定要求并确定是否可行 机器视觉一词可以想象是具有一组眼睛的计算机进行检测或检验行为 为了开发机器视觉应用的完整解决方案 视觉工程师执行一系列通常分为五个类别的任
  • unity消息机制实现

    在mvc模式中 消息机制被广泛使用 Unity3d自带的消息机制真心不好用 像SendMessage 需要知道响应事件的物件 还需要一个响应函数的函数名字符串作为参数 如果我们有多个物件都要响应某个事件怎么办呢 或者我们不知道有哪些物件要响
  • MySQL-数据库读写分离(下)

    作者 小刘在C站 个人主页 小刘主页 努力不一定有回报 但一定会有收获加油 一起努力 共赴美好人生 学习两年总结出的运维经验 以及思科模拟器全套网络实验教程 专栏 云计算技术 小刘私信可以随便问 只要会绝不吝啬 感谢CSDN让你我相遇 前言
  • js为浏览器URL追加参数

    setTimeout gt let newurl updateQueryStringParameter window location href id 123456 向当前url添加参数 没有历史记录 window history repl
  • SpringBoot笔记:SpringBoot启动参数配置

    文章目录 目的 测试代码 配置文件配置 获取自定义参数 项目打包发布 修改启动配置 方式一 系统变量 方式二 命令行参数 springboot启动参数解释 目的 1 熟悉springboot多环境配置 2 熟悉springboot使用jar
  • Webpack源码分析-打包后的文件分析

    Webpack源码解析 使用webpack版本 html webpack plugin 4 5 0 webpack 4 44 2 webpack cli 3 3 12 打包后文件分析 webpack code dist bundle js
  • UTM安全功能部署场景——web过滤原理、url过滤

    目录 web过滤原理 网络过滤检查模式 代理模式 流模式 DNS模式 应用场景 一 组网需求 二 组网拓扑 三 配置要点 四 配置步骤 五 配置步骤 web过滤原理 网络过滤检查模式 代理模式 基于代理的检查包括流量缓冲和在决定一个行动之前
  • CSS里的style标签内为什么要加html注释符

    今天俺终于搞懂了 CSS里的style标签内为什么要加html注释符 说来惭愧啊 搞开发也有那么点时间了吧 经常看在style标签里含有这个html的注释符号 想去搞懂原因 还真没找着 上网没找到原因 可能是自己查找的方式不对吧 下面步入正
  • 【202211】国内镜像源地址

    Ubuntu Python Nodejs MySQL Git Chromium Docker Homebrew 等一系列的常用最推荐的镜像源 清华源镜像清华大学开源软件镜像站 Tsinghua Open Source Mirror 可能是最
  • anguar12里面FormControl学习

    在Angular 12中 要动态修改FormGroup 你可以使用patchValue 方法或setValue 方法 使用patchValue 方法 import Component OnInit from angular core imp
  • java内部类的作用分析

    提起Java内部类 Inner Class 可能很多人不太熟悉 实际上类似的概念在C 里也有 那就是嵌套类 Nested Class 关于这两者的区别与联系 在下文中会有对比 内部类从表面上看 就是在类中又定义了一个类 下文会看到 内部类可
  • solidity数据位置

    代码在执行前 一般会编译成指令 指令就是一个个逻辑 逻辑操作的是数据 代码 或者说业务 操作的其实是数据 非区块链中 代码操作的数据 一般会存到数据库中 在区块链里 区块链本身就是一个数据库 如果你使用区块链标记物产的所有权 归属信息将会被
  • flutter 路由配置多种跳转与传参

    main dart文件 1 引入路由跳转的页面 import package app ftr pages Page1 dart import package app ftr pages Page2 dart void main gt run
  • 常见HTTP状态码

    HTTP状态码 当浏览者访问一个网页时 浏览器会向网页所在服务器发出请求 当浏览器接收并显示网页前 此网页所在的服务器会返回一个包含HTTP状态码的信息头 server header 用以响应浏览器的请求 HTTP状态码分类 HTTP状态码
  • 【react】组件创建和交互步骤和实例

    例子来自尚硅谷react视频 相当于笔记整理 link https www bilibili com video av51174155 from search seid 11218837597275325699 要做的功能 在输入框内输入内
  • Ubuntu系统中多个版本的程序指定默认版本

    最近在编译clickhouse的过程中 遇到了操作系统默认安装了一个clang 10的版本 但编译clickhouse需要安装11版本以上的clang程序 所以就通过命令 bash c wget O https apt llvm org l