软件包管理

rpm 与 yum 的用法

blob.png

源代码:name-VERSION.tar.gz|bz2|xz

VERSION: major.minor.release

rpm包命名方式:

name-VERSION-release.arch.rpm

例:bash-4.2.46-19.el7.x86_64.rpm

VERSION: major.minor.release

release:release.OS

常见的arch:

x86: i386, i486, i586, i686

x86_64: x64, x86_64, amd64powerpc: ppc

跟平台无关:noarch


包:分类和拆包

Application-VERSION-ARCH.rpm: 主包

Application-devel-VERSION-ARCH.rpm开发子包

Application-utils-VERSION-ARHC.rpm其它子包

Application-libs-VERSION-ARHC.rpm其它子包


blob.png

解决依赖包管理工具:

yum:rpm包管理器的前端工具

apt-get:deb包管理器前端工具

zypper: suse上的rpm前端管理工具

dnf: Fedora 18+ rpm包管理器前端管理工具


blob.png

获取程序包的途径

    1)系统发版的光盘或官方服务器;

    2)项目官方站点

    3)第三方组织

            Rpmforge:RHEL推荐

            搜索引擎:

                    http://pkgs.org

                    http://rpmfind.net

                    http://rpm.pbone.net

                    http://sourceforge.net

     4)自己制作

注意:查其合法性:来源合法性,程序包的完整性

 

blob.png

CentOS系统上使用rpm命令管理程序包:

        安装、卸载、升级、查询、校验、数据库维护

  安装

  rpm {-i|–install} [install-options] PACKAGE_FILE…

        -v: verbose 过程显示

        -vv:    详细过程显示

        -h: 以#显示程序包管理执行进度

        rpm -ivh  PACKAGE_FILE ..

                                    [install-options]

                                    –test: 测试安装,但不真正执行安装;dry run模式

                                    –nodeps:忽略依赖关系

                                    –replacepkgs| replacefiles

                                    –nosignature: 不检查来源合法性

                                    –nodigest:不检查包完整性

                                    –noscipts:不执行程序包脚本片断

                                    %pre: 安装前脚本;–nopre

                                    %post: 安装后脚本;–nopost

                                    %preun: 卸载前脚本;–nopreun

                                    %postun: 卸载后脚本;–nopostun


blob.png


rpm {-U|–upgrade} [install-options] PACKAGE_FILE…

rpm {-F|–freshen} [install-options] PACKAGE_FILE…

        upgrade:安装有旧版程序包,则“升级”

        如果不存在旧版程序包,则“安装”

        freshen:安装有旧版程序包,则“升级”

        如果不存在旧版程序包,则不执行升级操作

        rpm -Uvh PACKAGE_FILE …

        rpm -Fvh PACKAGE_FILE …

                                        –oldpackage:降级

                                        –force: 强行升级

blob.png                   

blob.png

rpm {-q|–query} [select-options] [query-options]

                    [select-options]

                    -a: 所有包

                    -f: 查看指定的文件由哪个程序包安装生成

                    -p rpmfile:针对尚未安装的程序包文件做查询操作;

                    –whatprovidesCAPABILITY:查询指定的CAPABILITY由哪个包所提供

                    –whatrequiresCAPABILITY:查询指定的CAPABILITY被哪个包所依赖

                                                [query-options]

                                                –changelog:查询rpm包的changelog

                                                -c: 查询程序的配置文件

                                                -d: 查询程序的文档

                                                -i: information

                                                -l: 查看指定的程序包安装后生成的所有文件;

                                                –scripts:程序包自带的脚本片断

                                                -R: 查询指定的程序包所依赖的CAPABILITY;

                                                –provides: 列出指定程序包所提供的CAPABILITY;

如果删除某个命令的文件  而不想重新安装 只想安装其包中的一个 就要用到一下两个命令

  rpm2cpio 包文件|cpio–itv预览包内文件

rpm2cpio 包文件|cpio–id “*.conf”释放包内文件

           

查询用法:

-qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE

-qpi PACKAGE_FILE, -qpl PACKAGE_FILE, …

-qa

卸载:

rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–notriggers] [–test] PACKAGE_NAME …

rpm -e 包名


blob.png

rpm {-V|–verify} [select-options] [verify-options]

rpm -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 -K|checksigrpmfile检查包的完整性和签名

rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

CentOS 7发行版光盘提供:RPM-GPG-KEY-CentOS-7

rpm -qagpg-pubkey*


blob.png

数据库重建:

/var/lib/rpm

rpm {–initdb|–rebuilddb}

            initdb: 初始化 (较为安全推荐)

                如果事先不存在数据库,则新建之

                否则,不执行任何操作

            rebuilddb:重建

                无论当前存在与否,直接重新创建数据库


blob.png

文件服务器:

ftp://

http://

file:///

blob.png

yum客户端配置文件:

    /etc/yum.conf:为所有仓库提供公共配置

    /etc/yum.repos.d/*.repo:为仓库的指向提供配置

            仓库指向的定义:

                        [repositoryID]

                        name=Some name for this repository

                        baseurl=url://path/to/repository/

                        enabled={1|0}默认1

                        gpgcheck={1|0}默认1

                        gpgkey=URL

                        enablegroups={1|0}

                        failovermethod={roundrobin|priority}

                        默认为:roundrobin,意为随机挑选;

                        cost= 默认为1000

                    

yum-config-manager –disable “仓库名" 禁用仓库

yum-config-manager –enable “仓库名” 启用仓库

            

显示仓库列表:

repolist[all|enabled|disabled]

显示程序包:

list

# 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 | whatprovidesfeature1 [feature2] […]

清理本地缓存:

clean [ packages | metadata | expire-cache | rpmdb| plugins | all ]

构建缓存:

makecache

搜索:search string1 [string2] […]

以指定的关键字搜索程序包名及summary信息

查看指定包所依赖的capabilities:

deplistpackage1 [package2] […]

查看yum事务历史:

history [info|list|packages-list|packages-info|

summary|addon-info|redo|undo|

rollback|new|sync|stats]

yum history

yum history info 6

yum history undo 6

日志:/var/log/yum.log

安装及升级本地程序包:

* localinstallrpmfile1 [rpmfile2] […]

(用install替代)

* localupdaterpmfile1 [rpmfile2] […]

(用update替代)

包组管理的相关命令:

groupinstallgroup1 [group2] […]

groupupdategroup1 [group2] […]

grouplist[hidden] [groupwildcard] […]

groupremovegroup1 [group2] […]

groupinfogroup1 […]

如何使用光盘当作本地yum仓库:

(1) 挂载光盘至某目录,例如/media/cdrom

# mount /dev/cdrom/media/cdrom

(2) 创建配置文件

[CentOS7]

name=

baseurl=

gpgcheck=

enabled=

yum的命令行选项:

–nogpgcheck:禁止进行gpgcheck

-y: 自动回答为“yes”

-q:静默模式

–disablerepo=repoidglob:临时禁用此处指定的repo

–enablerepo=repoidglob:临时启用此处指定的repo

–noplugins:禁用所有插件

blob.png

yum的repo配置文件中可用的变量:

$releasever: 当前OS的发行版的主版本号

$arch: 平台,i386,i486,i586,x86_64等

$basearch:基础平台;i386

$YUM0-$YUM9:自定义变量

实例:

http://server/centos/$releasever/$basearch/

http://server/centos/7/x86_64

http://server/centos/6/i384

创建yum仓库:

createrepo[options] <directory>

blob.png

C代码编译安装三步骤:

1、./configure:

(1) 通过选项传递参数,指定启用特性、安装路径等;执行时会参考用户的指定以及makefile.in文件生成makefile

(2) 检查依赖到的外部环境

2、make:根据makefile文件,构建应用程序

3、make install:复制文件到相应路径

开发工具:

autoconf: 生成configure脚本

automake:生成Makefile.in

注意:安装前查看INSTALL,README



1安装包组

yum groupinstall  "Development tools"

2下载并解开源码包

tar xvf httpd-2.2.29.tar.bz2 

3 ./configure

./configure –prefix=/usr/local/http2  –sysconfdir=/etc/http2

4 make

5 make install

6 启动web服务程序

netstat -atn

 ./apachectl start

7 测试:关防火墙,浏览器访问

iptables -vnL

iptables -F

yum install links

links 10.1.252.192


                    










原创文章,作者:Nicolas ZhaoIV,如若转载,请注明出处:http://www.178linux.com/36498

(0)
Nicolas ZhaoIVNicolas ZhaoIV
上一篇 2016-09-01
下一篇 2016-09-01

相关推荐

  • N25第一周博客作业

    本周加班很多,视频未看完,下周补上

    Linux干货 2016-12-04
  • 编译内核制作小型的linux

    1.  前言       今天我将会给大家带来如何定制一个属于自己linux系统,也就是编译内核,那为什么要编译内核呢? 内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统管理,决定着系统的性能和稳定性。Linux作为一个自由软件,在广 大爱好者的支持下,内核版本不…

    Linux干货 2016-08-03
  • N22-第五周博客作业

    1、显示当前系统上root、fedora或user1用户的默认shell; [root@bogon ~]# grep -E  "^(root|fedora|user1)" /etc/passwd  | cut -d: -f1,7r…

    Linux干货 2016-09-26
  • 第三周_Linux用户基础命令

    文本操作命令
    用户相关命令

    Linux干货 2017-12-24
  • cp和ln命令简述

    cp和软ln命令简述 cp          备注: 1.       该命令可以自动判断你所复制的是文件还是目录 2.       当源是一个文件,目标(目的…

    2017-08-19
  • 第八周作业

    1. 写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;     在线的主机使用绿色显示;     不在线的主机使用红色显示; #!/bin/bash # for i in {1..254};do         pi…

    Linux干货 2017-02-24