【Linux基础及shell脚本】查看、安装、卸载软件
Linux系统下有多种方法来查看、安装和卸载软件,其中包括使用rpm、yum命令,通过源码编译安装以及使用二进制文件安装。每种方法都有其独特的优点和缺点,适用于不同的应用场景。
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-rpmyum -y install --downloadonly --downloaddir=/http-rpm httpdcd /http-rpmyum -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为例,以下是具体步骤:
- 复制MySQL二进制包,解压并改名到
/usr/local/mysqltar xf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gzmv 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配置文件,并编辑其中的内容(包括服务器配置和客户端配置)
- 创建MySQL服务文件,编辑内容并设置启动配置
- 重新启动MySQL服务:
systemctl restart mysqld
- 添加MySQL路径到环境变量:
下面给出通过二进制文件安装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