虽然使用源码编译安装能够具备提升速度个性化的定制等优势,但对于 Linux发行商来讲,则不容易管理软件包,毕竟不是每一个人都会进行源码编译的,若是可以将软件预先在相同的硬体与系统上面编译好在发布的话,不就可以让相同的 Linux 发行版,同时拥有相投的版本了吗,若是再加上简易的安装/移除/管理等机制的话,对于软体控管就会更加简单,大多数现代类 Unix 操做系统都提供了一个集中的软件包管理机制,以帮助用户搜索、安装和管理软件,而软件一般以「包」的形式存储在仓库「repository」中,对软件包的使用和管理被称为包管理,本章咱们将介绍 RedHat 系统中为咱们提供的解决方案,RPM和YUM包管理机制.node
因为自由软件的蓬勃发展,加上大型 Unix-Like 主机的强大性能,让不少软件开发者将他们的软件发布出来,后来 Linux 发展起来后,由一些企业或社区打包成为特定的发行版,RedHat就是这方面的龙头老大,但后来发现这些发行版的软件管理机制至关的混乱,没有一种统一的管理方式,这时候各大厂商开始着力研究如何有效的管理这些文件,RedHat提出了rpm和Yum仓库的解决方案,时至今日Yum已成为服务器上使用最多的软件管理工具.此外还有一种dpkg格式的软件安装包,是社区来维护的,下面咱们来具体介绍这两种软件包吧.python
目前在 Linux 界软件安装方式最多见的有两种,分别是:数据库
● DPKG 包
这个机制最先是由 Debian Linux 社区所开发出来的,经过 dpkg 的包管理, Debian 打包软件就可以简单的安装,同时还能提供安装后的软件维护与更新,只要是衍生于 Debian 的其余 Linux 发行版都 dpkg 这个机制来管理软件的,包括 B2D,Ubuntu,Kali Linux 等.vim● RPM 包
这个机制最先是由 Red Hat 这家公司开发出来的,后来实在很好用,所以不少 Linux 发行版,就使用这个机制来做为软件安装的管理方式,包括 RedHat,Fedora,CentOS,SuSE等知名厂商都在使用它.centos
如前所述,不管是DPKG仍是RPM,这些软件包或多或少都会有依赖关系问题,那么各大 Linux 发行商是如何解决这个问题的呢 ?缓存
目前的 Linux 发行商,在dpkg管理机制上就开发出 APT 包管理工具, RPM 则依开发商的不一样,有RedHat系统的YUM,以及SuSE系统的YOU,Mandriva系统的urpmi都在使用RPM下面咱们使用的是RedHat系统,因此说使用的管理机制为 RPM 机制,因此咱们使用YUM,下面就让咱们来谈谈 RPM 与 YUM 的关系吧.
bash
RPM 全名是 "RedHat Package Manager" 简称则为 RPM 顾名思义,当初这个软件管理的机制就是由 Red Hat 这家公司开发出来的 RPM 是以一种数据库记录的方式来将你所须要的软件安装到你的 Linux 系统的一套管理机制.服务器
RPM命令是RPM软件包的管理工具,rpm本来是Red Hat Linux发行版专门用来管理Linux各项套件的程序,因为它遵循GPL规则且功能强大方便,于是广受欢迎,逐渐受到其余发行版的采用,RPM套件管理方式的出现,让Linux易于安装,升级,间接提高了Linux的适用度.网络
那么 RPM 包的特色有哪些呢 ?app
⦁ 有专门的工具进行安装、卸载、升级和管理软件,管理起来更加方便.
⦁ 安装简洁、速度快,因为使用RPM无需编译因此安装效率很是高.
⦁ RPM包因为通过了封装,因此咱们没法直接获取其源代码.
⦁ 因为通过了封装,因此其功能选择性差,功能定制不灵活.
RPM包的命名方式有哪些 ? i386,i586,i686,noarch,x86_64表明的含义是 ?
[root@localhost ~]# ls -lh total 3.1M -r--r--r--. 1 root root 1.8M Jan 17 2018 bind-9.9.4-61.el7.x86_64.rpm -r--r--r--. 1 root root 1.2M Jan 8 2018 httpd-2.4.6-80.el7.x86_64.rpm bind .9.9.4 -61 .el7 .x86_64 .rpm ↑ ↑ ↑ ↑ ↑ ↑ ① ② ③ ④ ⑤ ⑥
1.软件名称:本例软件名为bind
2.软件版本:本例软件版本为9.9.4-61
3.发布次数:本例修改了61次
4.编译平台:编译平台有(el8=RHEL8,el7=RHEL7,el6=RHEL6)
5.适合平台:平台有(i386,i586,i686,noarch,x86_64)
6.打包格式:这里是rpm包,还有一种gpkg包.
好了,看了这么多内容,下面咱们开始进入正题,分别来介绍这些命令的含义吧.
由于安装软件是ROOT的工做,所以你得要是ROOT的身份才可以使用RPM这个命令的,用RPM来安装很简单,下面咱们就来先看他的参数说明吧.
[root@localhost ~]# rpm --help 命令语法:[ rpm [选项] 包名称 ] -i #安装一个新的rpm软件包 -v #显示安装详细过程 -h #以"#"号显示安装的进度 --nodeps #不检测依赖安装 --force #强制安装,无论软件是否存在,都强制从新安装(修复软件) --test #测试安装,不真正安装,检测软件依赖关系 --prefix #指定安装路径,不按照默认路径安装 --replacefiles #以覆盖写入方式安装 --replacepkgs #重复安装软件 --justdb #更新软件在数据库内的相关信息 --nosignature #忽略数字证书检测 --noscripts #禁止软件安装过程当中执行某些命令
通常来讲RPM的安装选项与参数大约就是这些了,一般建议直接使用 -ivh 就行了,若是安装的过程当中发现问题,一个一个去将问题找出来,尽可能不要使用 "暴力安装" ,就是经过 --force 去强制安装,由于可能会发生不少不可预期的问题,除非你很清楚的知道使用上面的参数后,安装的结果是你预期的.
RPM在查询的时候,其实查询的地方是在 /var/lib/rpm/ 这个目录下的数据文件,另外RPM也能够查询未安装的RPM软件资料,下面咱们先来看看可用的参数吧.
[root@localhost ~]# rpm --help 命令语法:[ rpm [选项] 包名称 ] [查询已安装软件] -q 软件名 #查看指定软件是否安装 -qa #查看系统中全部已安装的软件 -qi 软件名 #查看指定软件的详细信息 -qc 软件名 #列出软件因此设置文件 -qd 软件名 #列出软件因此帮助文件 -ql 软件名 #查看指定软件安装的目录和文件列表 -qR 软件名 #查看指定软件的依赖关系 –qf 文件或目录 #查询文件或者目录,是由哪一个软件包安装产生的 [查询未安装软件] -qpi 包全名 #查看指定未安装软件的详细信息 -qpl 包全名 #查看指定未安装软件的默认安装位置(预览) -qpR 包全名 #查看指定未安装软件的依赖关系
实例1:使用rpm -qi
查看一个软件的详细说明.
[root@localhost ~]# rpm -qi tree Name : tree Version : 1.6.0 Release : 10.el7 Architecture: x86_64 Install Date: Thu 15 Nov 2018 07:18:16 AM EST Group : Applications/File Size : 89505 License : GPLv2+ Signature : RSA/SHA256, Wed 02 Apr 2014 05:33:48 PM EDT, Key ID 199e2f91fd431d51 Source RPM : tree-1.6.0-10.el7.src.rpm Build Date : Mon 27 Jan 2014 12:29:58 PM EST Build Host : x86-020.build.eng.bos.redhat.com Relocations : (not relocatable) Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla> Vendor : Red Hat, Inc. URL : http://mama.indstate.edu/users/ice/tree/ Summary : File system tree viewer Description : The tree utility recursively displays the contents of directories in a tree-like format. Tree is basically a UNIX port of the DOS tree utility.
实例2:使用rpm -ql
查看软件安装释放的目录.
[root@localhost ~]# rpm -ql tree /usr/bin/tree /usr/share/doc/tree-1.6.0 /usr/share/doc/tree-1.6.0/LICENSE /usr/share/doc/tree-1.6.0/README /usr/share/man/man1/tree.1.gz
实例3:使用rpm -qR
查看软件依赖关系.
[root@localhost ~]# rpm -qR tree libc.so.6()(64bit) libc.so.6(GLIBC_2.14)(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.3)(64bit) libc.so.6(GLIBC_2.3.4)(64bit) libc.so.6(GLIBC_2.4)(64bit) rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rtld(GNU_HASH) rpmlib(PayloadIsXz) <= 5.2-1
实例4:使用rpm -qf
查看指定文件是由那个包安装的.
[root@localhost ~]# rpm -qf /bin/bash bash-4.2.46-30.el7.x86_64 [root@localhost ~]# rpm -qf /bin/ls coreutils-8.22-21.el7.x86_64
实例5:使用rpm -qpi
查看一个未安装软件详细信息.
[root@localhost ~]# rpm -qpi bind-9.9.4-61.el7.x86_64.rpm warning: bind-9.9.4-61.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY Name : bind Epoch : 32 Version : 9.9.4 Release : 61.el7 Architecture: x86_64 Install Date: (not installed) Group : System Environment/Daemons Size : 4556343 License : ISC Signature : RSA/SHA256, Wed 17 Jan 2018 05:28:47 AM EST, Key ID 199e2f91fd431d51 Source RPM : bind-9.9.4-61.el7.src.rpm Build Date : Wed 17 Jan 2018 04:15:44 AM EST Build Host : x86-034.build.eng.bos.redhat.com Relocations : (not relocatable) Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla> Vendor : Red Hat, Inc. URL : http://www.isc.org/products/BIND/ Summary : The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) server Description : BIND (Berkeley Internet Name Domain) is an implementation of the DNS (Domain Name System) protocols. BIND includes a DNS server (named), which resolves host names to IP addresses; a resolver library (routines for applications to use when interfacing with DNS); and tools for verifying that the DNS server is operating properly.
使用 RPM 来升级真是太简单了,就以 -Uvh 或 -Fvh 来升级便可,而 -Uvh 与 -Fvh 能够用的选项与参数,跟 install 是同样的,不过 -U 与 -F 的意义仍是不太同样的,下面咱们来开一下它的配置信息吧.
[root@localhost ~]# rpm --help 命令语法:[ rpm [选项] 包名称 ] -v #显示安装详细过程 -h #以"#"号显示安装的进度 -U #升级安装,若没安装,则直接安装,若安装有旧版本,则升级安装 -F #升级安装,若没安装,则不安装,必须有旧版本,才进行升级安装
由上面的说明来看,若是你想要大量的升级系统旧版本的软件,使用 -Fvh 则是比较好的做法,由于没有安装的软件不会安装到你的系统,可是须要注意的是,若是你使用的是 -Fvh ,恰恰你的机器上没有安装该软件,那么该软件并不会被安装在你的 Linux 主机上面,因此请从新以 ivh 来安装吧.
验证(Verify)的功能主要在于提供系统管理员一个有用的管理机制,做用的方式是使用 "/var/lib/rpm" 下面的数据库数据内容来比对目前 Linux 系统的环境下的全部软件信息,也就是说当你有文件不当心遗失,或者由于你误删除掉了某软件的文件,咱们就用这个简单的方法来验证一下本来的软件系统吧,好让你了解这一阵子究竟是修改到哪些文件,下面咱们先来看一下它的经常使用参数吧.
[root@localhost ~]# rpm --help 命令语法:[ rpm [选项] 包名称 ] -V 软件名 #验证指定软件安装后的完整性,及文件的元数据是否发生变化 -Va #列出目前系统上全部被改动过的文件 -Vf 文件名 #验证指定文件是否被修改过 -Vp 文件名 #列出该软件内可能被改动过的文件
下面,咱们经过验证一个文件,看其是否被修改过吧.
[root@localhost ~]# rpm -Vf /etc/profile S.5....T. c /etc/profile #↑ 验证结果 ↑ 文件类型 ↑ 文件位置
你会发如今文件名 /etc/profile 以前有个 c 而后就是一堆奇怪的文字了,那个c表明的是配置文件,至于最前面的八个选项,咱们在下面说明一下吧:
验证结果具体的信息:
s -------------> 文件大小是否改变
M -------------> 权限是否被改变
5 -------------> 文件的MD5校验和是否改变(即文件内容)
D -------------> 主从设备号是否改变(/dev/)
L -------------> 文件路径是否改变
U -------------> 文件的属主是否改变
G -------------> 文件的属组是否改变
T -------------> 文件的修改时间是否改变
文件类型具体分类:
c -------------> 配置文件
d -------------> 普通文件
g -------------> 鬼子文件,该文件不该在RPM包中
l -------------> 受权文件
r -------------> 描述文件
通过验证的功能,你就能够知道那个文件被更动过,那么若是该文件的变动是预期中的,那么就没有什么大问题,可是若是该文件是非预期的,那么是否被入侵了了呢,因此说通常配置文件被改动比较正常,要是二进制文件被改动,多是被入侵了,咱们就要提升警戒了啊,毕竟对于一个运维人员来讲,背黑锅仍是很不爽的啊.
谈完了程序的验证后,不知道你有没有发现一个问题,那就是,验证只能验证程序内的数据与 /var/lib/rpm/里面的数据是否对应而已,若是该程序数据库所提供的数据自己就有问题,那你使用验证的手段也没法肯定该软件的正确性啊.下面就出现了数字证书的概念.
就像你本身的签名同样,咱们的软件开发商原厂所推出的软件也会有一个厂商本身的证书系统,只是这个证书被数字化了而已,厂商能够生成一个专属的数字证书,并将该证书的公钥(public key) 放入其发行版中,当你要安装一个RPM时,系统会执行如下流程:
⦁ 首先必须找到原厂的公钥文件,而后进行安装
⦁ 而后安装RPM包时,会去提取RPM包中的证书信息,而后和本机安装的原厂证书进行验证
⦁ 若是验证经过,则容许安装;若是验证不经过,则不容许安装并警告
咱们 RedHat 使用的数字证书系统为 GNU 计划的 GnuPG (GNU Privacy Guard, GPG)能够经过加密运算,算出独一无二的专属金钥系统或者是数字证书系统,咱们也会知道首先必需要安装原厂的GPG数位证书的公钥才行,如下是数字证书的存放位置,其有两份,操做系统中有一份,原厂光盘里也有一份.
[root@localhost ~]# ls -lh /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release -rw-r--r--. 1 root root 3.2K Feb 28 2018 /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release [root@localhost ~]# ls -lh /mnt/RPM-GPG-KEY-redhat-release -r--r--r--. 1 root root 3.2K Feb 28 2018 /mnt/RPM-GPG-KEY-redhat-release
从上面的输出结果,可知证书的位置,下面咱们开始安装它.
[root@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
那安装完成以后,那咱们先列出金钥软件名称后,再以 -qi 的方式来查询看一下软件的信息吧.
[root@localhost ~]# rpm -qa |grep pubkey gpg-pubkey-2fa658e0-45700c69 gpg-pubkey-fd431d51-4ae0493b [root@localhost ~]# rpm -qi gpg-pubkey-2fa658e0-45700c69 Name : gpg-pubkey Version : 2fa658e0 Release : 45700c69 Architecture: (none) Install Date: Thu 15 Nov 2018 09:39:17 AM EST Group : Public Keys Size : 0 License : pubkey Signature : (none) Source RPM : (none) Build Date : Fri 01 Dec 2006 06:05:13 AM EST Build Host : localhost Relocations : (not relocatable) Packager : Red Hat, Inc. (auxiliary key) <security@redhat.com> Summary : gpg(Red Hat, Inc. (auxiliary key) <security@redhat.com>) Description : -----BEGIN PGP PUBLIC KEY BLOCK----- Version: rpm-4.11.3 (NSS-3) mQGiBEVwDGkRBACwPhZIpvkjI8wV9sFTDoqyPLx1ub8Sd/w+YuI5Ovm49mvvEQVT VLg8FgE5JlST59AbsLDyVtRa9CxIvN5syBVrWWWtHtDnnylFBcqG/A6J3bI4E9/A UtSL5Zxbav0+utP6f3wOpxQrxc+WIDVgpurdBKAQ3dsobGBqypeX6FXZ5wCgou6C =d/bm -----END PGP PUBLIC KEY BLOCK-----
重点就是最后面出现的那一串乱码啦,那但是做为数字证书很是重要的一环,若是你忘记加上数字证书,极可能不少原版软件就不能让你安装,除非你利用 rpm 时选择略过证书.
移除的选项很简单,直接经过 -e 便可移除,不过常常发生因为软件依赖关系而没法卸载的状况,下面看一下他的参数吧
[root@localhost ~]# rpm --help 命令语法:[ rpm [选项] 包名称 ] -e #卸载软件(注意卸载顺序) --nodeps #不检测依赖卸载
因为 RPM 软件经常会安装/移除/升级等,某些动做或许可能会致使 RPM 数据库 /var/lib/rpm/ 内的数据损坏,果然如此的话,咱们可使用 --rebuilddb 这个选项来重建一下数据库文件.
例如提取tree目录下的文件并恢复到指定文件 [root@localhost ~]# ls -l total 48 -rw-rw-r-- 1 root root 47508 Jul 4 2014 tree-1.6.0-10.el7.x86_64.rpm [root@localhost ~]# rpm2cpio tree-1.6.0-10.el7.x86_64.rpm |cpio -idv #提取tree包中的文件 ./usr/bin/tree ./usr/share/doc/tree-1.6.0 ./usr/share/doc/tree-1.6.0/LICENSE ./usr/share/doc/tree-1.6.0/README ./usr/share/man/man1/tree.1.gz 177 blocks [root@localhost ~]# ll total 48 -rw-rw-r-- 1 root root 47508 Jul 4 2014 tree-1.6.0-10.el7.x86_64.rpm drwxr-xr-x 4 root root 30 Sep 20 05:17 usr
咱们在本章一开始开始的地方谈到过 YUM 这个东西,这个 YUM 是经过分析 RPM 的标头数据后,根据各软件的相关性,制做出软件依赖解决方案,而后能够自动处理软件的依赖属性问题,以解决软件安装或移除与升级的问题,事实上RedHat在放出系统时,已经搭建好了提供给全球使用的软件源,因此理论上,咱们不须要处理任何设定值,只要可以链接上Intelnet,就可使用Yum来更新数据了.
虽然Yum工具,只须要你的主机链接互联网,就能够直接使用,可是有些时候咱们须要自定义Yum源实现加速,下面咱们将配置一个本地Yum源,来使用光盘中的软件,其余网络配置操做步骤相同,只是会在baseurl参数后面会有所区别.
1.首先默认状况下,咱们的系统是没有给咱们配置Yum源的,在这里咱们须要在指定配置文件中建立一个以.repo结尾的文件.
[root@localhost ~]# cat /etc/yum.repos.d/redhat.repo [server] name="redhat yum" baseurl=file:///mnt enabled=1 gpgcheck=0 >>[server] ----------> 表明容器的名称,能够随便写 >>name ----------> 给容器起的名字,可自定义 >>mirrorlist ----------> 列出容器可使用的镜像站点,不用可屏蔽 >>baseurl ----------> 默认镜像地址,可写本地地址,也可写FTP地址 >>enabled=1 ----------> 就是让容器启动 >>gpgcheck=0 ----------> 关闭证书检测 >>gpgkey ----------> 证书保存位置
2.第一步配置完毕之后,接下来咱们来检查一下配置是否生效,和生成缓存文件.
[root@localhost ~]# yum repolist all Loaded plugins: product-id, search-disabled-repos, subscription-manager This system is not registered with an entitlement server. You can use subscription-manager. repo id repo name status Server "rhel7" enabled: 5,099 repolist: 5,099 [root@localhost ~]# yum makecache Loaded plugins: product-id, search-disabled-repos, subscription-manager This system is not registered with an entitlement server. You can use subscription-manager. Server | 4.3 kB 00:00:00 Metadata Cache Created
到此本地Yum仓库就配置好啦,下面是一些拓展信息.
阿里云Yum源仓库地址
wget http://mirrors.aliyun.com/repo/Centos-6.repo
wget http://mirrors.aliyun.com/repo/Centos-7.repo
网易Yum源仓库地址
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
经常使用RPM包查询网站
curl https://centos.pkgs.org/
curl http://rpmfind.net/
curl https://dl.fedoraproject.org/pub/
因为RedHat默认自带的YUM源须要注册才能更新,咱们想不花钱也能够更新,须要将RedHat的YUM源替换成Centos的,若是你直接使用的是Centos的系统那么这一步能够跳过了,你能够直接使用官方提供的YUM仓库地址,下面咱们来看一下如何替换RHEL系统的YUM文件吧.
1.查看RHEL7里面默认安装的YUM包文件,强制删除自带的YUM包,再见.
[root@localhost ~]# rpm -qa |grep "yum" yum-rhn-plugin-2.0.1-10.el7.noarch yum-metadata-parser-1.1.4-10.el7.x86_64 yum-3.4.3-158.el7.noarch [root@localhost ~]# rpm -qa |grep "yum" |xargs rpm -e --nodeps [root@localhost ~]# rpm -qa |grep "python-urlgrabber" |xargs rpm -e --nodeps [root@localhost ~]# rpm -qa |grep yum
3.下载好Centos的YUM包文件,并忽略依赖,强制安装.
[root@localhost ~]# wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-metadata-parser-1.1.4-10.el7.x86_64.rpm [root@localhost ~]# wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-3.4.3-161.el7.centos.noarch.rpm [root@localhost ~]# wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-plugin-fastestmirror-1.1.31-50.el7.noarch.rpm [root@localhost ~]# wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/yum-utils-1.1.31-50.el7.noarch.rpm [root@localhost ~]# wget https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/python-urlgrabber-3.10-9.el7.noarch.rpm [root@localhost ~]# ls -lh total 1.6M -rw-r--r-- 1 root root 109K Nov 12 10:19 python-urlgrabber-3.10-9.el7.noarch.rpm -rw-r--r-- 1 root root 1.3M Nov 12 10:27 yum-3.4.3-161.el7.centos.noarch.rpm -rw-r--r-- 1 root root 28K Jul 4 2014 yum-metadata-parser-1.1.4-10.el7.x86_64.rpm -rw-r--r-- 1 root root 34K Nov 12 10:27 yum-plugin-fastestmirror-1.1.31-50.el7.noarch.rpm -rw-r--r-- 1 root root 122K Nov 12 10:27 yum-utils-1.1.31-50.el7.noarch.rpm [root@localhost ~]# rpm -ivh --nodeps *.rpm
4.更换YUM源地址,此处咱们使用阿里云的源.
[root@localhost ~]# rm -fr /etc/yum.repos.d/* [root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
5.修改CentOS-Base.repo文件中的$releasever所有替换为版本号7,直接更新缓存便可.
[root@localhost ~]# vim /etc/yum.repos.d/CentOS-Base.repo :%s/$releasever/7/g [root@localhost ~]# yum clean all [root@localhost ~]# yum makecache
[root@localhost ~]# yum --help 命令语法:[ yum [选项] 包名称 ] -y #自动化安装,无需应答 installroot #安装时指定安装位置 search #搜索指定包文件 list #显示所有可用列表 info #显示软件相关信息 grouplist #查询全部已安装和可安装的软件组 groupinfo #列出软件组中包含的软件 provides #经过关键字查找安装包
指定安装位置: 使用installroot
指定软件安装位置.
[root@localhost ~]# yum install -y --installroot=/tmp/ tree Loaded plugins: product-id, search-disabled-repos, subscription-manager This system is not registered with an entitlement server. You can use subscription-manager. Server | 4.3 kB 00:00:00 (1/2): Server/group_gz | 145 kB 00:00:00 (2/2): Server/primary_db | 4.1 MB 00:00:00 Package tree-1.6.0-10.el7.x86_64 already installed and latest version Nothing to do [root@localhost ~]#
查软件信息: 使用yum info
命令查看软件具体信息.
[root@localhost ~]# yum info tree Loaded plugins: product-id, search-disabled-repos, subscription-manager This system is not registered with an entitlement server. You can use subscription-manager. Installed Packages Name : tree Arch : x86_64 Version : 1.6.0 Release : 10.el7 Size : 87 k Repo : installed From repo : Server Summary : File system tree viewer URL : http://mama.indstate.edu/users/ice/tree/ License : GPLv2+ Description : The tree utility recursively displays the contents of directories in a : tree-like format. Tree is basically a UNIX port of the DOS tree : utility.
查包文件: 使用provides
经过关键字查询指定包,以下可知tree
命令是由tree-1.6.0-10.el7.x86_64
包安装的.
[root@localhost ~]# yum provides tree Loaded plugins: product-id, search-disabled-repos, subscription-manager This system is not registered with an entitlement server. You can use subscription-manager. tree-1.6.0-10.el7.x86_64 : File system tree viewer Repo : Server tree-1.6.0-10.el7.x86_64 : File system tree viewer Repo : @Server
[root@localhost ~]# yum clean packages #清除缓存目录下的软件包 [root@localhost ~]# yum clean headers #清除缓存目录下的 headers [root@localhost ~]# yum clean oldheaders #清除缓存目录下旧的 headers [root@localhost ~]# yum clean all #清除下载的临时软件包和缓存 [root@localhost ~]# yum makecache #创建软件包缓存,提升查询速度 [root@localhost ~]# yum update #更新全部须要更新的软件&内核
[root@localhost ~]# yum install [软件名] #所有安装 [root@localhost ~]# yum groupinsall [软件组名] #安装程序组 [root@localhost ~]# yum remove [软件名] #删除软件 [root@localhost ~]# yum groupremove [软件组名] #删除软件组
[root@localhost ~]# yum update [软件名] #所有更新 [root@localhost ~]# yum check-update #检查可更新的程序 [root@localhost ~]# yum upgrade [软件名] #升级指定程序包 [root@localhost ~]# yum groupupdate [组软件名] #升级程序组
[root@localhost ~]# yum -y install xorg* [root@localhost ~]# yum -y groupinstall "X Window System" [root@localhost ~]# yum -y groupinstall Desktop [root@localhost ~]# yum -y groupinstall "Chinese Support" [root@localhost ~]# startx
"dpkg"是"Debian Packager"的简写,为"Debian"专门开发的软件管理系统,方便软件的安装、更新及移除.全部源自"Debian"的"Linux "发行版都使用"dpkg",这个机制最先是由 Debian Linux 社区所开发出来的,经过 dpkg 的包管理, Debian 打包软件就可以简单的安装,同时还能提供安装后的软件维护与更新,只要是衍生于 Debian 的其余 Linux 发行版都 dpkg 这个机制来管理软件的,dpkg自己是一个底层的工具.上层的工具,如APT,被用于从远程获取软件包以及处理复杂的软件包关系,包括 B2D,Ubuntu,Kali Linux 等.
root@kali:~# dpkg --help 命令语法:[ dpkg [选项] 包名称 ] -i #安装软件包 -r #删除软件包 -P #删除软件包的同时删除其配置文件 -L #显示软件包文件列表 -l #显示已安装软件包列表 -c #显示软件包内文件列表 -s #显示指定软件包的详细状态 --unpack #解开软件包 --confiugre #配置软件包
安装软件: 经过使用-i
选项安装pack.deb
软件.
root@kali:~# dpkg -i pack.deb root@kali:~# dpkg --install pack.deb
删除软件: 经过使用-rP
选项删除pack.deb
软件(包括配置文件).
root@kali:~# dpkg -rP pack.deb root@kali:~# dpkg --remove pack.deb
列出软件包: 经过使用-l
选项列出系统已安装的软件包.
root@kali:~# dpkg -l
详细信息: 经过使用-s
显示指定软件详细信息.
root@kali:~# dpkg -s bash root@kali:~# dpkg -I bash
Advanced Package Tool又名apt-get,是一款适用于Unix和Linux系统的应用程序管理器.最初于1998年发布,用于检索应用程序并将其加载到Debian Linux系统.Apt-get成名的缘由之一在于其出色的解决软件依赖关系的能力.其一般使用.deb-formatted文件,但通过修改后可使用apt-rpm处理红帽的Package Manager(RPM)文件,Apt-get在Linux社区获得普遍使用,成为用来管理桌面、笔记本和网络的重要工具.随着Linux在企业中的普及,Windows和Mac用户了解如何使用apt-get加载应用程序有必定的好处.
root@kali:~# apt --help 命令语法:[ apt [选项] 包名称 ] -i #安装软件包 list #根据名称列出软件包 search #搜索软件包描述 show #显示软件包细节 install #安装软件包 remove #移除软件包 autoremove #卸载全部自动安装且再也不使用的软件包 update #更新可用软件包列表 upgrade #经过安装/升级软件来更新系统
apt-get安装:
root@kali:~# sudo apt-get install package #安装包 root@kali:~# sudo apt-get install package --reinstall #从新安装包 root@kali:~# sudo apt-get -f install #修复安装 root@kali:~# sudo apt-get bulid-dep package #安装相关的编译环境
apt-get删除:
root@kali:~# sudo apt-get remove package #删除包 root@kali:~# sudo apt-get remove package --purge #彻底删除包 root@kali:~# sudo apt-get -f autoremove #把软件附加项也删掉 root@kali:~# sudo apt-get autoremove --purge software #删除的更完全些
apt-get更新:
root@kali:~# sudo apt-get update #更新源 root@kali:~# sudo apt-get upgrade #更新已安装的包 root@kali:~# sudo apt-get dist-upgrade #升级系统
apt-get修复:
root@kali:~# sudo apt-get source package #下载该包的源代码 root@kali:~# sudo apt-get clean && sudo apt-get autoclean #清楚无用的包 root@kali:~# sudo apt-get check #检查是否有损坏的依赖 root@kali:~# sudo dpkg -i package #安装后缀是deb的
apt-get搜索:
root@kali:~# sudo apt-cache search package #搜索软件包 root@kali:~# sudo apt-cache show package #获取软件包信息 root@kali:~# sudo apt-cache depends package #了解使用该包依赖哪些包 root@kali:~# sudo apt-cache redepends package #查看该包被哪些包依赖
参考文献:Linux鸟哥私房菜,Linux运维之道