1. 软件管理简介
1.1linux界的两大主流:RPM与DPKG 【1-0】
1.dpkg
开发者:Debain Linux社群
linux
distrbution代表:衍生于Debain的发行版(Debain,B2D,Ubuntu等)
使用指令:dpkg
在线升级机制:APT(apt-get)
2.rpm
开发者:Red Hat
linux distrbution代表:Fedora, CentOS,
SuSE等
使用指令:rpm,rpmbuild
在线升级机制:yum
1.2什么是RPM与SRPM
1.RPM(redhat package
manager):yi以一种数据库的方式安装到linux的一套软件管理机制
档名格式:xxx.rpm
直接安装与否:可
内含程序类型:已编译
可否修改参数并编译:不可(没有configure和makefile)
特点:【1-1】
缺点:【1-2】
2.SRPM(source
RPM):包含原始码,相依性说明
档名格式:xxx.src.rpm
直接安装与否:不可(需要先编译成rpm)
内含程序类型:未编译的原始码
可否修改参数并编译:可(有configure和makefile)
1.3什么是i386,
i586, i686, noarch, x86_64【1-3】
案例:rp-pppoe-3.1-5.i386.rpm
----
一个完整的rpm软件包名(软件名称-软件的版本信息-释出的次数-适应的硬件平台-扩展名)【1-4】
1.4RPM的优点【1-5】
1.5RPM属性相依的克服方法:YUM在线升级【1-6】
/var/cache/yum
----yum本机清单
2.
RPM软件管理程序:rpm
2.1RPM默认安装的路径
/etc
----一些配置文件放置的目录
/usr/bin
----一些可执行文件
/usr/lib
----一些程序使用的动态函数库
/usr/share/doc
---一些基本的软件手册和说明文件
/usr/share/man
----一些man page
2.2RPM安装【1-8
常见的一些选项与参数】
注意:尽量不要使用 --force
# rpm -i
rp-pppoe-3.5-32.1.i386.rpm
----安装rp-pppoe-3.5-32.1.i386.rpm这个软件
案例一:安装并显示详细安装信息和安装进度
# rpm
-ivh rp-pppoe-3.5-32.1.i386.rpm
案例二:一次安装多个软件
# rpm -ivh a.i386.rpm
b.i386.rpm *.i386.rpm
---后面直接接很多软件
案例三:直接由网路上面某个档案安装,以网址安装
案例四:在没有网络的情况下,通过原始光盘安装一个名为pam-devel的软件
# mount /dev/cdrom
/media
----挂载光盘
# find /media -name
‘pam-devel‘
----找出档案的实际路径
# rpm -ivh pam-devel..
--test
----测试此软件是否具有相依性
# rpm -ivh pam-devel..
----直接安装
# umount /dev/vdrom
----卸载光盘
2.3RPM升级与更新(upgrate/freshen)
注意:在不使用yun更新的情况下,如果想升级系统所有软件,可以从映象站下载更新数据,然后通过-Fvh一口气升级【1-9】
2.4RPM查询(/var/lib/rpm/)【1-11】
注意:查询软件相关信息是不需要加上软件的版本号(会到/var/lib/)rpm这个数据库去查;查询软件相关档案信息是需要完整的档名
1.一些入门案例
案例一:找出主机中是否安装有logrotate这个软件
# rpm -q
logrotating ----不必加上版本
范例二:列出上题当中属于该软件所提供的所有目录与档案
# rpm -ql logrotate
----可以看出该软件到底提供了多少档案与目录,也可以追踪软件的数据
范例三:列出logrotate这个软件
的相关说明数据
# rpm -qi logrotate
范例四:分别找出logorate的配置文件与说明档
# rpm -qc logrotate
#
rpm -qd logrotate
范例五:若要成功安装,还需要什么软件
# rpm
-qR logrotate
范例六:找出/bin/sh是哪个软件提供的
# rpm -qf /bin/sh
---后面接的是档案而不是软件(查询系统的档案属于哪一个软件)
范例七:下载一个rpm档案,查看档案的需求档案
# rpm -qpR
filename.i386.rpm
2.一些练习案例
# rpm -qa | grep ^c | wc
-l
----查询系统上以c开头的软件(显示行数)
# rpm -qc
httpd
----查看apache所有配置文件放置在何处(apache的rpm软件文件名为httpd)
# rpm -qf
/etc/crontab
----如果误删了某个程序的配置文件,重新安装它但不知道程序名,虽然文件没了但/var/lib/rpm当中还有记录这个rpm软件
2.5RPM验证与数字签名(verify/signature)
1.验证(rpm -V)【1-12】
注意:如果查到的变更信息发生在二进制文件信息上就表示比较危险,有可能被入侵过
范例一:列出主机内的logrotate这个软件是否被更动过
# rpm -V
logrotate
范例二:查询一下,你的/etc/crontab是否被更动过(如何理解文件变更信息的含义【1-13,14】)
# rpm -Vf
/etc/crontab ---- -Vf
某个档案是否被更动过(会列出被更动的信息类型)
2.数字签名(digital
signature)【1-15】
注意:
1.CentOS使用的数字签名系统GnuPG(GNP
Privacy Guard,GNP)运用哈希算法
2.如果忘记加数字签名,很多原始软件就不能安装,除非用rpm选项略过数字签名
# ll
/etc/pki/RPM-GPG-KEY-CentOS-5
----CentOS的数字签名位置
#
cat /etc/pki/RPM-GPG-KEY-CentOS-5
----从中可以看出数字签名的本质是随机数
# rpm
--import /etc/pki/RPM-GPG-KEY-CentOS-5
----安装这个数字签名档
# locate
GPG-KEY
----查找系统中的数字签名档
# find
/etc -name ‘*GPG-KEY‘
# rpm -qa
| grep pubkey
----查看系统密匙的内容,列出密匙软件名称
# rpm -qi
gpg-pubkey-e8562897-459f07a4
----查询这个软件的详细信息
2.6RPM反安装与重建数据库(erase/rebuldedb)
注意:发生依赖关系时,先安装的后移除
1.找出与pam有关的软件名称,并移除pam这个软件
# rpm -qa | grep pam
----找到pam有关的软件
# rpm -e pam
----会发现因为依赖问题无法卸载(可以通过--nodeps强制卸载,不过会造成系统中其他软件的错误)
# rpm -e pam-devel
----pam-devel依赖于rpm,位于最顶层,可以顺利卸载
#
rpm --rebuidedb
----重建数据库
3.SRPM的使用:rpmbuide
注意:rpm软件包使用rpm指令,srpm使用rpmbuide指令
3.1利用默认值安装SRPM档案(--rebuide/--recomplie)
# rpm
--rebuide SRPM软件包
----编译并打包
# rpm
--recompile SRPM软件包
----编译打包并安装
3.2SRPM使用的路径与需要安装的软件
1.安装SRPM过程中使用到的路径【1-17】
注意:
1.不同发行版会稍微不同,但一般都会在/usr/src/底下,以CentOS为例:/usr/src/redhat/[SPES/SOURCES/BUILD/RPMS/SRPMS]
2.如果编译过程出现设定错误或者不明的错误,/tmp底下会产生一个相应的错误档,可以根据这个档案进行除错的工作
3.编译完成后除/usr/src/redhat/RPM以外的档案都会被删除
2.一个用于观察变编译过程的案例:
# rpm
--rebuild rp-pppoe-3.5-32.1.src.rpm
----用默认设定编译,并以rpm机制封装起来
# ll
/usr/src/redhat/RPMS/i386/
----底下有编译好的.rpm格式的文件
3.3配置文件的主要内容
案例一:修改配置文件,然后安装
注意: rp-pppoe.spec 的规则
1.整个档案以Summary开头,这部分的设定是最基础的内容
2.每个不同的段落都以%开头,例如%prep,%install
# rpm
-i rp-pppoe-3.5-32.1.i386.rpm
----会将SRPM解压后放置到/usr/src/redhat/
# find
/usr/src/redhat/ -type f
----主要含有原始码和一个重要的配置文件【1-18】
# cd
/usr/src/redhat/SPECS
----设定参数当就在这个地方
# vim rp-pppoe.spec
----
主要的将SRPM编译成RPM的配置文件,依据设定,最终的档名会是{name}-{version}-{release}-{ExclusiveArch}.rpm【1-19,20,21,22】,几个重要段落的说明【1-23,24】
3.4SRPM的编译指令(-ba/-bb)
# rpm -ba
rp-pppoe.spec
----编译并同时产生rpm档案和srpm档案
# rpm -bb
rp-pppoe.spec
----仅编译成rpm,执行过程【1-25】
3.5一个打包自己软件的案例
注意:这个案例我们使用之前用c语言完成的main,最终将其封装成为main-1.1.i386.rpm
1.在/usr/local/src/底下建立一个名为main-0.1的目录,并将源码解压缩到这个目录
# mkdir /usr/local/src/main-0.1
---建立新目录
# tar
-zxvf main.tgz -C
/usr/local/src/main-0.1
----解压缩到指定目录
# cd
/usr/local/src/main-0.1
# vim
Makefile
----建立原始码所需的make规则
LIBS=-lm
OBJS=main.o haha.o
sin_value.o cos_value.o
CFLAGS=-Wall
main:${OBJS}
gcc -o $@ ${OBJS}
${LIBS}
clean:
rm -f
${OBJS}
install:
install -m 755 main
$(RPM_INSTALL_ROOT)/usr/local/bin/main
----安装到指定目录
# cd
..
2.将打包好的源码放到/usr/src/redhat/下指定目录
# tar
-zcvf main-0.1.tar.gz main-0.1
----将main-0.1这个目录压缩成为main-0.1.tar.gz
# cp
main-0.1.tar.gz /usr/src/redhat/SOURCES
----将压缩好的源码放入指定目录
3.建立*.spec的配置文件
# cd /usr/src/redhat/SPECS
# vim
main.spec
----【1-26】
Summary:
calculate sin and cos value.
Name: main
Version: 0.1
Release: 1
Lience: GPL
...
4.开始编译成为RPM与SRPM
# rpmbuide -ba main.spec
5.安装、测试、实际查询
# rpm
-ivh /usr/src/redhat/RPMS/i386/main-0.1-1.i386.rpm
----安装
# rpm -ql
main
----列出属于该软件的档案与目录
# rpm -qi
main
----列出该软件的属性信息(main.spec)
4.YUM在线升级机制
4.1利用yum进行查询、安装、升级与移除功能
4.1.1查询功能(yum
[list/info/search/provides/whatprovides])【1-27】
# yum search raid
----查找磁盘阵列相关的软件
# yum info mdadm
----找出mdadm这个软件的功能为何类似rpm
-qai
# yum
list
----列出yum服务器上面提供的所有软件名称,类似rpm -qa
# yum
list updates
----列出目前服务器上可以升级的软件
# yum
provides passwd
----列出提供passwd这个档案的软件有哪些,类似rpm -qf
案例:利用yum找出pam打头的软件有哪些,其中还未安装的有哪些
# yum
list pam*
----显示信息分为Installed packages和Available packages(未安装或者可升级)两部分
4.1.2安装、升级功能:yum [install | update]
软件【1-28】
案例一:将前一个练习找到的未安装的软件安装起来
#
yum install pam-devel
----会自动解决依赖问题
4.1.3移除功能:yum[remove] 软件
# yum
remove pam-devel
----会自动检查依赖问题
4.2yum的配置文件
4.2.1入门案例
# vim
/etc/yum.repos.d/CentOS-Base.repo
----编辑base这个容器的配置文件【1-29】
案例一:列出目前yum server所使用的容器有哪些
# yum repolist all
---会发发现有多个容器,,enabled是激活的,因为有对应多个容器的配置文件
4.2.1修改容器产生的问题与解决之道
问题:本机列表与yum服务器的列表不同步,无法更新
原因:修改系统默认配置文件,指定特定的映象站台,但没有修改容器名,导致yum下载对应容器的清单/var/cache/yum下
解决:清除系统中的旧数据(yum clean
[packages/headers/all])
# yum clean all
----清除系统上所有的容器的数据【1-30】
4.3yun的软件群组功能【1-31】
案例一:列出目前容器与本机上面的可用于安装过的软件群组有哪些
# yum grouplist
----会发现系统上面大部分的软件都是以群组的方式安装的
# yum groupinstall
XFCE-4.4
----安装XFACE这个桌面环境接口
4.4全系统自动升级
# vim /etc/crontab
0 3 * * * root /usr/bin/yum -y
update
----设定每天3am在带宽充裕时升级系统(-y自动回答yes来完成下载与安装)
5.
管理的抉择:RPM还是Tarball【1-32】
6.重点回顾【1-33】
7.本章习题
情景模拟题一:实际安装php,php-mysql,php-devel,httpd-devel等软件
# rpm -q
httpd httpd-devel php php-devel php-mysql
----确认这些软件是否已经安装
# ifconfig
eth0
----查看网卡设定
# route
-n
----查看路由设定
# ping -c
2 192.168.201.254
----尝试连接路由 ,看路由是否回应,如果有说明TCP/IP设定好了
# dig
www.baidu.com
----测试查看百度的IP,确认DNS设置正确
# yum
install httpd httpd-devel php
php-devel php-mysql
----安装
简答题:【1-34,35】
14(23)软件安装:RPM,SRPM与YUM功能
原文:http://www.cnblogs.com/eli01/p/3559688.html