【Linux基础及shell脚本】查看、安装、卸载软件

Linux系统下有多种方法来查看、安装和卸载软件,其中包括使用rpmyum命令,通过源码编译安装以及使用二进制文件安装。每种方法都有其独特的优点和缺点,适用于不同的应用场景。

1. RPM方式

优点:可以在离线环境下安装软件。

缺点:无法自动解决软件依赖问题。

以下是一些常用的rpm命令:

  • 安装软件:rpm -ivh
  • 升级安装,如果软件未装则新安装:rpm -Uvh
  • 更新安装,如果软件未装则不安装:rpm -Fvh
  • 卸载软件(使用--nodeps选项可以忽略依赖,强制卸载):rpm -e
  • 查看软件是否安装:rpm -q
  • 查看软件的安装文件列表:rpm -ql
  • 查看软件的配置文件:rpm -qc
  • 查看命令文件由哪个软件安装的:rpm -qf

2. Yum方式

优点:可以自动解决软件依赖问题。

缺点:无法定制化安装。

Yum命令主要分为以下几个部分:

  • 安装软件
    • 安装所有软件:yum install
    • 安装指定软件包:yum install package1
    • 安装程序组:yum groupinstall group1
  • 更新和升级软件
    • 更新所有软件:yum update
    • 更新指定软件包:yum update package1
    • 检查可更新的程序:yum check-update
    • 升级指定软件包:yum upgrade package1
    • 升级程序组:yum groupupdate group1
  • 查找和显示软件信息
    • 显示安装包信息:yum info package1
    • 显示所有已经安装和可以安装的程序包:yum list
    • 显示指定程序包安装情况:yum list package1
    • 显示程序组信息:yum groupinfo group1
    • 根据关键字查找安装包:yum search string
  • 卸载软件
    • 删除程序包:yum remove | erase package1
    • 删除程序组:yum groupremove group1
    • 查看程序包依赖情况:yum deplist package1
  • 清除缓存
    • 清除缓存目录下的软件包:yum clean packages
    • 清除缓存目录下的 headers:yum clean headers
    • 清除缓存目录下旧的 headers:yum clean oldheaders
    • 清除缓存目录下的软件包及旧

的headers:yum clean all

  • 下载软件并以本地文件安装
    • mkdir /http-rpm
    • yum -y install --downloadonly --downloaddir=/http-rpm httpd
    • cd /http-rpm
    • yum -y localinstall *.rpm

3. 源码编译方式

优点:可以根据需求定制化软件安装。

缺点:无法自动解决软件依赖问题。

以安装httpd为例:

  • 首先,你需要安装必要的依赖包:yum -y install apr* pcre*
  • 将httpd源码包复制到/usr/src目录下
  • 解压源码包并进入源码目录
  • 配置编译选项:./configure --prefix=/usr/local/httpd
  • 编译源码:make
  • 安装:make install

下面给出一个通过源码编译方式安装httpd的示例:

# 安装必要的依赖包
yum -y install apr* pcre*

# 复制httpd源码包到/usr/src目录下
cp httpd-2.4.52.tar.gz /usr/src/

# 进入/usr/src目录
cd /usr/src

# 解压源码包
tar xf httpd-2.4.52.tar.gz

# 进入源码目录
cd http-2.4.52

# 配置编译选项
./configure --prefix=/usr/local/httpd

# 编译源码
make

# 安装
make install

4. 二进制安装方式

优点:简化了安装过程。

缺点:无法自动解决软件依赖问题。

以安装mysql 5.7.20为例,以下是具体步骤:

  1. 复制MySQL二进制包,解压并改名到/usr/local/mysql
    • tar xf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
    • mv mysql-5.7.20-linux-glibc2.12-x86_64 /usr/local/mysql
  2. 执行以下命令安装:
    • 添加MySQL路径到环境变量:echo "export PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile
    • 刷新环境变量:source /etc/profile
    • 删除可能冲突的mariadb-libs包:yum remove -y mariadb-libs
    • 新建用户:useradd mysql
    • 创建MySQL数据目录:mkdir -p /usr/local/mysql/data
    • 修改目录权限:chown -R mysql.mysql /usr/local/mysql/data
    • 初始化数据库:/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
    • 将MySQL设置为开机启动:cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
    • 创建MySQL配置文件,并编辑其中的内容(包括服务器配置和客户端配置)
    • 创建MySQL服务文件,编辑内容并设置启动配置
    • 重新启动MySQL服务:systemctl restart mysqld

下面给出通过二进制文件安装MySQL的综合示例:

# 复制MySQL二进制包,解压并改名到/usr/local/mysql
tar xf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.20-linux-glibc2.12-x86_64  /usr/local/mysql

# 添加MySQL路径到环境变量
echo "export PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile

# 刷新环境变量
source /etc/profile

# 删除可能冲突的mariadb-libs包
yum remove -y mariadb-libs

# 新建用户
useradd  mysql

# 创建MySQL数据目录
mkdir -p /usr/local/mysql/data

# 修改目录权限
chown -R mysql.mysql /usr/local/mysql/data

# 初始化数据库
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

# 将MySQL设置为开机启动
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

# 创建并编辑MySQL配置文件
cat >> /etc/my.cnf << end
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
server_id=6
port=3306
[mysql]
socket=/tmp/mysql.sock
prompt=mysql>
end

# 创建并编辑MySQL服务文件
cat >> /etc/systemd/system/mysqld.service << end
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
end

# 重新启动MySQL服务
systemctl restart mysqld