0


Linux笔记——rpm与yum下载软件命令介绍

系列文章目录

Linux笔记——进程管理Linux笔记——进程管理与网络监控技术讲解Linux笔记——进程管理

Linux笔记——管道相关命令以及shell编程

Linux笔记——磁盘进行分区与挂载介绍

前言

本文主要介绍rpm与yum安装软件包的命令以及相关的案例演示。

一 RPM介绍

1.1 RPM简单介绍

1.2 RPM命令语法

RPM包管理常用命令:
在学习常用命令之前我们一定要知道全包名和包名的区别,如下:

  • 包全名︰操作的包是没有安装的包时,使用包全名。
  • 包名︰操作已经安装的软件包时,使用包名。

RPM有五种操作模式,分别为∶安装、卸载、升级、查询和验证。
下面是rpm命令的选项:

  • -a :查询所有已经安装的包以下两个附加命令用于查询安装包的信息;
  • -i: 安装软件包;
  • -l︰显示安装包中的所有文件被安装到哪些目录下﹔
  • -s∶显示列出文件的状态﹔
  • -p︰查询/验证一个软件包;
  • -f :查询/验证文件属于的软件包;
  • -V:提供更多的详细信息输出﹔
  • -U:升级一个rpm包;
  • -e :卸载一个rpm包;
  • -h :软件包安装的时候列出哈希标记(和-v一起使用效果更好);

1.2.1 rpm安装


示例1:安装一个xxxx.rpm包,并在安装过程中显示正在安装的文件信息及安装进度。
rpm -ivh xxxx.rpm

1.2.2 RPM升级

1.2.3 卸载

1.2.4 查询是否安装

案例举例:

查看所有安装的mysql包

rpm -qa | grep mysql

1.2.5 查询包中文件的安装位置

查看mysql-server安装的位置

rpm -ql mysql-community-server-5.7.42-1.el7.x86_64

1.2.6 查询系统文件属于哪一个RPM包

查看ect下面的passwd文件属于哪一个包

 rpm -qf /etc/passwd

1.2.7 查询安装包的依赖性

查看mysql-server的依赖性

rpm -qR mysql-community-server

这些依赖包一个没有就安装不了。

一些指令示例,如下:

1.3 RPM实战(MySQL安装)

mysql四个包的百度网盘链接

链接:https://pan.baidu.com/s/1HegAQi-Hu9aUzAyUk1sRaw?pwd=eagh
提取码:eagh

1.3.1 第一步骤:MySQL的下载与安装

需要下载四个rpm包,如下:


官方下载地址:https://downloads.mysql.com/archives/community/

将下载的上传到我们的Linux机器上,此处可以用远程软件将软件上传到Linux机器上面,如下:

在安装时software是我自己创建的软件包存放目录。

补充内容:

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。

MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX存储引擎。


MYISAM和INNODB是Mysql数据库提供的两种存储引擎。两者的优劣可谓是各有千秋。INNODB会支持一些关系数据库的高级功能,如事务功能和行级锁,MYISAM不支持。MYISAM的性能更优,占用的存储空间少。所以,选择何种存储引擎,视具体应用而定。

  • 一、InnoDB支持事务,MyISAM不支持,这一点是非常之重要。事务是一种高级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还原,而MyISAM就不可以了。
  • 二、MyISAM适合查询以及插入为主的应用,InnoDB适合频繁修改以及涉及到安全性较高的应用
  • 三、InnoDB支持外键,MyISAM不支持
  • 四、MySQL 在 5.1 之前版本默认存储引擎是 MyISAM,5.1 之后版本默认存储引擎是 InnoDB
  • 五、InnoDB不支持FULLTEXT类型的索引
  • 六、InnoDB中不保存表的行数,如select count() from table时,InnoDB需要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count()语句包含where条件时MyISAM也需要扫描整个表
  • 七、对于自增长的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中可以和其他字段一起建立联合索引
  • 八、清空整个表时,InnoDB是一行一行的删除,效率非常慢。MyISAM则会重建表
  • 九、InnoDB支持行锁(某些情况下还是锁整表,如 update table set a=1 where user like '%lee%'

在安装之前我们需要卸载mariadb-libs,具体命令如下:

rpm -q mariadb-libs

需要卸载mariadb-libs

先安装

yum remove postfix

再卸载rpm -e mariadb-libs
先查询一下mariadb-libs的全包名,如下指令:

rpm -e mariadb-libs-5.5.56-2.el7.x86_64

接着我们按照顺序进行安装,顺序为:mysql-community-common-5.7.42-1.el7.x86_64.rpm,
mysql-community-libs-5.7.42-1.el7.x86_64.rpm,
mysql-community-client-5.7.42-1.el7.x86_64.rpm
mysql-community-server-5.7.42-1.el7.x86_64.rpm
具体的命令如下:
rpm -ivh 全包名即可。

安装四个MySQL的包【顺序不可乱,乱了将会出现依赖错误的情况】

rpm -ivh mysql-community-common-5.7.42-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-5.7.42-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-5.7.42-1.el7.x86_64.rpm

rpm -ivh mysql-community-server-5.7.42-1.el7.x86_64.rpm

可能会出现的错误信息

如果第四个server没有就安装这个包

yum install libaio

1.3.2 第二步骤:启动mysql服务并且重新设置密码

service mysqld start # 启动服务
service mysqld status # 查看服务状态

查看mysql状态

之后进入启动mysql

查看临时密码:

grep password /var/log/mysqld.log

使用临时密码登录:
mysql -u root -h localhost -p 回车后输入上面的临时密码
之后将root的密码修改成固定的密码,修改密码:

alter user 'root'@'localhost' identified by 'Admin2023!';

再次进入mysql里面,此时的密码是刚才修改的密码。

为了方便后续连接外接工具,需要关闭centos的防火墙,将防火墙永久关闭。

查看防火墙,并且永久关闭防火墙。

可以看到原来的用户只是属于localhost的,下面将密码加入到所有人可以使用的情况。

grant all on *.* to root@'%' identified by 'Admin2023!' with grant option;

*此处的grant表示授权,on是在所有数据库的所有表(对象等等)上授予权限,root 为用户名,@表示前面是用户名后面是主机,%代表任意主机, 此处也可以写特定的IP【如:192.168.1.10】或者特定的网段【如:192.168.1.

mysql可以提供user和host决定特定的网段或者IP地址登录

配置完成之后重启服务即可。

1.3.3 第三步骤:使用新密码登录并使用windows终端工具进行远程登录

此处可以参考以下链接内容进行远程登录,此处不再赘述。

MySQL笔记——MySQL数据库介绍以及在Linux里面安装MySQL数据库,对MySQL数据库的简单操作,MySQL的外接应用程序使用说明

内容在第四小节

二 yum介绍

2.1 yum简介

yum ( Yellow dog Updater, Modified )是一个在Fedora和RedHat 以及 SUSE中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

yum的命令形式一般是如下:yum [options] [command] [package ...]
其中的[options]是可选的,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。[command]为所要进行的操作,[package ...]是操作的对象。

概括了部分常用的命令包括:

自动搜索最快镜像插件: yum install yum-fastestmirror
安装yum图形窗口插件: yum install yumex
查看可能批量安装的列表: yum grouplist

yum 会自动识别包的依赖问题,在安装包时,会将包的依赖也安装好。

常用命令如下:

2.2 常见总结

yum的命令形式一般是如下:

yum –选项命令包

yum.reops.d 配置介绍

yum的一切信息都存储在一个叫yum.reops.d目录下的配置文件中,通常位于/etc/yum.reops.d目录下。

在这个目录下面有很多文件,都是.repo结尾的,repo文件是yum源(也就是软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容

例:进入/etc/yum.repo.d目录下,可以修改这个文件 CentOS-Base.repo

2.3 命令详解

1 yum清空缓存列表

yum clean packages 清除缓存目录下的软件包,清空的是(/var/cache/yum)下的缓存
yum clean headers 清除缓存目录下的 headers
yum clean oldheaders 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 清除缓存目录下的软件包及旧的headers

2 yum显示信息

yum list          # yum list显示所有已经安装和可以安装的程序包

这些列表里面的包的来源就是/etc/yum.repo.d。 base  docker-ce-stable  epel/x86_64/metalink   epel  extras   rpmforge  updates    

yum list rpm 显示安装包信息rpm

显示installed ,这里是包名,版本和仓库名

yum list httpd

这里是可获得包,说明还没有安装。

yum info rpm 显示安装包rpm的详细信息

3 yum安装

yum -y install httpd

如果你不加-y他会问你要不要安装。如果你想自己来控制有些包是否安装,这里不要加-y,如果你想自动安装,不进行交互,这里加入-y。这个就是yum 的安装了,非常简单。

安装完之后查询一下

yum list httpd,Installed 说明已经安装好了

4 yum删除

yum remove httpd 删除程序包httpd ,也就是卸载。

yum deplist rpm 查看程序rpm依赖情况

5 yum包的升级

yum check-update 检查可更新的程序
    yum update 全部更新,升级所有包,以及升级软件和系统内核,这就是一键升级。他可以更新CentOS的内核到最新版本。
    yum update package1 更新指定程序包package1,   
    yum upgrade package1 升级指定程序包package1

6 yum 解决依赖的原理

YUM 解决依赖关系问题,自动下载软件包。yum是基于C/S架构。C指的是客户端, S指的是服务器,想ftp,http,file、关于yum为什么能解决依赖关系:所有的Yum 源里面都有repodata,它里面是有XML格式文件,里面有说明需要什么包。例如上堂课实验的:mysql-server  rpm 需要:perl-DBI ,python,或者是php等等包。

7 yum 组的管理

yum进行安装的时候可以一组一组的进行安装,先来看看有那些组yumgrouplist。可用的组有这么多。

Available Environment Groups:首先是可用的环境分组。

  Compute Node  计算节点

  Infrastructure Server 基础设施服务器

  File and Print Server  文件和打印服务

  Cinnamon Desktop   Cinnamon桌面

Installed Groups:已安装的组,开发工具

  Development Tools

Available Groups:可用的组。

如果我们想以组的方式来安装,加入我想安装安全工具:

输入:yumgroupinstall "Security Tools"

看到这里询问是否要安装,当然是N不安装了。如果想直接安装,不询问的话,这里也在后面加上选项 –y。
    yum groupremove group1 删除程序组group1

2.4 其它

1 安装

yum install 全部安装
yum install package1 安装指定的安装包package1
yum groupinsall group1 安装程序组group1

2 更新和升级

yum update 全部更新
yum update package1 更新指定程序包package1
yum check-update 检查可更新的程序
yum upgrade package1 升级指定程序包package1
yum groupupdate group1 升级程序组group1

3 查找和显示

yum info package1 显示安装包信息package1
yum list 显示所有已经安装和可以安装的程序包
yum list package1 显示指定程序包安装情况package1
yum groupinfo group1 显示程序组group1信息yum search string 根据关键字string查找安装包

4 删除程序

yum remove | erase package1 删除程序包package1
yum groupremove group1 删除程序组group1
yum deplist package1 查看程序package1依赖情况

5 清除缓存

yum clean packages 清除缓存目录下的软件包
yum clean headers 清除缓存目录下的 headers
yum clean oldheaders 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 清除缓存目录下的软件包及旧的header

三 一些常用的SHELL

3.1 Dos 攻击防范(自动屏蔽攻击 IP)

#!/bin/bash
DATE=$(date +%d/%b/%Y:%H:%M)
LOG_FILE=/usr/local/nginx/logs/demo2.access.log
ABNORMAL_IP=$(tail -n5000 $LOG_FILE |grep $DATE |awk '{a[$1]++}END{for(i in a)if(a[i]>10)print
i}')
for IP in $ABNORMAL_IP; do
if [ $(iptables -vnL |grep -c "$IP") -eq 0 ]; then
iptables -I INPUT -s $IP -j DROP
echo "$(date +'%F_%T') $IP" >> /tmp/drop_ip.log
fi
done

3.2 MySQL 数据库备份单循环

#!/bin/bash
DATE=$(date +%F_%H-%M-%S)
HOST=localhost
USER=backup
PASS=123.com
BACKUP_DIR=/data/db_backup
DB_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "show databases;" 2>/dev/null |egrep -v
"Database|information_schema|mysql|performance_schema|sys")
for DB in $DB_LIST; do
BACKUP_NAME=$BACKUP_DIR/${DB}_${DATE}.sql
if ! mysqldump -h$HOST -u$USER -p$PASS -B $DB > $BACKUP_NAME 2>/dev/null; then
echo "$BACKUP_NAME 备份失败!"
fi
done

3.3 MySQL 数据库备份多循环

#!/bin/bash
DATE=$(date +%F_%H-%M-%S)
HOST=localhost
USER=backup
PASS=123.com
BACKUP_DIR=/data/db_backup
DB_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "show databases;" 2>/dev/null |egrep -v
"Database|information_schema|mysql|performance_schema|sys")
for DB in $DB_LIST; do
BACKUP_DB_DIR=$BACKUP_DIR/${DB}_${DATE}
[ ! -d $BACKUP_DB_DIR ] && mkdir -p $BACKUP_DB_DIR &>/dev/null
TABLE_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "use $DB;show tables;" 2>/dev/null)
for TABLE in $TABLE_LIST; do
BACKUP_NAME=$BACKUP_DB_DIR/${TABLE}.sql
if ! mysqldump -h$HOST -u$USER -p$PASS $DB $TABLE > $BACKUP_NAME 2>/dev/null; then
echo "$BACKUP_NAME 备份失败!"
fi
done
done

3.4 服务器系统配置初始化脚本

#/bin/bash
设置时区并同步时间
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
if ! crontab -l |grep ntpdate &>/dev/null ; then
(echo "* 1 * * * ntpdate time.windows.com >/dev/null 2>&1";crontab -l) |crontab
fi
禁用selinux
sed -i '/SELINUX/{s/permissive/disabled/}' /etc/selinux/config
关闭防火墙
if egrep "7.[0-9]" /etc/redhat-release &>/dev/null; then
systemctl stop firewalld
systemctl disable firewalld
elif egrep "6.[0-9]" /etc/redhat-release &>/dev/null; then
service iptables stop
chkconfig iptables off
fi
历史命令显示操作时间
if ! grep HISTTIMEFORMAT /etc/bashrc; then
echo 'export HISTTIMEFORMAT="%F %T whoami "' >> /etc/bashrc
fi
SSH超时时间
if ! grep "TMOUT=600" /etc/profile &>/dev/null; then
echo "export TMOUT=600" >> /etc/profile
fi
禁止root远程登录
sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
禁止定时任务向发送邮件
sed -i 's/^MAILTO=root/MAILTO=""/' /etc/crontab
设置最大打开文件数
if ! grep "* soft nofile 65535" /etc/security/limits.conf &>/dev/null; then
cat >> /etc/security/limits.conf << EOF
* soft nofile 65535
* hard nofile 65535
EOF
fi
系统内核优化
cat >> /etc/sysctl.conf << EOF
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_tw_buckets = 20480
net.ipv4.tcp_max_syn_backlog = 20480
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_fin_timeout = 20
EOF
减少SWAP使用
echo "0" > /proc/sys/vm/swappiness
安装系统性能分析工具及其他
yum install gcc make autoconf vim sysstat net-tools iostat if

3.5 监控 100 台服务器磁盘利用率脚本

#!/bin/bash
HOST_INFO=host.info
for IP in $(awk '/^[^#]/{print $1}' $HOST_INFO); do
USER=$(awk -v ip=$IP 'ip==$1{print $2}' $HOST_INFO)
PORT=$(awk -v ip=$IP 'ip==$1{print $3}' $HOST_INFO)
TMP_FILE=/tmp/disk.tmp
ssh -p $PORT $USER@$IP 'df -h' > $TMP_FILE
USE_RATE_LIST=$(awk 'BEGIN{OFS="="}/^\/dev/{print $NF,int($5)}' $TMP_FILE)
for USE_RATE in $USE_RATE_LIST; do
PART_NAME=${USE_RATE%=}
USE_RATE=${USE_RATE#=}
if [ $USE_RATE -ge 80 ]; then
echo "Warning: $PART_NAME Partition usage $USE_RATE%!"
fi
done
done

总结

以上就是今天的内容~

欢迎大家点赞👍,收藏⭐,转发🚀,
如有问题、建议,请您在评论区留言💬哦。

最后:转载请注明出处!!!

标签: linux 笔记 运维

本文转载自: https://blog.csdn.net/m0_56006701/article/details/131883007
版权归原作者 张小鱼༒ 所有, 如有侵权,请联系我们删除。

“Linux笔记——rpm与yum下载软件命令介绍”的评论:

还没有评论