1. rpm

Linux rpm 命令用于管理套件。
rpm(英文全拼:redhat package manager) 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎

rpm常见命令参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
用法: rpm [选项...]
-a:查询所有套件;
-b<完成阶段><套件档>+或-t <完成阶段><套件档>+:设置包装套件的完成阶段,并指定套件档的文件名称;
-c:只列出组态配置文件,本参数需配合``"-l"``参数使用;
-d:只列出文本文件,本参数需配合``"-l"``参数使用;
-e<套件档>或--erase<套件档>:删除指定的套件;
-f<文件>+:查询拥有指定文件的套件;
-h或--``hash``:套件安装时列出标记;
-i:显示套件的相关信息;
-i<套件档>或--``install``<套件档>:安装指定的套件档;
-l:显示套件的文件列表;
-p<套件档>+:查询指定的RPM套件档;
-q:使用询问模式,当遇到任何问题时,rpm指令会先询问用户;
-R:显示套件的关联性信息;
-s:显示文件状态,本参数需配合``"-l"``参数使用;
-U<套件档>或--upgrade<套件档>:升级指定的套件档;
-``v``:显示指令执行过程;
-vv:详细显示指令执行过程,便于排错。

常用的命令展示

如何安装rpm软件包

1
2
rpm -ivh your-package ``# 直接安装
rpmrpm --force -ivh your-package.rpm ``# 忽略报错,强制安装

如何卸载rpm软件包

1
2
3
[root@localhost ~]``# rpm -ql tree # 查询
[root@localhost ~]``# rpm -e tree # 卸载
[root@localhost ~]``# rpm -ql tree # 查询


6. yum - 图1

列出所有安装过的包

1 [root@localhost ~]``# rpm -qa

6. yum - 图2

如何获得某个软件包的文件全名

1 [root@localhost ~]``# rpm -q tree

6. yum - 图3

rpm包中的文件安装的位置
[root@localhost ~]# rpm -ql tree # rpm -ql 包名

6. yum - 图4

哪个软件包包含这个程序

1
2
3
rpm -qf ```which 程序名 #返回软件包的全名`<br />`rpm -qif ```which` `程序名` #返回软件包的有关信息<br />rpm -qlf `which` `程序名` #返回软件包的文件列表[root@localhost ~]# rpm -qf `which sshd``

6. yum - 图5

2. 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常用命令

    1. 列出所有可更新的软件清单命令:yum check-update
    1. 更新所有软件命令:yum update
    1. 仅安装指定的软件命令:yum install
    1. 仅更新指定的软件命令:yum update
    1. 列出所有可安裝的软件清单命令:yum list
    1. 删除软件包命令:yum remove
    1. 查找软件包命令:yum search
    1. 清除缓存命令:
      • yum clean packages: 清除缓存目录下的软件包
      • yum clean headers: 清除缓存目录下的 headers
      • yum clean oldheaders: 清除缓存目录下旧的 headers
      • yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的 headers

        实例 1

        安装 pam-devel
        1. [root@www ~]# yum install pam-devel
        2. Setting up Install Process
        3. Parsing package install arguments
        4. Resolving Dependencies <==先检查软件的属性相依问题
        5. --> Running transaction check
        6. ---> Package pam-devel.i386 0:0.99.6.2-4.el5 set to be updated
        7. --> Processing Dependency: pam = 0.99.6.2-4.el5 for package: pam-devel
        8. --> Running transaction check
        9. ---> Package pam.i386 0:0.99.6.2-4.el5 set to be updated
        10. filelists.xml.gz 100% |=========================| 1.6 MB 00:05
        11. filelists.xml.gz 100% |=========================| 138 kB 00:00
        12. -> Finished Dependency Resolution
        13. ……(省略)

        实例 2

        移除 pam-devel
        [root@www ~]# yum remove pam-devel
        Setting up Remove Process
        Resolving Dependencies  <==同样的,先解决属性相依的问题
        --> Running transaction check
        ---> Package pam-devel.i386 0:0.99.6.2-4.el5 set to be erased
        --> Finished Dependency Resolution
        Dependencies Resolved
        =============================================================================
        Package                 Arch       Version          Repository        Size
        =============================================================================
        Removing:
        pam-devel               i386       0.99.6.2-4.el5   installed         495 k
        Transaction Summary
        =============================================================================
        Install      0 Package(s)
        Update       0 Package(s)
        Remove       1 Package(s)  <==还好,并没有属性相依的问题,单纯移除一个软件
        Is this ok [y/N]: y
        Downloading Packages:
        Running rpm_check_debug
        Running Transaction Test
        Finished Transaction Test
        Transaction Test Succeeded
        Running Transaction
        Erasing   : pam-devel                    ######################### [1/1]
        Removed: pam-devel.i386 0:0.99.6.2-4.el5
        Complete!
        

        实例 3

        利用 yum 的功能,找出以 pam 为开头的软件名称有哪些?
        [root@www ~]# yum list pam*
        Installed Packages
        pam.i386                  0.99.6.2-3.27.el5      installed
        pam_ccreds.i386           3-5                    installed
        pam_krb5.i386             2.2.14-1               installed
        pam_passwdqc.i386         1.0.2-1.2.2            installed
        pam_pkcs11.i386           0.5.3-23               installed
        pam_smb.i386              1.1.7-7.2.1            installed
        Available Packages <==底下则是『可升级』的或『未安装』的
        pam.i386                  0.99.6.2-4.el5         base
        pam-devel.i386            0.99.6.2-4.el5         base
        pam_krb5.i386             2.2.14-10              base
        

国内 yum 源

网易(163)yum源是国内最好的yum源之一 ,无论是速度还是软件版本,都非常的不错。
将yum源设置为163 yum,可以提升软件包安装和更新的速度,同时避免一些常见软件版本无法找到。

安装步骤
首先备份/etc/yum.repos.d/CentOS-Base.repo

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下载对应版本 repo 文件, 放入 /etc/yum.repos.d/ (操作前请做好相应备份)

wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
mv CentOS6-Base-163.repo CentOS-Base.repo

运行以下命令生成缓存

yum clean all
yum makecache

除了网易之外,国内还有其他不错的 yum 源,比如中科大和搜狐。
中科大的 yum 源,安装方法查看:https://lug.ustc.edu.cn/wiki/mirrors/help/centos
sohu 的 yum 源安装方法查看: http://mirrors.sohu.com/help/centos.html

安装提示缺失库解决办法

对于 Linux 软件安装时提示缺失库的,可以使用 yum 的 provides 参数查看 libstdc++.so.6 的库文件包含在那个安装包中只需要执行:

yum provides libstdc++.so.6

然后按查询到安装包包名,使用 yum install 安装即可。

Cetnos7 配置阿里yum源

备份,将 CentOS-Base.repo 为CentOS-Base.repo.backup

[root@localhost ~]$ mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下载新的 http://mirrors.aliyun.com/repo/Centos-7.repo,并命名为CentOS-Base.repo

[root@localhost ~]$ wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
         或者
[root@localhost ~]$ curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

清除缓存

[root@localhost ~]$ yum clean all     # 清除系统所有的yum缓存
[root@localhost ~]$ yum makecache     # 生成yum缓存

Cetnos6 配置阿里yum源

备份,将 CentOS-Base.repo 为CentOS-Base.repo.backup

[root@localhost ~]$ mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下载新的 http://mirrors.aliyun.com/repo/Centos-6.repo,并命名为CentOS-Base.repo

[root@localhost ~]$ wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
         或者
[root@localhost ~]$ curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

清除缓存

[root@localhost ~]$ yum clean all     # 清除系统所有的yum缓存
[root@localhost ~]$ yum makecache     # 生成yum缓存

如果报错If above article doesn't help to resolve this issue please open a ticket wit
http://mirrors.cloud.aliyuncs.com/centos/6/os/x86_64/repodata/repomd.xml:[Errno 14] PYCURL ERROR 6 - "Couldn't resolve host 'mirrors.cloud.aliyuncs.com'"

解决办法:
CentOS 6已经经历了2020年11月的结束进入了EOL(生命终结),不过有一些老设备依然需要支持,CentOS官方也给这些还不想把CentOS 6扔进垃圾堆的用户保留了最后一个版本的充分,只是这个有意义不会再有更新了

官方便在12月2日正式将CentOS 6相关的软件源移出了官方资源,随之而来逐级甚至也会陆续将其删除。
一键修复(复制到SSH执行即可):

[root@localhost ~]$ sed -i "s|enabled=1|enabled=0|g" /etc/yum/pluginconf.d/fastestmirror.conf
[root@localhost ~]$ mv /etc/yum.repos.d/CentOS*.repo /etc/yum.repos.d/CentOS-Base.repo.backup
[root@localhost ~]$ curl -o /etc/yum.repos.d/CentOS-Base.repo https://www.xmpan.com/Centos-6-Vault-Aliyun.repo 
[root@localhost ~]$ yum clean all && yum makecache

如何使用epel源

下载安装epel源

#下载epel源
[root@localhost ~]$ wget https://archives.fedoraproject.org/pub/archive/epel/6/x86_64/epel-release-6-8.noarch.rpm

#安装epel源
[root@localhost ~]$  rpm -ivh epel-release-6-8.noarch.rpm

#清除下缓存
[root@localhost ~]$  yum clean all && yum makecache