1.采用rpm安装软件

采用rpm安装时,主要有三个选项,分别是-i选项,-q选项,-V选项,这三个选项都有着若干个子选项,我们将会分条介绍这些选项。 1.-e选项 在介绍安装之前我们要先介绍卸载命令,这样我们就可以拿一个包进行反复试验,其命令如下:

rpm -e ftp




2.-i选项 -i 选项 单此一个选项,后面跟上安装包的路径,就是安装软件,我们ftp为例,将光盘挂载在/media下:

mount /dev/cdrom /media

安装命令如下:

rpm -i /media/Package/ftp-0.17-54.el6.x86_64.rpm

用-i选项不会显示任何安装信息,你甚至不知道有没有安装成功。 -v选项 -v选项的作用就是显示安装的详细信息,他是-i的子选项,只能配合-i使用,单独使用将没有任何意义,例如:

rpm -iv /media/Package/ftp-0.17-54.el6.x86_64.rpm

如果嫌弃这样显示的信息还不够详细,可以再加一个-v选项。 -h选项 -h选项的作用就是显示安装百分比,例如

rpm -ih /media/Package/ftp-0.17-54.el6.x86_64.rpm

所以最经典的安装选项搭配就是-ivh,这是我们安装软件过程中最常用的选项 --test选项 -test选项的用途是测试安装,并不真正的安装软件,我们可以测试当前环境能不能安装,例如:

rpm -i --test /media/Package/ftp-0.17-54.el6.x86_64.rpm

--nodeps选项 --nodeps选项是在安装软件时忽略依赖性关系,某些软件在安装时需要安装其他的软件,否则不能安装成功,这时如果使用--nodeps就可以忽略这些依赖性关系进行安装,例如:

rpm -i --test /media/Packages/samba4-4.2.10-9.el6.x86_64.rpm 

rpm -i --nodeps --test /media/Packages/samba4-4.2.10-9.el6.x86_64.rpm

--replacepkgs选项 重复安装已经安装过的包,文件覆盖。例如:

rpm -i --replacepkgs /media/Packages/tree-1.5.3-3.el6.x86_64.rpm 

--replacefiles选项 将要安装包的部分文件与其他已安装的包文件冲突,可继续安装,文件不覆盖。例如 --oldpackages选项 已安装过新版本,现在安装旧版本 --force选项 等同于 --replacepkgs, --replacefiles, and --oldpackage.例如

rpm -i --force /media/Packages/tree-1.5.3-3.el6.x86_64.rpm

--noscripts选项 安装时不执行rpm包中的脚本。在有些软件包中,存在一些脚本,当安装软件包时,会自行执行这些脚本,使用该选项就可以在安装过程中不执行这些软件包所携带的脚本。例如: 首先查看apache用户是否存在:

id apache

安装httpd,可能因为某些依赖关系而使得安装不成功,所以我们加上--nodeps选项命令如下:

rpm -ih --nodeps /media/Packages/httpd-2.4.6-80.el7.centos.x86_64.rpm

现在再查看用户apache是否存在;

id apache

我们可以发现安装httpd后,多出了一个名为apache的用户,我们并没有手工去创建他,为什么会出现呢?因为在httpd安装过程中,执行了创建apache用户的脚本,如果我们使用--noscripts选项,就不会有脚本执行。




3.-q选项 -q选项是查看当前安装软件包的信息,和-i选项相似,他也有着众多的子选项。 单-q一个选项是查看已安装包的描述信息,如果这个包没有安装,则提示没有安装,例如: -a 选项 列出所有已安装的软件包,我们采用管道计算一下安装了多少软件包。 rpm -qa |wc -l -f选项 查看指定文件来源自哪一个安装包,-f后跟的应该是文件的绝对路径。例如:

rpm -qf /etc/rc.d/init.d/function

-i选项 这个选项可以显示包的详细信息,不在演示。 -p选项 查询未安装的rpm包的信息,查询信息的数据来自于rpm包,-p后面应该加上rpm路径,例如

rpm -qi -p /media/Packages/ftp-0.17-54.el6.x86_64.rpm

** --provides选项** 查询某个包提供了哪些能力

rpm -q --provides httpd

--whatprovides选项 查询某个能力由哪一个rpm包提供,例如

rpm -q --whatprovides webserver

**--whatrequires选项 ** 查询某个能力被哪个rpm包所依赖,例如:

rpm -q --whatrequires webserver

--changelog选项 查询更新日志,这个选项用处不大,不做过多介绍。 -l 列出软件包提供的所有文件 -c 列出软件包提供的配置文件 -d 列出软件包提供的文档文件 这三个选项都是列出软件包提供的文件,但是只能列出已安装的软件提供的文件。例如

rpm -q -l httpd
rpm -q -c httpd
rpm -q -d httpd

这样可以列出httpd提供的所有文件,配置文件,文档文件。




3. -V选项 -V选项是用来进行包校验的,如果结果有下面的结果,说明,有内容被修改。 S file Size differs M Mode differs (includes permissions and file type) 5 digest (formerly MD5 sum) differs D Device major/minor number mismatch L readLink(2) path mismatch U User ownership differs G Group ownership differs T mTimediffers P capabilities differ 例如:

rpm -V httpd

这时是什么都不会显示的,因为没有修改过httpd的任何文件,现在我往httpd.conf中第一行加入123. 再次执行上面命令,结果如下: 说明软件包被修改过了,具体修改了什么东西,可以参考上面。

2.采用yum安装

当我们使用rpm安装软件时,我们会发现我们安装的包可能会依赖于其他文件,这些文件属于那些我们没有安装的包,当我们先行安装其他包时,这些软件包也有可能依赖于其他文件,如此层层递归下去,会使我们的安装过程中变得无比的繁琐,而且有些文件名和包名是相关的,有些则不是,此时我们根本不知道这些软件包来源于哪里,此时将会进退维谷,而yum是rpm的前端程序,可以解决软件包相关依赖性。可在多个库之间定位软件包。 想要使用yum,首先需要做的就是配置yum仓库,yum仓库文件在/etc/yum.repos .d文件夹下,然后命名为*.repo ,*可以是任何内容,但一定要以repo结尾,内容格式如下:

[candvd]
name=Can
baseurl=file:///media
enabled=1
gpgcheck=0
gpgkey=file:///media/RPM-GPG-KEY-CentOS-6

其中[candvd]是仓库id,可以是任何内容,name即是仓库名,也可以是任何内容,baseurl是仓库指向的路径,如果是一个文件就是file:// 后面跟上文件的路径,如果是一个链接,即是跟上链接如:http://172.18.0.1/centos/$releasever ,路径或者链接一定要到包含repodata的目录,如上,路径是挂载的光盘的路径/media,而在/media下有着目录repodata,那么路径就到此处。enable是代表是否启用该仓库,1代表启用,0代表不启用,gpgcheck代表是否启用gpg验证,1代表启用,0代表不启用。gpgkey代表的是公钥,gpg是一种数据加密和数字签名的方法,能够保证数据传输的可靠性,centos光盘中有着gpgkey,我们可以使用下面的命令导入公钥:

rpm --import /media/RPM-GPG-KEY-CentOS-6

然后可以通过下面的命令查看是否导入成功:

rpm -qa "gpg-pubkey*"

结果如下: 当我们配置好一个仓库后,需要用两条命令使仓库生效,命令如下: 清空仓库缓存

 yum clean all      

重建仓库缓存

yum makecache

其实我们不需要重建yum仓库,当我们执行任意一条yum命令时,当没有仓库缓存时,系统会为我们自行重建仓库。 我们可以用下面的命令来查看我们的仓库:

yum repolist

可以看到现在有着三个仓库,id分别为base,candvd,epel,两个是我先行配置的网络仓库,使用的是教室服务器所提供的yum源,还有一个是本地的光盘源,这三个yum源一共提供25767个软件包。 repolist 还有三个选项,第一个是enabled也是系统默认的,显示激活的仓库,我们将base禁用掉,再查看,可以发现不在显示base仓库。 第二个选项是disabled,显示禁用的仓库: 第三个是all,显示所有仓库:

使用yum安装的方法是yum install +包名,也可以同时安装多个包,加上-y是非交互式安装。命令如下:

yum install -y 包1 包2 ...包n

yum list 可以列出仓库以及系统所提供的所有包,相当于yum list all,可以接仓库的id,如果最后一列显示是仓库id,那么表示该软件包时属于该仓库未安装的包;如果显示的是@加仓库id,那么该软件包是已安装的包,并且属于该仓库;如果是@anaconda 该包已安装,且是从操作系统的安装程序anaconda安装的。 yum list 可以跟选项,接all 就是列出所有包,默认是all,接updates就是列出所有可更新的包,接installed就是列出所有已安装的包,如果最后一列是@repoid 表示该包安装自指定的仓库,如果是installed 表示该包由rpm命令手工安装,例如: reinstall选项,能够重新安装指定的包名,命令如下:

yum reinstall -y +包名

update选项,能够更新指定的包,如:

yum update tree

remove选项,能够卸载指定的包,如:

yum remove tree -y

info选项,能够查看指定包的详细信息,如:

yum info tree

provides选项,能够搜索某一个文件来自哪个软件包,可以是未安装的软件包,如:

yum provides "*/rz"

search选项,能够模糊搜索,搜索的是软件包和软件包的描述信息,例如:

yum search ftp

deplist选项,能够列出指定包所依赖的所有包,例如:

yum deplist tree

history选项,能够列出所有的yum历史,例如: info加上history编号,能够查看某条历史的详细信息,例如:

yum history info 12

history redo 重做某条历史,history undo 撤销某条历史。 yum [local]install /path/*.rpm 可以安装本地包。

yum包组: yum grouplist 列出所有的包组名 yum groupinfo '包组名' 查看指定包组中包含哪个包 yum groupinstall '包组名' yum groupupdate '包组名' yum groupremove '包组名'

3.采用dnf安装

dnf是一个较新的安装命令,centos6不支持dnf,可以在centos7上安装dnf,dnf安装速度比yum要快的多,但是几乎所有的yum选项dnf都支持,并且dnf与yum共享数据库,具体安装命令如下:

yum install -y dnf

安装dnf首先是要有dnf的源,可以从网路途径获取,当安装dnf后,会发现,dnf使用的仓库即是yum的仓库。 安装dnf后,我们可以像使用yum那样使用dnf进行安装软件,例如:

dnf install -y tree