Linux 指令之安装软件

在 Linux 上安装软件应该去官网下载比较好,比如去 JDK 的官网下载 JDK ,会给出这样的下载列表。

JDK 下载

对于 Linux 系统来说有三个安装包可以下载,格式分别为 rpm 和 deb 和 tar.gz 。tar.gz 是安装文件的压缩包,rpm 和 deb 分别是 CentOS 体系的 Linux 系统安装包和 Ubuntu 体系的安装包。

1,安装软件

下载各自平台的安装包之后,CentOS 下面使用 rpm -i jdk-xxx.rpm 进行安装,Ubuntu 下面使用 dpkg -i jdk-xxx.deb 进行安装。其中 -i 是 install 的意思。

也可以直接下载 tar.gz 文件,然后使用 tar 工具解压,就可以了:tar xvzf jdk-xxx.tar.gz

2,软件列表

CentOS 中使用 rpm -qa 指令可以查看所有安装软件的列表。其中 -q 就是 query 的意思,-a 就是 all 的意思。

Ubuntu 中使用 dpkg -l 指令可以查看所有安装软件的列表。其中 -l 是 list 的意思。

如果要去搜索某个软件是否安装可以使用管道符和 grep 配合使用,比如 rpm -qa | grep jdk 可以在 CentOS 中搜索出当前电脑是否已经安装了 jdk 。

如果安装的软件很多,并且又不知道关键词,那么可以使用 rpm -qa | more 或者 rpm -qa | less 指令来分页查找。其中 more 的分页只能往后翻,翻到最后一页自动结束返回命令行,less 分页可以前后翻页,但需要输入 q 才能返回命令行,q 是 quit 的意思。

3,删除软件

如果要删除软件,可以使用 rpm -edbkg -r 来删除软件。其中 -e 就是 erase,-r 就是 remove。

4,软件管理工具 yum 和 apt

Linux 中有自己的软件管家工具,CtenOS 中是 yum,Ubuntu 下是 apt。

你可以根据关键词搜索,比如搜索 jdk:yum search jdkapt search jdk ,可以搜索出很多的可以安装的 jdk 版本。

然后选中一个版本使用如下指令进行下载安装:yum install java-xxxapt install openjdk-xxx

这两个软件管家配置下载源地址的文件分别在:/etc/yum.repos.d/CentOS-Base.repo (CentOS)和 /etc/apt/sources.list (Ubuntu)

分别配置如下:

# CentOS
[base]
name=CentOS-$releasever - Base - 163.com
baseurl=http://mirrors.163.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.163.com/centos/RPM-GPG-KEY-CentOS-7

# Unbuntu
deb http://mirrors.163.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ xenial-backports main restricted universe multiverse

这里的配置都用的是国内的节点。

5,配置环境变量

Linux 下配置环境变量使用 export 命令来操作。

export JAVA_HOME=/root/jdk-XXX_linux-x64
export PATH=$JAVA_HOME/bin:$PATH

export 命令仅在当前命令行的会话中起作用,一旦退出登陆进来就没用了。要想永久生效,就得配到用户默认的工作目录下的 .bashrc 文件中,然后手动通过 source .bashrc 让环境变量生效。

6,运行程序

Linux 运行程序有三种方式。

第一种:当前用户有该文件的 x 执行权限,找到文件所在的目录,然后通过 ./filename 来运行该程序。当然如果配置在 PATH 设置的路径下面,就不用 ./ 了,直接输入文件名即可,Linux 会帮我们找。

这样执行的程序可能需要和用户进行交互,例如允许让用户输入,然后输出结果也可以打印到交互命令行中。一旦交互命令行退出,程序就停止运行了。如果我们要运行一些需要 "永远" 在线的程序肯定是不行的,比如我们要运行一个博客程序,总不能一直开着交互命令行。

第二种:后台运行。使用 nohup 命令,这个命令的意思是 no hang up (不挂起),也就是说,当前交互命令行退出的时候,程序还要在。

当然,这个时候程序不能一直霸占命令行,而是应该在后台跑。最后加一个 & ,就表示后台运行。

最后还要处理的就是输出文件,原来输出都是打印在命令行里了,现在后台运行,输出到哪里是要自己配置的。

所以最终的命令形式应该是这样的:nohup command >out.file 2>&1 & 。 这里面 1 表示文件描述符 1,表述标准输出,2 表示文件描述符 2,表述标准错误输出。”2>&1“ 表示标准输出和错误输出合并了。合并输出到 out.file 中。

关闭后台运行的程序:

ps -ef |grep 关键字  |awk '{print $2}'|xargs kill -9

ps -ef 是列出所有正在运行的程序,grep 是匹配到我们要的程序,awk 工具可以对文本进行处理,这里的 awk '{print $2}' 是指第二列的内容,也就是运行程序的 ID ,然后将 ID 通过 xargs 传递给 kill -9,也就是发送给这个运行的程序一个信号,让它关闭。

第三种:以服务的方式运行。

在 Ubuntu 中我们可以使用 apt install mysql-server 来安装 MySQL,然后通过命令 systemctl start mysql 来启动 MySQL,通过 systemctl enable mysql 设置开机启动。之所以成为服务并且能够开机启动,是因为在 /lib/systemd/system 目录下会创建一个 xxx.service 的配置文件,里面定义了如何启动和如何关闭。

在 CentOS 里有点特殊,MySQL 被 Oracle 收购后,因为担心授权问题,改为使用 MariaDB,他是 MySQL 的一个分支。通过 yum install mariadb-server mariadb 进行安装。使用 systemctl start mariadb 来启动,使用 systemctl enable mariadb 设置开机启动。同理,会在 /usr/lib/systemd/system 目录下,创建一个 xxx.service 的配置文件,从而成为一个服务。

推荐阅读更多精彩内容