一、软件包管理简介
在Linux系统中经常涉及到软件包的删除和添加,软件包管理是一项重要的任务,可以帮助用户方便地安装、升级和卸载软件包。
软件包分类
-
源代码包:源代码包包含软件的源代码,用户需要将源代码编译成可执行文件,才能在系统中运行软件。
-
二进制包(RPM包、系统默认包):二进制包包含已经编译好的可执行文件,用户可以直接在系统中安装并运行软件。
源代码包
优点:
-
开源:用户可以自由地查看、修改、复制和分发软件源代码。此外,开源软件通常具有丰富的插件和扩展,用户可以根据自己的需要增加或删除某些功能。
-
灵活性:用户可以根据自己的需要对软件进行自定义配置和编译。例如,用户可以通过修改编译选项来优化软件的性能和功能。
-
可靠性:源代码包通常具有开放的源代码,用户可以查看和审查源代码,确保软件的安全性和稳定性。
-
社区支持:大多数开源软件都有一个庞大的社区支持,用户可以通过社区获取支持和帮助,以及参与到软件开发中来。
-
教育性:通过编译源代码,用户可以更好地了解软件的内部工作原理和结构,从而增加编程经验和技能。
缺点:
-
学习门槛高:使用源代码包需要一定的编程知识和经验,对于不熟悉编程的用户来说比较困难,安装过程一旦报错新手很难解决。
-
编译时间长:编译源代码需要一定的时间和计算资源,尤其是对于大型软件项目来说,可能需要数小时或数天的时间。
-
依赖关系复杂:源代码包通常有多个依赖关系,如果缺少某些依赖库或工具,就无法编译软件。
-
安装过程繁琐:由于源代码包需要进行编译和安装,安装过程比较繁琐,需要用户手动执行多个命令。尤其安装较大的软件集合时(如LAMP环境搭建),容易出现错误。
二进制RPM包
优点:
-
简单快速:用户可以直接下载和安装二进制包,无需编译和配置,安装过程简单快速。
-
易于管理:二进制包通常具有预定义的目录结构和依赖关系,用户可以方便地管理和卸载软件,而不会影响系统的其他部分。
-
兼容性强:二进制包通常具有跨平台的特性,可以在不同版本和发行版的Linux系统中使用。
缺点:
-
可定制性低:由于二进制包已经经过编译,用户无法修改其源代码,因此二进制包的可定制性较低,用户无法根据自己的需要进行个性化的修改和定制。
-
依赖关系复杂:二进制包通常需要依赖于其他的库和软件,如果这些依赖关系不满足,可能会导致软件无法正常运行,用户需要自行解决依赖关系问题。
-
兼容性问题:由于不同的Linux发行版和版本之间存在差异,二进制包可能不兼容或存在问题,用户需要选择合适的二进制包或者进行额外的配置和调试。
二、RPM包管理-rpm命令
RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括RedHat、CentOS、SUSE等Linux的分发版本都有采用,可以算是公认的行业标准了。RPM文件在Linux系统中的安装最为简便。
RPM 最早是由 Red Hat 公司提出的软件包管理标准,最初的全称是 Red Hat Package Manager。后来随着版本的升级又融入了许多其他的优秀特性, 成为了Linux中公认的软件包管理标准。被许多Linux发行使用,如:RHEL/CentOS/Fedora, SLES/openSUSE 等。如今RPM是RPM Package Manager的缩写,由RPM社区(rpm.org - Home)负责维护。
RPM包命名规则
RPM(Red Hat Package Manager)包是一种常见的Linux软件包格式,常用于Red Hat、Fedora和CentOS等Linux发行版中。RPM包的命名规则通常遵循以下格式:
<name>-<version>-<release>.<architecture>.rpm
其中:
-
<name>表示软件包的名称,通常为小写字母,可以包含数字和连字符“-”。
-
<version>表示软件包的版本号,通常由数字和小数点组成,例如“1.0”、“2.3.4”等。
-
<release>表示软件包的发布号,还可能包含适应的操作系统,通常由数字和字母组成,例如“1”、“beta2”等。
-
<architecture>表示软件包的架构,通常为小写字母或数字,例如“x86_64”、“i386”等。
RPM包 | nginx-1.18.0-1.el7.x86_64.rpm |
---|---|
nginx | 软件包的名称 |
1.18.0 | 软件包的版本号 |
1 | 软件包的发布号 |
el7 | 适用于CentOS 7 操作系统 |
x86_64 | 适用于 64 位的 x86 架构 |
RPM组件
-
本地数据库
-
rpm及其相关的可执行文件
-
RPM前端工具,如 yum
-
软件包文件
RPM功能
-
安装:将软件从包中解出来,并安装到硬盘。
-
卸载:将软件从硬盘清除。
-
升级:替换软件的旧版本。
-
查询:查询软件包的信息。
-
验证:检验系统中的软件与包中软件的区别。
rpm file 的URL支持
-
ftp://
-
http://
-
rpm包
wget https://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-x64.tar.gz
wget https://download.oracle.com/java/22/latest/jdk-22_linux-aarch64_bin.rpm
wget
下载安装包
在安装之前要安装好我们的yum源,然后才能安装wget
安装wget
yum -y install wget
安装jdk
wget https://repo.huaweicloud.com/java/jdk/8u151-b12/jdk-8u151-linux-x64.tar.gz
安装jdk之前先创建一个文件夹,创建好之后在我们的windows系统里直接把没有解压的jdk拖到我们刚创建好的文件夹里,然后使用命令来解压我们的压缩包
解压jdk:
tar -zxvf jdk-版本号-linux-x64.tar.gz
解压完之后:
要进入我们的配置文件里配置系统变量,配置jdk的系统变量
vim /etc/profile
按 G 进入到最后一行,在这里加上我们jdk的配置
export JAVA_HOME=/usr/java/jdk1.8.0_151
export PATH=$JAVA_HOME/bin:$PATH
配置好之后:wq退出
我们需要让这个配置生效
source /etc/profile
输入完之后,我们可以查看我们的jdk是否存在
java -version
可以看到jdk的版本,也就代表着安装和配置完成。
安装Tomcat
安装tomcat也是和jdk的安装流程是一样的,也是将下载好的tomcat压缩包拖到我们的文件夹里然后进行解压
解压tomcat:
-
解压安装包:使用
tar
命令解压Tomcat安装包到指定目录(如果已创建)。例如,tar -zxvf apache-tomcat-9.x.xx.tar.gz -C /usr/local/tomcat
。这里,apache-tomcat-9.x.xx.tar.gz
是下载的Tomcat安装包文件名,/usr/local/tomcat
是目标目录。
tar -zxvf apache-tomcat-9.x.xx.tar.gz -C /usr/local/tomcat
解压完之后可以看到我们的文件夹里有tomcat:
配置环境变量(可选)
虽然安装Tomcat本身并不需要配置环境变量,但为了方便管理,你可以将Tomcat的bin
目录添加到系统的PATH环境变量中。这样,你就可以在任何目录下通过命令行启动和停止Tomcat了。
编辑/etc/profile
或用户主目录下的.bash_profile
、.bashrc
等文件,添加类似下面的行:
bash复制代码
export CATALINA_HOME=/usr/local/tomcat/apache-tomcat-9.x.xx
export PATH=$PATH:$CATALINA_HOME/bin
然后,执行source /etc/profile
或相应的命令使更改生效。
当然,也可以不用配置
启动Tomcat
-
进入Tomcat的bin目录:使用
cd
命令进入Tomcat安装目录下的bin
子目录。 -
启动Tomcat:在
bin
目录下,执行./startup.sh
脚本来启动Tomcat。如果一切顺利,你将看到Tomcat启动的日志信息。
最后直接在浏览器上输入你虚拟机的ip再加上:8080后就能直接进入到tomcat里面
还有要关闭自己的防火墙,或者给这个ip地址设置要允许通过
安装mysql
安装mysql57
安装的顺序:
安装57版本的mysql
rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
然后在安装mysql的yum
yum -y --enablerepo=mysql57-community install mysql-community-server
但是有时候直接安装l rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm会出错,会出现安装包无法解析或失败
所以安装的时候需要在它之前要先使用这个命令
l rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
所以正确的安装顺序就是:
1、rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
2、rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
3、yum -y --enablerepo=mysql57-community install mysql-community-server
安装成功之后,我们可以启动mysql,然后看一下他的状态
启动mysql:
systemctl start mysqld
查看mysql状态:
systemctl status mysqld
查看mysql密码:
grep "password" /var/log/mysqld.log
登录mysql:
mysql -uroot -p
登录我们的密码后进入到mysql里面
修改密码:
mysql默认的规则:大写的字母小写的字母数字特殊符号8位
所以我们可以将密码设置为Abc123...
alter user 'root'@'localhost' identified by 'Abc123...';
查看密码的规则
show variables like 'validate_password%';
默认的密码规则:
修改密码规则
修改密码长度
set global validate_password_length=4;
修改密码复杂程度
set global validate_password_policy=0;
修改完密码规则之后,我们继续修改新的密码
alter user 'root'@'localhost' identified by 'root';
使用quit退出mysql
用新的密码登录mysql
配置数据库远程连接
先在我们的数据库上创建一个远程连接
use mysql;
update user set host='%' where user='root';
打jar包部署服务器
创建一个文件夹,把我们的jar包拖到这个文件夹里
启动我们的项目
java -jar boot.jar
启动成功之后,直接在浏览器输入我们的ip地址和路径
将项目正确和错误的日志都打印在我们的boot.log文件里
nohup java -jar boot.jar >boot.log 2>&1&
卸载mysql
步骤:
1.输入命令查询系统中已安装的mysql。
rpm -qa |grep -i mysql
2、查看MySQL服务是否开启:
systemctl status mysqld
如开启则须关闭,关闭MySQL服务:
systemctl stop mysqld
3、查找含有MySQL的目录:
find / -name mysql
如下所示:
/var/lib/mysql/var/lib/mysql/mysql/usr/local/mysql/usr/lib64/mysql/usr/share/mysql/usr/bin/mysql/etc/logrotate.d/mysql/etc/selinux/targeted/active/modules/100/mysql
4、删除含有MySQL的目录,依次删除目录(根据自己查找出来的目录进行依次删除):
rm -rf /var/lib/mysql rm -rf /var/lib/mysql/mysql rm -rf /usr/local/mysql rm -rf /usr/lib64/mysql rm -rf /usr/share/mysql rm -rf /usr/bin/mysql rm -rf /etc/logrotate.d/mysql rm -rf /etc/selinux/targeted/active/modules/100/mysql
还有mysql自动创建的用户和组
userdel mysql
grpdel mysql
注意:上面执行完后/etc/my.cnf不会删除掉,需要手动单独删除。
rm -rf /etc/my.cnf
5、查找MySQL安装的组件服务:
rpm -qa|grep -i mysql
如下所示:
mysql-community-release-el7-5.noarchmysql-community-libs-5.6.51-2.el7.x86_64mysql-community-client-5.6.51-2.el7.x86_64mysql-community-server-5.6.51-2.el7.x86_64mysql-community-common-5.6.51-2.el7.x86_646、卸载并删除查找出来的组件服务,依次删除目录(根据自己查找出来的目录进行依次删除):
rpm -ev mysql-community-release-el7-5.noarch rpm -ev mysql-community-server-5.6.51-2.el7.x86_64 rpm -ev mysql-community-client-5.6.51-2.el7.x86_64 rpm -ev mysql-community-libs-5.6.51-2.el7.x86_64 rpm -ev mysql-community-common-5.6.51-2.el7.x86_64
如果删除不了则加上--nodeps。例如:rpm -ev --nodeps mysql-community-libs-5.6.51-2.el7.x86_64
rpm -ev --nodeps mysql-community-libs-5.6.51-2.el7.x86_64
7、卸载完成后检查是否卸载成功:
rpm -qa | grep -i mysql
查看mysql是否存在
systemctl start mysql
如提示Failed to start mysql.service: Unit not found.则说明此时已尽卸载干净了。