【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-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为例,以下是具体步骤:
- 复制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配置文件,并编辑其中的内容(包括服务器配置和客户端配置)
- 创建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