RPM可以对程序 进行安装、卸载、查询、校验和维护
rpm(raedhat package mananger),一以种数据库记录的方式将需要的软件安装到linux系统的一种机制。
RPM最大的特点是将要安装的软件先编译过,并且打包成为RPM机制的安装包,通过包装好的软件里默认的数据库记录此软件安装时必须具备的依赖属性软件。当安装软件时,RPM就会依照数据库记录的依赖关系来查询linux是否满足,若满足,则进行安装,若不满足则不安装(强行安装会出问题)。执行安装时,会把软件的信息整个写入的RPM的数据库中,以便以后的查询、验证与解除安装(卸载)。
RPM的安装以后缀名.RPM,命名的格式基本是:软件名称–版本–发布的次数–运行的平台.rpm
以rp-pppoe这个软件为例:
rp-pppoe-3.10-11.el6.x86_64.rpm
rp-pppoe是软件名称,3.10是版本,11.e16是发布的次数,x86_64是运行平台
RPM的安装路径说明:
/var/lib/rpm 记录安装后软件的信息,安装完成后如要查询、升级操作的版本之间对比,都是在查询此目录下数库信息
/etc 存放软件的配置文件 /etc/zshrc是zsh的配置文件
/usr/bin 存放可执行的文件
/usr/lib 存放软件的动态涵数库
/usr/share/doc 存放软件的使用手册与帮助文档
/usr/share/man 存放man page文件
RPM的应用格式
rpm [选项] [软件名称] [参数]
安装与升级的常用选项
安装
-i install的意思
-h 以#号显示安装进度,一个#号代表2%的进度
-v 显示安装的详细过程
常把三个选项一起使用,rpm -ihv zsh-4.3.10-7.el6.x86_64.rpm 安装zsh这个软件
升级
-Uvh 软件名称 如果要升级的软件没有安装,则系统会直接安装;若已安装但有新版本,则系统会自动升级到新的版本
-Fvh 软件名称 如果要升级的软件没有安装,则系统不会安装;若已安装但有新版本,则系统会自动升级到新的版本
使用参数说明
--nodeps 不查检依赖关系,直接安装软件。如果依赖关系没有安装,会导致安装的软件无法正常使用
rpm -ihv zsh-4.3.10-7.el6.x86_64.rpm --nodeps
--replacefiles 安装过程中,如果相应软件或文件已经存在,则会直接覆盖
--replacepkgs 安装组软件的过程中,如果部分软件已经存在,则会再次安装已存在的软件
--force 是--replacefiles与replacepkgs的结合体,只要是安装的,都会覆盖
--test 测试安装,可以找依赖关系的问题
--prefix 指定软件的安装新路径
查询的选项
-q 软件名称 查询软件是否已经安装 -qa 查询已经安装的所有软件 -qi 软件名称 查询软件的详细信息 -ql 软件名称 查询软件所有的文件与目录 -qc 软件名称 查询软件的配置文件 -qd 软件名称 查询软件的帮助文件 -qR 软件名称 查询软件依赖的文件 -qf 文件名称 查询此文件属于哪个软件
卸载
-e 软件名称 卸载软件,如果存在依赖关系,则会提示错误。 --nodeps 此参数会强制删除软件,如果存在依赖关系,删除后其他的软件则无法正常使用 rpm -e zsh-4.3.10-7.el6.x86_64.rpm --nodeps --rebuilddb 重建数据库,如果在删除、安装、升级过程中导致/var/lib/rpm文件受损,可以通过此参数来修复 rpm --rebuilddb
校验
-V 软件名称 查询此软件包含的文件,如果有被修改过的,则显示出来 -Va 查询系统中所有可能被修改过的文件 -Vf 文件名称 查询此文件是否被修改过
例如查询logrotate软件哪个文件被修改过
[root@localhost Packages]# rpm -V logrotate
S.5….T. c /etc/logrotate.conf
前8位信息说明 S 文件的容量大小是否被修改 M 文件的类型或文件的权限(rwx)、可执行参数等参数是否被修改 5 MD5的值是否已经变化 D 设备的主次代码是否已经改变 L link路径是否已经被改变 U 文件的所有者是否已经改变 G 文件的基本组是已经改变 T 文件的修改时间是否已被修改 第9位信息说明 c 设置文件config file d 文档 l 授权文件 r 自述文件
由于rpm是本地安装,因此我使用光盘自的rpm包来安装
首先 挂载光盘
[root@localhost /]# mount /dev/cdrom1 /mnt/cdrom/ mount: block device /dev/sr0 is write-protected, mounting read-only #挂载成功 [root@localhost Packages]# cd /mnt/cdrom/Packages/
安装zsh软件
[root@localhost Packages]# ls zsh* zsh-4.3.10-7.el6.x86_64.rpm [root@localhost Packages]# rpm -ivh zsh-4.3.10-7.el6.x86_64.rpm warning: zsh-4.3.10-7.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY Preparing... ########################################### [100%] 1:zsh ########################################### [100%] [root@localhost Packages]# rpm -q zsh zsh-4.3.10-7.el6.x86_64 #查询zsh软件已安装成功
查询
[root@localhost Packages]# rpm -qc zsh #查询ZSH的配置文件 /etc/skel/.zshrc /etc/zlogin /etc/zlogout /etc/zprofile /etc/zshenv /etc/zshrc [root@localhost Packages]# rpm -qf /etc/zlogin #查询zlogin这个文件属于哪个程序的 zsh-4.3.10-7.el6.x86_64 [root@localhost Packages]# rpm -qd zsh #查询zsh的帮助文档,太多只显示一部分 /usr/share/doc/zsh-4.3.10/BUGS /usr/share/doc/zsh-4.3.10/CONTRIBUTORS ………… /usr/share/info/zsh.info-3.gz /usr/share/info/zsh.info-4.gz /usr/share/man/man1/zshbuiltins.1.gz ………… /usr/share/man/man1/zshzle.1.gz [root@localhost Packages]# rpm -qi zsh #查询zsh详细信息Name : zsh Relocations: (not relocatable) Version : 4.3.10 Vendor: CentOS Release : 7.el6 Build Date: Sun 24 Nov 2013 09:40:59 AM PST Install Date: Wed 25 May 2016 04:24:06 PM PDT Build Host: c6b9.bsys.dev.centos.org Group : System Environment/Shells Source RPM: zsh-4.3.10-7.el6.src.rpm Size : 5009102 License: BSD Signature : RSA/SHA1, Sun 24 Nov 2013 11:33:46 AM PST, Key ID 0946fca2c105b9de Packager : CentOS BuildSystem <http://bugs.centos.org> URL : http://zsh.sunsite.dk/ Summary : A powerful interactive shell Description : The zsh shell is a command interpreter usable as an interactive login shell and as a shell script command processor. Zsh resembles the ksh shell (the Korn shell), but includes many enhancements. Zsh supports command line editing, built-in spelling correction, programmable command completion, shell functions (with autoloading), a history mechanism, and more. [root@localhost Packages]#
验证校验
[root@localhost Packages]# rpm -V zsh #默认是zsh没有被修改的文件,没有显示则没有被修改的文件 [root@localhost Packages]# vim /etc/zshrc #手动修改这个文件 [root@localhost Packages]# rpm -V zsh #查询 S.5....T. c /etc/zshrc #/etc/zshrc的大小、MD5值、修改时间都已经改变,文件类型是c(配置文件) [root@localhost Packages]# vim /usr/share/doc/zsh-4.3.10/FAQ #手动修改这个文件 [root@localhost Packages]# rpm -V zsh S.5....T. c /etc/zshrc S.5....T. d /usr/share/doc/zsh-4.3.10/FAQ #此文件的类型是d(文档)
卸载,也叫解除安装
[root@localhost Packages]# rpm -q zsh zsh-4.3.10-7.el6.x86_64 [root@localhost Packages]# rpm -e zsh #卸载 warning: /etc/zshrc saved as /etc/zshrc.rpmsave [root@localhost Packages]# rpm -q zsh package zsh is not installed #卸载之后,查询时提示没有安装 [root@localhost Packages]#
YUM程序工具
yum是一个Shell前端软件包管理器。基於RPM包管理,能够从指定的YUM服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
yum服务器叫做yum repository,存储了众多的安装程序,主配置文件是/etc/yum.conf,可通过man yum.conf查看配置文件的各项说明,/etc/yum.repos.d/目录下后缀为.repo的文件,是关于yum repository服务器指定的配置,可以指向在线的服务器,也可以指向本地cd。
linux与yum repolist的关系如下图:
yum repository的定义
name=Some name for this repository #名称没有要求,但不要与已存在的冲突 baseurl=url://path/to/repository/ #指向服务器 url有四种:ftp:// http:// nfs:// file:///(本地) enabled={1|0} #是否启用,1是yes,0是no gpgcheck={1|0} #安装前是否检查程序的来源合法性 gpgkey=URL #密钥文件的URL nablegroups={1|0} #是否支持在此服务器上用组来管理软件 failovermethod={roundrobin|priority} #故障切换,若baseurl有多个url,此命令则指定根据相应的规则来使用哪个URL,默认为:roundrobin,意为随机挑选;
yum的命令格式是
yum [options..] [command] [package] 常用command有: 显示服务器列表:yum repolist [all|enabled|disabled] 显示程序包: yum list [all | glob_exp1] [glob_exp2] [...] yum list {available|installed|updates} [glob_exp1] [...] 安装程序包: install package1 [package2] [...] 安装 reinstall package1 [package2] [...] 重新覆盖安装 升级程序包: update [package1] [package2] [...] 升级 downgrade package1 [package2] [...] 降级 检查可用升级: check-update 卸载程序包: remove | erase package1 [package2] [...] 查看程序包information: info [...] 查看指定的特性(可以是某文件)是由哪个程序包所提供: provides | whatprovides feature1 [feature2] [...] 清理本地缓存: clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] 构建缓存: makecache 搜索: search string1 [string2] [...] 以指定的关键字搜索程序包名及summary信息; 查看指定包所依赖的capabilities: deplist package1 [package2] [...] 查看yum事务历史:#可以显示管理员安装程序、卸载、升级的数量及日期 history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats] 安装及升级本地程序包: localinstall rpmfile1 [rpmfile2] [...] #安装 (maintained for legacy reasons only - use install) ocalupdate rpmfile1 [rpmfile2] [...] 升级 (maintained for legacy reasons only - use update) 包组管理的相关命令: groupinstall group1 [group2] [...] 组安装 groupupdate group1 [group2] [...] 组升级 grouplist [hidden] [groupwildcard] [...] 查询程序组 groupremove group1 [group2] [...] 卸载指定组里包括的所有程序 groupinfo group1 [...] 查看组信息
常用options有:
[root@Centos6 ~]# yum repolist #[all显示所有|enabled只显示启用的|disable只显示关闭的],默认只显示可用的 Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile * base: centos.ustc.edu.cn * extras: centos.ustc.edu.cn * updates: centos.ustc.edu.cn repo id repo name status base CentOS-6 - Base 6,696 extras CentOS-6 - Extras 60 test_yumrepo test_yumrepository Centos 6.6 X86_64 4,184 updates CentOS-6 - Updates 94 repolist: 11,034
查询程序
[root@Centos6 ~]# yum list pam* #查询以pam开头的程序 Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile * base: ftp.sjtu.edu.cn * extras: ftp.sjtu.edu.cn * updates: ftp.sjtu.edu.cn Installed Packages # install packages是已安装的程序 pam.x86_64 1.1.1-20.el6 @anaconda-CentOS-201410241409.x86_64/6.6 pam_passwdqc.x86_64 1.0.5-6.el6 @anaconda-CentOS-201410241409.x86_64/6.6 Available Packages #available packages是可升级和没有安装的包。除两个可升级之外,其余均没有安装 pam.i686 1.1.1-22.el6 base # pam.x86_64 1.1.1-22.el6 base # 可升级的 pam-devel.i686 1.1.1-22.el6 base pam-devel.x86_64 1.1.1-22.el6 base pam_krb5.i686 2.3.11-9.el6 base pam_krb5.x86_64 2.3.11-9.el6 base pam_ldap.i686 185-11.el6 base pam_ldap.x86_64 185-11.el6 base pam_passwdqc.i686 1.0.5-8.el6 base pam_passwdqc.x86_64 1.0.5-8.el6 base #可升级 pam_pkcs11.i686 0.6.2-15.el6 base pam_pkcs11.x86_64 0.6.2-15.el6 base pam_ssh_agent_auth.i686 0.9.3-118.1.el6_8 updates pam_ssh_agent_auth.x86_64 0.9.3-118.1.el6_8 updates [root@Centos6 ~]#
安装程序
[root@Centos6 ~]# yum install pam-devel.x86_64 #安装 …………内容过多,忽略部分 Dependencies Resolved ======================================================================================================== Package Arch Version Repository Size ======================================================================================================== Installing: pam-devel x86_64 1.1.1-22.el6 base 205 k Updating for dependencies: pam x86_64 1.1.1-22.el6 base 658 k Transaction Summary ======================================================================================================== Install 1 Package(s) Upgrade 1 Package(s) Total download size: 863 k Is this ok [y/N]: y #提示是否下载安装,如果存在依赖关系,键入y后,会自动下载安装 Downloading Packages: (1/2): pam-1.1.1-22.el6.x86_64.rpm | 658 kB 00:01 (2/2): pam-devel-1.1.1-22.el6.x86_64.rpm | 205 kB 00:00 ----------------------------------------------------------------------------------------------------------------------------------------- …………内容过多,忽略部分 Complete!
组查询
[root@Centos6 ~]# yum grouplist FTP* #查询以FTP开头的组名 Loaded plugins: fastestmirror, refresh-packagekit, security Setting up Group Process Loading mirror speeds from cached hostfile * base: centos.ustc.edu.cn * extras: centos.ustc.edu.cn * updates: centos.ustc.edu.cn Available Groups: FTP server #只有FTP server这个组 Done
组查询及组安装
[root@Centos6 ~]# yum groupinfo 'FTP server' #查询 Loaded plugins: fastestmirror, refresh-packagekit, security Setting up Group Process Loading mirror speeds from cached hostfile * base: centos.ustc.edu.cn * extras: centos.ustc.edu.cn * updates: centos.ustc.edu.cn Group: FTP server Description: Allows the system to act as an FTP server. Mandatory Packages: #强制安装的程序包 vsftpd Optional Packages:#可选安装的程序包 xferstats [root@Centos6 ~]# yum groupinstall 'FTP server' #安装 Loaded plugins: fastestmirror, refresh-packagekit, security Setting up Group Process Loading mirror speeds from cached hostfile * base: ftp.sjtu.edu.cn * extras: ftp.sjtu.edu.cn * updates: ftp.sjtu.edu.cn Resolving Dependencies --> Running transaction check ---> Package vsftpd.x86_64 0:2.2.2-21.el6 will be installed --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================== Package Arch Version Repository Size ======================================================================================================== Installing: vsftpd x86_64 2.2.2-21.el6 base 155 k Transaction Summary ======================================================================================================== Install 1 Package(s) Total download size: 155 k Installed size: 340 k Is this ok [y/N]: y Downloading Packages: vsftpd-2.2.2-21.el6.x86_64.rpm | 155 kB 00:00 Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Installing : vsftpd-2.2.2-21.el6.x86_64 1/1 Verifying : vsftpd-2.2.2-21.el6.x86_64 1/1 Installed: vsftpd.x86_64 0:2.2.2-21.el6 Complete!
升级
[root@Centos6 ~]#yum update …………………… python-dmidecode x86_64 3.10.13-3.el6_4 base 80 k rp-pppoe x86_64 3.10-16.el6 base 97 k satyr x86_64 0.16-2.el6 base 94 k vim-filesystem x86_64 2:7.4.629-5.el6 base 15 k Transaction Summary ======================================================================================================== Install 19 Package(s) Upgrade 407 Package(s) #升级的数量 Total download size: 377 M #升级的大小 Is this ok [y/N]: n #是否要升级。这里不升级。可以使用yum -y update 自动升级 Exiting on user Command
卸载组
root@Centos6 ~]# yum groupremove 'FTP server' Loaded plugins: fastestmirror, refresh-packagekit, security Setting up Group Process Loading mirror speeds from cached hostfile * base: centos.ustc.edu.cn * extras: centos.ustc.edu.cn * updates: centos.ustc.edu.cn Resolving Dependencies --> Running transaction check ---> Package vsftpd.x86_64 0:2.2.2-21.el6 will be erased --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================== Package Arch Version Repository Size ======================================================================================================== Removing: vsftpd x86_64 2.2.2-21.el6 @base 340 k Transaction Summary ======================================================================================================== Remove 1 Package(s) Installed size: 340 k Is this ok [y/N]: y Downloading Packages: Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Erasing : vsftpd-2.2.2-21.el6.x86_64 1/1 Verifying : vsftpd-2.2.2-21.el6.x86_64 1/1 Removed: vsftpd.x86_64 0:2.2.2-21.el6 Complete!
添加本地yum reposlist及添加网络yum reposlist
添加sohu的镜像到reposlist,以及创建本地reposlist
在/etc/yum.repos.d/目录下创建后缀名repo的文件
sohu镜像的网址是http://mirrors.sohu.com/centos/7.2.1511/os/x86_64/
本地的程序安装包目录是/root/cdrom
使用createrepo创建本地的reposlist的repodata信息
[root@Centos6 cdrom]# createrepo ./ #先创建本地的 repodataSpawning worker 0 with 4184 pkgsWorkers FinishedGathering worker results Saving Primary metadataSaving file lists metadataSaving other metadataGenerating sqlite DBsSqlite DBs complete [root@Centos6 cdrom]# yum repolist #查询系统默认的 yum reposlistLoaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile * base: centos.ustc.edu.cn * extras: centos.ustc.edu.cn * updates: centos.ustc.edu.cn repo id repo name status base CentOS-6 - Base 6,696 extras CentOS-6 - Extras 60 test_yumrepo test_yumrepository Centos 6.6 X86_64 4,184 updates CentOS-6 - Updates 94 repolist: 11,034 [root@Centos6 cdrom]# [root@Centos6 yum.repos.d]# cat test_add_reposlist.repo [local_add] name=local_add_root/cdrom baseurl=file:///root/cdrom #添加本地yum reposlist gpgcheck=0 enabled=1 [sohu_add] name=sohu-add baseurl=http://mirrors.sohu.com/centos/7.2.1511/os/x86_64/ #添加sohu yum reposlist gpgcheck=0 enabled=1 [root@Centos6 yum.repos.d]# [root@Centos6 yum.repos.d]# yum repolist Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile * base: centos.ustc.edu.cn * extras: centos.ustc.edu.cn * updates: centos.ustc.edu.cn repo id repo name status base CentOS-6 - Base 6,696 extras CentOS-6 - Extras 60local_add local_add_root/cdrom 4,184 #手动添加的yum reposlist已出现 sohu_add sohu-add 9,007test_yumrepo test_yumrepository Centos 6.6 X86_64 4,184 updates CentOS-6 - Updates 94 repolist: 24,225
编译apache2 source安装包
操作步骤
1、下载apache2 source包 2、configure 并提示安装路径、配置文件的存放路径,其他默认 3、make:configure与Makefile.ini,生成Makefile文件 4、make install5、添加apache2的执行文件、lib路径
第1步骤,下载并解压
[root@MFC ~]# ls 1 cdrom Downloads install.log.syslog Music Public www.163.com 1.sh Desktop httpd-2.2.31.tar.gz lvm.tar.bz2 mysnap Templates anaconda-ks.cfg Documents install.log lvtest Pictures Videos [root@MFC ~]# tar xf httpd-2.2.31.tar.gz [root@MFC ~]# ls 1 cdrom Downloads install.log lvtest Pictures Videos 1.sh Desktop httpd-2.2.31 install.log.syslog Music Public www.163.com anaconda-ks.cfg Documents httpd-2.2.31.tar.gz lvm.tar.bz2 mysnap Templates [root@MFC ~]#
第2步骤 configure
root@MFC httpd-2.2.31]# ./configure --prefix=/usr/local/apache2 --sysconfdir=/etc/httpd2 #安装目录在/usr/local/apache2 配置文件存放在/etc/httdp2 ………………太多内容了,只显示最后一小部分 config.status: creating support/envvars-std config.status: creating support/log_server_status config.status: creating support/logresolve.pl config.status: creating support/phf_abuse_log.cgi config.status: creating support/split-logfile config.status: creating build/rules.mk config.status: creating build/pkg/pkginfo config.status: creating build/config_vars.sh config.status: creating include/ap_config_auto.h config.status: executing default commands
第3步骤make 编译
[root@MFC httpd-2.2.31]# make …………太多内容了,只显示最后一小部分 ot/httpd-2.2.31/srclib/apr-util/xml/expat/libexpat.la /root/httpd-2.2.31/srclib/apr/libapr-1.la -lrt -lcrypt -lpthread make[1]: Leaving directory `/root/httpd-2.2.31'
第4步骤 make install。安装,其实也就是把各文件及目录复制到指定的位置。linux没有注册表,卸载时直接到各文件与目录删除便可rm -vrf
[root@MFC httpd-2.2.31]# make install…………………… 太多内容了,只显示最后一小部分 mkdir /usr/local/apache2/man/man8mkdir /usr/local/apache2/manualmake[1]: Leaving directory `/root/httpd-2.2.31'
检查安装的文件
[root@MFC httpd-2.2.31]# ls /etc/httpd2/ #配置文件已在/etc目录下 extra httpd.conf magic mime.types original [root@MFC httpd-2.2.31]# ls /usr/local/apache2/ #安装目录已存,且有bin\lib\man等种文件 bin build cgi-bin error htdocs icons include lib logs man manual modules [root@MFC httpd-2.2.31]#
安装完成后配置
添加环境变量
[root@MFC profile.d]# cat apache2.sh PATH=/usr/local/apache2/bin:$PATH [root@MFC profile.d]# echo $PATH /usr/local/apache2/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
导出库文件
[root@MFC ld.so.conf.d]# vim apache2.conf [root@MFC ld.so.conf.d]# ldconfig #让系统重新搜索库文件 [root@MFC ld.so.conf.d]# cat apache2.conf /usr/local/apache2/lib [root@MFC ld.so.conf.d]# 把includle目录入的文件复制到/usr/inclulde/apache2 [root@MFC ld.so.conf.d]# cp /usr/local/apache2/include/* /usr/include/apache2/ 导出man帮助文件 编辑/etc/man.config,添加一行 MANPATH [root@MFC etc]# vim man.config # # This file is also read by man in order to find how to call nroff, less, etc., # and to determine the correspondence between extensions and decompressors. # # MANBIN /usr/local/bin/man # # Every automatically generated MANPATH includes these fields # MANPATH /usr/man MANPATH /usr/share/man MANPATH /usr/local/man MANPATH /usr/local/share/man MANPATH /usr/X11R6/manMANPATH /usr/local/apache2/man
原创文章,作者:Net20-deamon,如若转载,请注明出处:http://www.178linux.com/17263