rpm管理软件包

rpm命令:
    rpm:
        数据库:/var/lib/rpm
    rpmbuild:
        安装、查询、卸载、升级、校验、数据库的重建、验证数据包等工作

包名的格式:
    name-version-release.arch.rpm
    bind-major-minor.release.arch.rpm

主版本号:重大改进
次版本号:某个子版本发生重大的变化
发型号:修复了部分bug,调整了一点功能

rpm包:
    二进制格式
        rpm包的作者下载源程序,编译配置完成
        bind-9.7.1-1.el7.noarch.rpm(noarch:代表平台无关)
        bind-9.7.1-1.el7.ppc.rpm

1、安装:
rpm -i  /PATH/TO/PACKAGE_FILE
    -h  以#显示进度,每个#代表2%
    -v  详细显示
    -vv 更加详细的显示

rpm -ivh /PAT/TO/PACKET_FILE

    --nodeps: 忽略依赖关系,会导致安装后无法运行
    --replacepkgs:重新安装,替换原有安装
    --force:强行安装,可以实现重新安装或降级
    --test: 测试安装

2、查询(比如zsh-4.2.6-6.el5-i386.rpm)
rpm -q zsh
rpm -q zs*
rpm -qa | grep zsh

rpm -qc PACKAGE_NAME:查询指定包的配置文件
rpm -qi PACKAGE_NAME:查询指定包的信息
rpm -ql PACKAGE_NAME:查询指定包安装后生成的文件路径
rpm -qd PACKAGE_NAME:查询指定包安装的帮助文件
rpm -q --scripts PACKAGE_NAME: 查询指定包中的脚本

rpm -qf /path/to/somefile: 查询指定的文件是由是哪个rpm包安装生成的

如果某rpm包未安装,提前查看一些信息
rpm -qp[i|f|l] /PATH/TO/PACKAGE_FILE

3、升级
rpm -Uvh /PATH/NEW_PACKAGE_FILE:如果装有老版本的,则升级;否则,安装
rpm -Fvh /PATH/NEW_PACKAGE_FILE:如果装有老版本的,则升级;否则,退出

rpm -Uvh --oldpackage PACKAGE_NAME:降级

4、卸载
rpm -e PACKAGE_NAME
    --nodeps

5、校验
rpm -V zsh

6、重建数据库
    rpm
        --rebuilddb:重建数据库
        --initdb:初始化数据库

7、校验来源的合法性,及软件的完整性
#ls /etc/pki/rpm-gpg

rpm --import /PATH/TO/PACKAGE_FIFE
rpm -K /PATH/TO/PACKAGE_FILE
    dsa,gpg:验证来源的合法性,也及验证签名;可以使用--nosignature,忽略此项
    sha1,md5:验证软件包完整性;可以使用--nodigest,忽略此项

yum管理软件包

C/S:client,server

yum仓库的元数据文件:
primary.xml.gz
    所有rpm包的列表
    依赖关系
    每个RPM安装生成的文件列表
filelists.xml.gz
    当前仓库中所有文件列表
other.xml.gz
    额外的信息,RPM的修改日志
repomd.xml
    包含primary.xml.gz、filelists.xml.gz、other.xml.gz的时间戳和校验和

comps*.xml:RPM包分组信息

yum配置文件的格式:
[Repo_ID]
name=Description
baseurl=
    ftp://
    http://
    file:///
enabled={1|0}
gpgcheck={1|0}
gpgkey=file:///etc/pki/rpm-gpg/xxx

yum [options] [command] [package]

list [all|available|installed|updates]:列出所有可以使用的rpm包,available仓库中有且可以使用
clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]:清空缓存
repolist [all|enabled|disabled]:列出可以利用的仓库
install [-y|--nogpgcheck]
remove|erase:卸载
provides|whatprovides:查看指定的文件或特性是由哪个包安装生成的

grouplist
groupinstall
groupinfo
groupremove

example:
    yum list all zsh*
    yum repolist all
    yum install PACKAGE_NAME
    yum provides /etc/inittab

如何自建yum仓库:
# cd
createrepo

编译三步骤:
前提:准备开发环境(编译环境)
# tar && cd
# ./configure
    --help
    --prefix=/path/to/some/where
    -sysconfidir=/path/to/configfile_path
# make install

手动安装文件的配置方法:
1、修改PATH环境变量,以能够识别此程序的二进制文件路径
    (1)修改/etc/profile文件
    (2)在/etc/profile.d目录下建立一个以.sh为后缀的文件,在里面定义export PATH=$PATH:/path/to/somewhere
2、默认情况下,系统搜索文件的路径/lib、/usr/lib;
    在/etc/ld.so.conf.d中创建以.conf为后缀名的文件,而后要添加的路径直接写至
    # ldconfig -v 通知系统重新搜寻路径,并显示重新搜寻库的过程
3、头文件:输出给系统
    默认:/usr/local/tengine/include
    增加头文件搜寻路径,使用链接进行
    ln -s /usr/local/tengine/include/* /usr/include 或
    ln -s /usr/local/tengine/include   /usr/include

4、man文件的安装路径在--prefix指定的路径下
    (1)man的配置文件在/etc/man.config,添加一条MANPATH
    (2)man -M /PATH/TO/MAN_DIR  COMMAND


备份地址: 【rpm和yum