linux rpm包

rpm包,软件包,程序包,以.rpm结尾的包

我们刚开始安装的Linux系统是最小化安装(minimol),只安装系统,不安装不必要的软件包

刚开始vim,ifconfig,tree等命令都没有,当然也可以安装系统的时候添加安装命令

Centos-7-x86_64-DV , 里面的/mnt/Packages目录里面,都是以 .rpm结尾的程序包

一个挂载点挂载一个光驱,有时候挂载会被中断,注意,有时候可能要手动连接光驱,在虚拟机设置,或者右下角可以连接光驱,网卡的连接

注意:“挂载点”的目录需要以下几个要求:

(1)目录事先存在,可以用mkdir命令新建目录;

(2)挂载点目录不可被其他进程使用到;

(3)挂载点下原有文件将被隐藏

光驱里面的rpm包

mount : 挂载  像是mv移动内容 
mount /dev/cdrom 挂载目录

# 1.将光盘(ISO)插入光驱中(然后连接光驱)(这样才能挂载)(虚拟机界面设置--插入光驱)

# 挂载U盘(硬盘)
[root@oldboy .certs]# ll /dev/sda
brw-rw---- 1 root disk 8, 0 Apr 21 18:58 /dev/sda
载入 u 盘,需键入以下命令:# mount  /dev/sda   /mnt/usb_disk
成功后,即可使用 u 盘了, 文件就在目录 /mnt/usb 下
卸载u盘:在使用完u盘后,在拔出前需要先键入卸载U盘命令 命令如下:# umount /mnt/usb(推出)

# 2.创建挂载目录
[root@www ~]# mkdir /guangqu  自己创建挂载目录
/mnt目录是系统创建的,专门用来挂载光驱的

# 3.将光驱挂载在/guangqu目录
[root@www ~]# mount /dev/cdrom /guangqu  (挂载到哪都可以),在挂载的目录就可以看到光驱或者U盘里面的内容了
mount: /dev/sr0 is write-protected, mounting read-only(挂载成功)

# 4.查看挂载情况  挂载之后就可以用命令查看光驱的内容了
[root@www ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        476M     0  476M   0% /dev
tmpfs           487M     0  487M   0% /dev/shm (闪存)
tmpfs           487M  7.6M  479M   2% /run
tmpfs           487M     0  487M   0% /sys/fs/cgroup
/dev/sda3        19G  4.3G   15G  23% /  第一个硬盘的第三个分区
/dev/sda1       497M  124M  374M  25% /boot
tmpfs            98M     0   98M   0% /run/user/0
/dev/sr0        4.3G  4.3G     0 100% /guangqu  (=光驱大小)
df -h 只会显示一个光驱的挂载点

# 5.查看挂载的目录中所有文件(镜像中的文件)
[root@www guangqu]# ll -a (-a查看隐藏文件,-t按时间查看 近-远)
total 689
drwxrwxr-x.  8 root root   2048 Nov 26  2018 .
dr-xr-xr-x. 18 root root    239 Apr 16 10:56 ..
-rw-rw-r--.  1 root root     14 Nov 26  2018 CentOS_BuildTag
-rw-r--r--.  1 root root     29 Nov 26  2018 .discinfo
drwxr-xr-x.  3 root root   2048 Nov 26  2018 EFI
-rw-rw-r--.  1 root root    227 Aug 30  2017 EULA
-rw-rw-r--.  1 root root  18009 Dec 10  2015 GPL
drwxr-xr-x.  3 root root   2048 Nov 26  2018 images
drwxr-xr-x.  2 root root   2048 Nov 26  2018 isolinux
drwxr-xr-x.  2 root root   2048 Nov 26  2018 LiveOS
drwxrwxr-x.  2 root root 663552 Nov 26  2018 Packages
drwxrwxr-x.  2 root root   4096 Nov 26  2018 repodata
-rw-rw-r--.  1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-7
-rw-rw-r--.  1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r--.  1 root root   2883 Nov 26  2018 TRANS.TBL
-rw-r--r--.  1 root root    354 Nov 26  2018 .treeinfo

[root@oooppp base]# cp -a /mnt/Packages/* .  拷贝光驱

[root@oldboy mnt]# cd Packages/   镜像文件

[root@oldboy Packages]# touch pp  root也不能在/mnt/Packages 下创建文件
touch: cannot touch ‘pp’: Read-only file system
[root@oldboy Packages]# ll -d /mnt/Packages/ 
drwxrwxr-x 2 root root 671744 Sep 12  2019 /mnt/Packages/
[root@oldboy mnt]# ll /mnt/ -d
drwxr-xr-x 8 root root 2048 Sep 12  2019 /mnt/
[root@oldboy mnt]# touch pp     
touch: cannot touch ‘pp’: Read-only file system
/mnt/  /mnt/Packages 这两个目录是只读的,root也不能在里面创建删除移动文件

[root@oldboy Packages]# ll tr     在Packages目录下有全是以.rpm 结尾的包,在这个目录下用TAB键可以补全一大串	,TAB或者加个*(一个命令查看多个文件)

trace-cmd-2.7.0-3.el7.x86_64.rpm    tree-1.6.0-10.el7.x86_64.rpm
traceroute-2.0.22-2.el7.x86_64.rpm  trousers-0.3.14-2.el7.x86_64.rpm
tracker-1.10.5-6.el7.x86_64.rpm     光驱所有命令包
[root@oldboy Packages]# rpm -ivh tree-1.6.0-10.el7.x86_64.rpm 
[root@oldboy ~]# rpm -ivh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpm 
Preparing...                          ################################# [100%]
	package tree-1.6.0-10.el7.x86_64 is already installed
下载的时候在Packzges下或者接绝对路径

[root@oldboy ~]# which rpm  Linux自带的内建命令
/usr/bin/rpm

#使用rpm命令安装 .rpm包
-i:安装
-v:显示安装信息
-h:显示安装进度
--test:安装前测试

--force:强制安装
--nodeps:忽略依赖关系

-q:查看指定的软件是否安装
-qa:查看系统中已安装的rpm包

-ql:查看指定软件包所安装的所有文件 包括目录  服务或包---绝对路径文件
-qc:查看指定软件包的配置文件               服务或包---绝对路径文件
-qf:查看一个文件或者一个目录属于哪个RPM  绝对路径文件----rpm
-qf可以和which一起用

-qd:查看一个包的man帮助和信息

[root@oldboy Packages]# rpm -qd tree  只能接小名
/usr/share/doc/tree-1.6.0/LICENSE
/usr/share/doc/tree-1.6.0/README
/usr/share/man/man1/tree.1.gz
[root@oldboy Packages]# rpm -qd tree-1.6.0-10.el7.x86_64.rpm  全名
package tree-1.6.0-10.el7.x86_64.rpm is not installed
[root@oldboy Packages]# rpm -qd tree-1.6.0-10.el7.x86_64  全名不带.rpm(无聊)
/usr/share/doc/tree-1.6.0/LICENSE
/usr/share/doc/tree-1.6.0/README
/usr/share/man/man1/tree.1.gz
[root@oldboy Packages]# zcat /usr/share/man/man1/tree.1.gz

[root@oldboy app]# rpm -qf $(which ls)
rpm: --color=auto': unknown option
[root@oldboy Packages]# rpm -qf $(which ls|tail -1)
coreutils-8.22-24.el7.x86_64
[root@oldboy app]# which ls
alias ls='ls --color=auto'
	/usr/bin/ls
[root@oldboy app]# rpm -qf /usr/bin/ls
coreutils-8.22-24.el7.x86_64


-q --scripts:查询rpm安装前和安装后执行的脚本 (包的全名,不带.rpm,一般看服务),一般查看服务
[root@oldboy Packages]# rpm -q --scripts nginx
postinstall scriptlet (using /bin/sh):

-qi:查看指定rpm软件的详细信息(安装不安装都可以看到)
-qd:查看指定软件包的man帮助

-qip:查看未安装的rpm详细信息
[root@oldboy Packages]# rpm -qip tree-1.6.0-10.el7.x86_64.rpm 
Name        : tree
Version     : 1.6.0
Release     : 10.el7

-qlp:查看未安装的rpm会产生的目录
[root@oldboy Packages]# rpm -qlp tree-1.6.0-10.el7.x86_64.rpm 
/usr/bin/tree
/usr/share/doc/tree-1.6.0
/usr/share/doc/tree-1.6.0/LICENSE

nginx-1.16.1

## rpm 升级命令
-U:如果老版本存在,就升级,如果不存在就安装,
-f:升级,但是老版本必须存在
[root@localhost zabbix]# rpm -Uvh zabbix-agent-3.4.9-1.el7.x86_64.rpm
找到了新的 rpm包 之后,必须加-U才能升级,不能直接-ivh
warning: zabbix-agent-3.4.9-1.el7.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:zabbix-agent-3.4.9-1.el7         ################################# [ 50%]
Cleaning up / removing...
   2:zabbix-agent-3.0.0-1.el7         ################################# [100%]
[root@localhost zabbix]# rpm -qa|grep zabbix
zabbix-agent-3.4.9-1.el7.x86_64

-e:卸载
卸载有依赖关系的包,要先卸载依赖包
rpm安装的时候要先安装依赖包,卸载的时候要先卸载依赖包

[root@oldboy ~]# cd /mnt/Packages/  进入rpm包所在路径,(绝对路径)
[root@oldboy Packages]# rpm -e tree-1.6.0-10.el7.x86_64.rpm 
error: package tree-1.6.0-10.el7.x86_64.rpm is not installed
[root@oldboy Packages]# rpm -e tree-1.6.0-10.el7.x86_64 (不能接.rpm)
[root@oldboy Packages]# tree
-bash: tree: command not found
[root@oooppp ~]# rpm -e /mnt/Packages/tree-1.6.0-10.el7.x86_64
error: package /mnt/Packages/tree-1.6.0-10.el7.x86_64 is not installed


从各大linux服务官网获取rpm包

http://nginx.org/download/nginx-1.18.0.tar.gz

从国内开源镜像站下载指定的rpm包

1.从阿里云镜像站下载rpm包
wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/mesa-libGL-18.3.4-5.el7.i686.rpm

2.从网易镜像站下载rpm包
http://mirrors.163.com/centos/7/os/x86_64/Packages/ImageMagick-c%2b%2b-6.9.10.68-3.el7.i686.rpm

3.从中科大镜像站下载rpm包
http://mirrors.ustc.edu.cn/centos/7/os/x86_64/Packages/GConf2-3.2.6-8.el7.i686.rpm

同步中科大所有的rpm包到当前目录(小心被封)
rsync rsync://rsync.mirrors.ustc.edu.cn/repo/ .

使用yum安装rpm包

yum会自动解决依赖,但是如果镜像站中没有依赖包,那肯定安装不了

nginx只能用yum,通过/etc/yum.repos.d ,从仓库下载,如果本地仓库出现问题,就会报错

# 只能列出在/etc/yum.repos.d/目录下以.repo结尾的文件中enable=1的仓库中所有可安装的rpm包(全部的包)--网址文件仓库里的所有包
1.[root@oooppp ]# yum list

[root@oooppp ]# cd /etc/yum.repos.d/
[root@oooppp yum.repos.d]# vim CentOS-Base.repo
[centosplus] #仓库名,可以随意指定,一个网址(.repo)文件里有多个仓库
name=CentOS-$releasever - Plus - mirrors.aliyun.com #可以随便写(或不写)
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
        http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/                                             http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1                                7                     x86_64
enabled=0    #不启用
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

enabled=1                    #是否开启仓库,1为开启,0为关闭
gpgcheck=0                #是否检查gpgkey,1为开启,0为关闭


# 查看安装包的详细信息,类似于rpm -qi
2.yum info
[root@oooppp Packages]# yum info tree  无论包存不存在,都可以看到详细信息(联网)
[root@localhost yum.repos.d]# yum info nginx

rpm -qi xx 
[root@oooppp Packages]# rpm -qip net-tools-2.0-0.25.20131004git.el7.x86_64
如果包没安装就显示不存在,如果包安装了,并且命令行没错,就显示这个包的-详细信息



## yum 安装命令,yum既可以安装镜像源里面的包,也可以安装本地的包

3.# 安装 任何源 的rpm包:1仓库中的,2指定url中(yum只能下载URL中的.rpm包,别的包不能下载)
[root@localhost ~]# yum install -y nginx (仓库,不是光驱)
[root@localhost yum.repos.d]# yum install -y  (镜像站仓库URL,也就是右键rpm包,不一定是仓库,不是以.rpm结尾的包yum不能下载,wget下载了也安装不了)http://test.driverzeng.com/MySQL_plugins/Atlas-2.2.1.el6.x86_64.rpm

# 安装在本地的rpm包,并且解决依赖 3本地
系统里有的包,或者光驱里的包,yum localinstall会先连接外网,下载依赖包,然后和本地的软件包一起安装,如果镜像库没有依赖包,那也白搭
yum localinstall -y  xxx.rpm  (~= rpm -ivh)
4.[root@oooppp Packages]# yum localinstall -y tree-1.6.0-10.el7.x86_64.rpm

curl URL,wget下载包,但是并没有安装,用yum localinstall -y可以安装下载了没有安装的包,速度快,比去镜像站快


先下载curl源,再下载wget源,再下载epel源
下载图片
[root@oldboy ~]# curl -o hhh   https://pics5.baidu.com/feed/7c1ed21b0ef41bd5c205e58dfbcf05cd39db3d14.jpeg?token=de684c9038bdb0ecf027780393ce3cae
[root@oldboy ~]# wget -o jjj https://pics5.baidu.com/feed/7c1ed21b0ef41bd5c205e58dfbcf05cd39db3d14.jpeg?token=de684c9038bdb0ecf027780393ce3cae
[root@oldboy ~]#curl baidu.com >1.txt  叽里呱啦
[root@oldboy ~]# curl https://www.baidu.com/?tn=62095104_19_oem_dg>11.txt
curlbai百度的URL
[root@oldboy ~]# wget baidu.com >11.txt 啥也没有
[root@oldboy ~]# wget  https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/389-ds-base-1.3.9.1-10.el7.x86_64.rpm
[root@oldboy~]# curl https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/GConf2-3.2.6-8.el7.i686.rpm    窗口炸了
## yum 误删除配置文件,重装服务
5.yum reinstall
install  reinstall remove localinstall(安装wget下载的包)
-y:(yes)安装
[root@oooppp yum.repos.d]# yum reinstall -y nginx  重装nginx配置文件
这个时候使用nginx.repo网址文件,连接nginx官网下载安装配置文件(find找不到nginx.org)
[root@oooppp yum.repos.d]# rpm -qc nginx   
/etc/logrotate.d/nginx   
故意删除的配置文件,reinstall 之后,可以重新找到相关的配置文件,前提是仓库可以用
卸载重装软件也可以解决误删除配置文件问题(不实用),误删除配置文件可导致软件重启之后不能使用

## 手动写入 nginx.repo  ,安装好nginx仓库才能使用nginx
nginx.org--下载--预编译包--RHEL / CentOS
[root@zls ~yum.repos.d]# vim nginx.repo  粘贴以下内容
[nginx稳定]  名字可以随便写
name = nginx稳定仓库
baseurl = http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck = 1
已启用= 1
gpgkey = https://nginx.org/keys/nginx_signing.key
module_hotfixes = true

yum xx 【y/d/n】: 下载安装/下载不安装/不下载不安装
[root@zls ~]# rpm -qa | grep xx  查看软件包是否安装
[root@oldboy ~]# find /var/cache/yum/ -type f -name '*.rpm'
/var/cache/yum/x86_64/7/base/packages/boost-filesystem-1.53.0-27.el7.x86_64.rpm   下载不安装,包的默认存放路径,如果安装了,放光驱里

## 卸载软件---------有时候会卸载失败,下载的时候会自动选择下载依赖包,卸载的时候也会尝试卸载相关的依赖包,如果有些包不能删除,那么卸载失败
如:/etc/yum/protected.d/systemd.conf
当作为系统实例运行时, systemd 将会按照 system.conf 配置文件 以及 system.conf.d 配置目录中的指令工作; 当作为用户实例运行时, systemd 将会按照 user.conf 配置文件 以及 user.conf.d 配置目录中的指令工作。 这些配置文件包含了控制 systemd 行为的设置
yum remove
[root@zls ~]# yum erase samba -y   橡皮
6.[root@zls ~]# yum remove samba -y  自动卸载依赖(rpm不会)



7.## yum更新
# 哪些软件需要升级 ,升级的话不会跨大版本,可以跨小版本
[root@oldboy ~]# yum check-update
NetworkManager.x86_64                            1:1.18.0-5.el7_7.2                      update

# 更新指定软件
[root@oldboy ~]# yum update -y hostname 

# 全部更新(十分危险)(小心更新内核,不兼容)
[root@oldboy ~]# yum update -y    不知是更新软件,还会更新内核,可能会导致软件包不兼容
[root@oldboy ~]# cat /etc/redhat-release  查看系统版本
CentOS Linux release 7.7.1908 (Core)
[root@oldboy ~]# yum list | grep kernel  查看内核相关包
[root@oldboy ~]# yum list | grep update  查看更新仓库

8.## yum仓库相关指令
# yum list 列出所有仓库中所有的包
[root@oldboy yum.repos.d]# yum list |wc -l
24026
#统计指定URL中,以.rpm结尾的包的个数
[root@oldboy ~]# curl -s https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/x86_64/ |egrep '.rpm'| awk -F'"' '{print $2}'|wc -l

[root@oldboy yum.repos.d]# yum list | grep tree
tree.x86_64                               1.6.0-10.el7                 @base
#列出yum源可用的软件仓库
[root@zls ~]# yum repolist
#列出全部yum源可用和禁用的仓库
[root@zls ~]# yum repolist all
repo id               repo name                                               status (状态)
base/7/x86_64         CentOS-7 - Base - mirrors.aliyun.com                    enabled: 10,097
centosplus/7/x86_64   CentOS-7 - Plus - mirrors.aliyun.com                    disabled
contrib/7/x86_64      CentOS-7 - Contrib - mirrors.aliyun.com                 disabled(禁用,也就是enabled=0)


[root@localhost yum.repos.d]# yum-config-manager --enable zls_zabbix
[root@localhost yum.repos.d]#yum-config-manager --disable
指定仓库名,网址文件[]里面的,也就是yum repolist all (repo id),小心名字混淆
--enable  也就是 --enable=1
vim 或者sed

9.# 如果不知道命令属于那个包,使用provides
[root@localhost ~]# yum provides */ifconfig   查看命令
[root@oooppp ~]# yum provides /etc/hostname  查看文件


换源后,原先中断的缓存重新用新源下载
10.# 换源:先清除缓存(不清除缓存的话)
yum clean all
yum clean Packages(指定包)
# 换源:再更新缓存(生成新的缓存)
yum makecache
[root@oooppp ~]# vim /etc/yum.conf  软件包缓存(下载)目录。保存安装包
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0

#当yum下载不了或者源报错,可以尝试:
1. yum clean all
2. 去阿里云找到源,下载
3. yum makecache
4. 重装软件包

11.#列出已经安装和所有可使用的 软件组 (安装虚拟机最小化安装那点东西)
    [root@zls ~]# yum groups list



#安装一整个组的软件
[root@zls ~]# yum groups install +    Development tools \
Compatibility libraries \
Base Debugging Tools

#yum删除包组
[root@zls ~]# yum groups remove  -y Base




12.## yum 历史命令
yum只能单线程安装软件,也就是说ym下载的同时不能查看yum历史命令
[root@qls yum.repos.d]# yum history  查看yum历史命令,显示不完整

Loaded plugins: fastestmirror
ID     | Login user               | Date and time    | #Action(s)      | Altered
-------------------------------------------------------------------------------
     9 | root <root>              | 2020-04-14 20:48 | Install        |    5  <
     8 | root <root>              | 2019-12-28 23:18 | Erase          |    1 >E
     7 | root <root>              | 2019-11-26 22:36 | Install        |    1   
     6 | root <root>              | 2019-11-26 22:34 | Install        |    1   
     5 | root <root>              | 2019-11-26 22:33 | Install        |    1   
     4 | root <root>              | 2019-11-26 22:23 | I, U           |   11   
     3 | root <root>              | 2019-11-26 21:59 | Install        |   62  <
     2 | root <root>              | 2019-11-26 21:49 | Install        |    1 >E
     1 | System <unset>           | 2019-11-26 20:22 | Install        |  308   

[root@qls yum.repos.d]# yum history -y info 8(ID) 查看指定的历史命令和结果

# 撤销指定的安装内容
[root@qls yum.repos.d]# yum history -y undo 8  撤销指定的yum命令的结果(-y)

总结

进入ftp目录

[root@yum_server centos]# cd /var/ftp/

同步中科大的源--注意加上repo

[root@yum_server ftp]# rsync -avzP rsync://rsync.mirrors.ustc.edu.cn/repo/nginx ./ 小心源的分类

yum 安装命令

yum install ## 任何地方:1.YUM仓库 2.本地文件 3.指定的url(.rpm)
yum localinstall ## 安装本地rpm包

查询安装包

yum provides

yum可安装的rpm包

yum list
yum repolist all
rpm -qa |wc -l

yum仓库相关命令

yum repolist
yum repolist all
yum-config-manager --enable 仓库名 打开
yum-config-manager --disable 仓库名 关闭

[root@oldboy ~]# yum provides yum-config-manager
[root@oldboy ~]# yum install -y yum-utils

yum缓存相关命令

yum clean packages
yum clean headers
yum clean oldheaders

yum clean (尽量用all) 清除
= yum clean all

yum makecache 生成

yum更新升级

yum update
yum update php
yum check-update
yum upgrade php

yum组包命令

yum groupupdate 升级组包
yum groups list
yum groups install (GNOME Desktop)

yum卸载

yum remove
yum group remove
yum erase 卸载

yum历史

yum history
[root@localhost ~]# yum history info 29
[root@localhost ~]# yum history undo 24

posted @ 2020-05-01 15:37  看萝卜在飘  阅读(775)  评论(0编辑  收藏  举报