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系统中多个版本的程序指定默认版本 的相关文章

  • ubuntu 中的 echo -e 选项不起作用

    我的同事使用Ubuntu 我使用openSUSE 我们使用相同的makefile编译相同的源代码 我的环境运行良好 但我的同事不能 总是输出无法识别 e选项 我们检查makefile 只发现echo命令使用 e option Ubuntu的
  • 如何在树莓派上更新到最新的 python 3.5.1 版本?

    我昨天拿到了 Raspberry Pi 我已经在尝试用它来编写代码了 我有一个计划在其上运行的程序 但它仅与 Python 版本 3 5 0 或 3 5 1 兼容 并且我在互联网上找到的所有内容似乎都已经过时 与 Python 2 有关 或
  • PDF:在现有 PDF 文件中插入一行文本

    我有一个 PDF 文件 我希望在所有页面 前两页除外 的页脚上添加一行纯文本 不是徽标或类似内容 有谁有一个如何做到这一点的例子 用任何语言 Update 原始 PDF 是用 Scribus 制作的 我可以完全控制它 因此 如果更容易进行查
  • Linux shell 标题大小写

    我正在编写一个 shell 脚本并有一个如下所示的变量 something that is hyphenated 我需要在脚本中的各个点使用它 如下所示 something that is hyphenated somethingthati
  • C/C++ with GCC:静态地将资源文件添加到可执行文件/库

    有人知道如何使用 GCC 将任何资源文件静态编译为可执行文件或共享库文件吗 例如 我想添加永远不会改变的图像文件 如果它们改变了 我无论如何都必须替换该文件 并且不希望它们位于文件系统中 如果这是可能的 我认为这是因为 Visual C f
  • 如何从正则表达式中获取所有匹配项?

    我想获得所有出现的情况 0 9A Z 以供稍后处理 我有 if cat file 0 9A Z then echo BASH REMATCH fi 这给了我第一个匹配项 但是我如何处理文件中的所有匹配项 谢谢 如果您只想获取正则表达式的匹配
  • 尝试编译 git 但在 linux 中找不到 libcurl

    我想编译支持 http https 的 git 我有 ls usr include curl curlbuild h curl h curlrules h curlver h easy h mprintf h multi h stdchea
  • Docker 容器可以访问 DNS,但无法解析主机

    我在运行 docker 容器时遇到一个有趣的问题 突然间 我无法从容器内解析 DNS 这是一个概要 一切都没有解决 apt get pip 一次性 ping 容器等正在运行docker run it dns 8 8 8 8 ubuntu p
  • CMake:使用其他平台的生成器。如何?

    如何使用 CMake 在 Linux 上生成 Visual Studio 项目文件 你不能 您必须在 Windows 上运行 CMake 才能为 Visual Studio 生成
  • 在 macOS 上更改 libpcap 版本(Apple 删除了一项功能)

    我只想使用 tcpdump 和 Ubuntu 上提供的相同 Qout 功能 在 macOS 上 tcpdump 和 libpcap 已被剥离使用 Qout 进行过滤的功能 tcpdump Qout nnSX c 10 w packet pc
  • 在 4.x 内核上的 64 位内存中查找系统调用表

    我正在尝试编写一个简单的内核模块来查找 Linux 中的 sys call table 但遇到了一些麻烦 我在这里找到了 32 位 Linux 的基本指南 https memset wordpress com 2011 03 18 sysc
  • 安装失败:无法在 ubuntu 上的 WordPress nginx 中创建目录

    我在本教程的帮助下设置了 WordPress 如何在 ubuntu 18 04 上使用 LEMP 安装 WordPress https www digitalocean com community tutorials how to inst
  • 检查 Linux 中给定进程的打开 FD 限制

    我最近有一个 Linux 进程 泄露 了文件描述符 它打开了文件描述符 但没有正确关闭其中一些文件描述符 如果我对此进行监控 我就可以提前得知该过程已达到其极限 有没有一种很好的 Bash 或 Python 方法来检查 Ubuntu Lin
  • mod_perl 无法看到 /tmp 中的文件

    我有一些 mod perl 代码试图访问 tmp 下的文件 但它抛出 没有这样的文件或目录 错误 我在代码中添加了一个 ls al tmp 来查看 Perl 在目录中看到的内容 它只给了我 和 drwxrwxrwt 2 root root
  • 零垫重命名,例如图片 (2).jpg -> 图片 (002).jpg

    我需要按照标题在所有子文件夹中解释的方式重命名所有图像 我正在考虑用正则表达式提取括号内的数字 然后重命名它 搜索周围我看到有类似的工具rename and mmv但我无法让他们重新命名 jpg 我将不胜感激任何解决我的问题的建议 顺便说一
  • 我如何知道 std::map 插入成功还是失败?

    我在多线程应用程序中有一个映射 将名为 uuid 的类映射到指针 我想知道插入操作是否成功或失败 e g mymap insert hint MyMap value type entry uuid itemptr 如果失败的话会抛出异常或者
  • 使用 xargs 时如何获取退出代码(并行)

    我制作了一个用于启动并行 rsync 进程的脚本 bin bash LIST 1 DEST DIR 2 RSYNC OPTS 3 echo rsyncing From SRC DIR To DEST DIR RSYNC OPTS RSYNC
  • 我应该使用 AWK 或 SED 删除 CSV 文件中引号之间的逗号吗? (重击)

    我有一堆日常打印机登录CSV格式 我正在编写一个脚本来跟踪使用了多少纸张并将信息保存到数据库中 但我遇到了一个小问题 本质上 日志中的一些文档名称中包含逗号 全部用双引号引起来 并且由于它采用逗号分隔格式 所以我的代码搞乱了并将所有内容推到
  • 我可以告诉 Linux 不要交换特定进程的内存吗?

    有没有办法告诉 Linux 它不应该将特定进程的内存交换到磁盘 它是一个 Java 应用程序 所以理想情况下我希望有一种方法可以从命令行执行此操作 我知道您可以将全局交换性设置为 0 但这明智吗 您可以通过以下方式执行此操作姆洛克尔 2 h
  • 如何将Python包从旧版本安装到新版本?

    我正在使用 python 3 7 最近在 Linux 中安装了 python 3 8 是否有任何 bash 命令或脚本可以获取 3 7 的所有软件包列表并在 3 8 版本中一一安装 我想避免每个包裹都手工完成 注意 我将它们安装在我的系统中

随机推荐

  • 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