乐趣区

关于linux:Linux-下配置命令工具的解析

本文集体博客地址:https://www.leafage.top/posts/detail/2212501AB

不批改环境变量文件,使得装置服务能够全局应用

以 maven 为例来进行阐明,很多 linux 服务器上都会装置各种根底服务和软件,用来执行一些操作,例如 java 代码的编译、打包须要用 maven 工具,其有一个命令 mvn 来执行各种操作。

装置各种服务有很多办法,然而可能会因为各种起因须要的版本不是零碎默认的仓库中提供的,例如 ubuntu 零碎下默认 maven 版本号为 3.6.2,这个版本在编译 jdk 17 的时候会有问题,所以须要更新到最新的版本 3.8.x 来解决这个问题。这时候只能下载最新的 maven 来编译装置。然而如果之前曾经装置过了 maven,这个时候不想毁坏其之前的各种配置,该如果做呢?

首先咱们先理解下 linux 下各版本的零碎默认的工具都是如何装置的,以及初始化配置是怎么配置的。在 ubuntu 零碎下,maven 文件会放在 /usr/share/maven 下,其中子目录 conf 软连贯到 /etc/maven 目录、其中 /usr/share/maven/bin/m2.conf 文件软连贯到 /etc/maven/m2.conf,这些是文件的寄存目录和配置文件的门路。那接下来如何配置使得 mvn 命令工具可能全局应用,在很多文章中会让配置 /etc/profile 或者 .bashrc 或者 .profile 文件,加上 export /xxx/xxx 来实现。

同样的来看默认装置的 maven 是如何配置,通过命令:

whereis mvn

执行后果如下:

root@localhost:/usr/bin# whereis mvn
mvn: /usr/bin/mvn /usr/share/man/man1/mvn.1.gz

那看到了 mvn 的门路为:/usr/bin/mvn,另外一个指向 mvn.1.gz 能够不必管,默认装置的会在文件目录 /usr/share 下有一个 xx.gz 文件,外面是各种日志打印的货色,就是在装置时能看到的进度那些信息。

去 /usr/bin/ 看一下 mvn 的具体信息,它软连贯到了 /etc/alternatives 目录下,如下所示:

那接着看 /etc/alternatives/mvn 这个的具体信息,如下:

这里的软连贯间接指向了具体 maven 存储目录中的脚本文件。

那为什么这里通过两个软连贯就可能全局应用这个 mvn 命令工具了呢?
这里须要理解 linux 零碎的软件多版本切换命令 update-alternatives,它的治理目录是:/etc/alternatives,它的治理形式就是在 /usr/bin 目录和 /etc/alternatives 目录下建设工具具体版本的软连贯来保障多个版本的同一工具可运行,所以当在 /usr/bin 和 /etc/alternatives 目录下建设了具体执行脚本的软连贯后,就能够全局执行这个脚本的命令。

大略理解后,来进行 maven 3.8.x 的配置。首先解压缩 apache-maven-xx.tar.gz 到 /usr/share/maven,具体命令示例如下:

tar -zxvf apache-maven-xx.tar.gz -C /usr/share/maven

而后复制 /usr/share/maven 目录下的 conf 目录、bin 目录下的 m2.conf 文件到 /etc/maven 目录下,而后对两者建设软连贯(批改源目录、文件名,而后建设,否则因为文件已存在,无奈建设软连贯),实现之后,在任意目录下执行 mvn -v 命令查看 maven 版本信息,看是否可行。个别到这里会胜利执行并看到如下信息:

root@localhost:/usr/bin# mvn -v
Apache Maven 3.8.4 (9b656c72xxxxxxx159fe39b537)
Maven home: /usr/share/maven
Java version: 17.0.1, vendor: Private Build, runtime: /usr/lib/jvm/java-17-openjdk-amd64
// 其余省略 

并不需要批改任何的环境配置,而且这种形式更平安,不会影响其余曾经存在的配置,当然如果笼罩了之前的文件或者配置的状况除外。

退出移动版