rpm及yum

库文件

查看二进制程序所依赖的库文件:

ldd /PATH/TO/BINARY_FILE

[root@localhost ~]# ldd /bin/bash

blob.png

管理及查看本机装载的库文件:

ldconfig

/sbin/ldconfig -p显示本机已经缓存的所有可用库文件

名及文件路径映射关系

配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf

缓存文件:/etc/ld.so.cache

 

程序包管理器:

功能:将编译好的应用程序的各组成文件打包一个或几个

程序包文件,从而方便快捷地实现程序包的安装、卸载、查询、升级和校验等管理操作

1.包文件组成 ( 每个包独有)

 RPM 包内的文件

 RPM 的元数据,如名称,版本,依赖性,描述等

 安装 或卸载时运行的脚本

2.数据库( 公共)

 程序包名称及版本

 依赖关系

 功能说明

 包安装后生成的各文件路径及校验码信息

 

搜索引擎:

http://pkgs.org

http://rpmfind.net

 

rpm包管理

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

 

升级:

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:

 

升级注意项:

(1)不要对内核做升级操作;Linux 支持多内核版本并存,因此对直接安装新版本内核

(2)如果原程序包的配置文件安装后曾被修改,升级时,新版本的提供的同一个配置文件并不会直接覆盖老版  本的配置文件,而 把新版本的文件重命名

      (FILENAME.rpmnew)

 

包查询

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

[select-options]

  -a:  所有包 

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

  [root@localhost ~]# rpm -qf /etc/issue

  centos-release-7-2.1511.el7.centos.2.10.x86_64

  应用场景:文件丢失,可通过相同系统机器查询来源于哪个rpm包

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

  [root@localhost ~]# rpm -qpl nginx-1.8.0-1.el6.ngx.x86_64.rpm

     blob.png

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

  [root@localhost ~]# rpm -q –whatprovides bash   //谁提供了bash这个能力

  bash-4.2.46-19.el7.x86_64

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

  [root@localhost ~]# rpm -q –whatrequires bash  //谁依赖于bash

     blob.png

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

  [root@localhost ~]# rpm2cpio nginx-1.8.0-1.el6.ngx.x86_64.rpm |cpio -tv

    blob.png

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

  [root@localhost ~]# rpm2cpio nginx-1.8.0-1.el6.ngx.x86_64.rpm |cpio -idv 

  ./usr/share/nginx/html/index.html   //释放需要的某个文件

  ./usr/share/nginx/html/index.html

 

 [query-options]

     –changelog :查询rpm 包的changelog

     [root@localhost ~]# rpm -q –changelog tree

     blob.png

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

     [root@localhost ~]# rpm -qlc bash

       blob.png

      -d:查询程序的文档  document

      [root@localhost ~]# rpm -qd tree

       blob.png

      -i: information

      [root@localhost ~]# rpm -qi tree

      blob.png

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

      [root@localhost ~]# rpm -ql bash

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

      [root@localhost ~]# rpm -q –scripts bash

       blob.png

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

      [root@localhost ~]# rpm -qR tree

      blob.png

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

      [root@localhost ~]# rpm -q –provides bash

      blob.png

 

卸载

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

 

包来源合法性验正及完整性验正:

   完整性验正:SHA256

   来源合法性验正:RSA

公钥加密:

   对称加密:加密、解密使用同一密钥;

   非对称加密:密钥是成对儿的

       public key: 公钥,公开所有人

       secret key: 私钥,不能公开

导入所需要公钥:

   rpm -K  rpmfile 检查包的完整性和签名

   [root@localhost ~]# rpm -K nginx-1.8.0-1.el6.ngx.x86_64.rpm

   nginx-1.8.0-1.el6.ngx.x86_64.rpm: RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: 

   (MD5) PGP#7bd9bf62)  

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

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

 

 

rpm数据库

数据库重建:  /var/lib/rpm

rpm {–initdb|–rebuilddb}

   initdb:  初始化

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

   否则,不执行任何操作

   blob.png

   rebuilddb :重建

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

 

yum 客户端配置文件:

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

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

仓库指向的定义:

   [repositoryID]

   name=Some name for this repository

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

   enabled={1|0}

   gpgcheck={1|0}

   gpgkey=URL

   enablegroups={1|0}

   failovermethod={roundrobin|priority}

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

   cost= 默认为1000

 

[base]

name=CentOS-$releasever – Base

baseurl=http://10.1.0.1/cobbler/ks_mirror/7/

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

enabled=1

 

生成库

yum-config-manager –add-repo= http://172.16.0.1/cobbler/ks_mirror/CentOS-X- x86_64/

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

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

 

显示仓库列表:

repolist [all|enabled|disabled]

blob.png

显示程序包:

   yum list [all | glob_exp1] [glob_exp2] […]

   yum list {available|installed|updates} [glob_exp1]  […]

   blob.png

安装程序包:

   install package1 [package2] […]

   reinstall package1 [package2] […] 

 

升级程序包:

update [package1] [package2] […]

downgrade package1 [package2] […] ( 降级)

检查可用升级:

check-update

卸载程序包:

remove | erase package1 [package2] […]

 

查看程序包information: :

   info […]

    blob.png

查看指定的特性( 可以是某文件) 是由哪个程序包所提供:

   provides | whatprovides feature1 [feature2] […]

   blob.png

清理本地缓存:

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

   du -sh /var/cache/yum   137M

   yum clean all  再看占用量变小了

构建缓存:

   makecache

    blob.png     

搜索:search string1 [string2] […]

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

   blob.png

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

   deplist package1 [package2] […]

   blob.png

查看yum 事务历史:

   history [info|list|packages-list|packages-info|summary|addon-info|redo|undo| rollback|new|sync|stats]

   yum history

   yum history info 2  //查看某步的信息

   yum history undo 2  //重新执行某步

   yum history new  // 清空history记录

   blob.png

    blob.png

    blob.png

   blob.png

   blob.png

    blob.png

日志:/var/log/yum.log

 

安装及升级本地程序包:

   * localinstall rpmfile1 [rpmfile2] […]

    ( 用install 替代)

   * localupdate rpmfile1 [rpmfile2] […]

    ( 用update 替代)

包组管理的相关命令:

    groupinstall group1 [group2] […]

    groupupdate group1 [group2] […]

    grouplist [hidden] [groupwildcard] […]

    groupremove group1 [group2] […]

    groupinfo group1 […]

 

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

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

    # mount /dev/cdrom /media/cdrom

(2)创建配置文件

    [CentOS7]

    name=

    baseurl=

    gpgcheck=

    enabled=

 

 yum 的命令行选项:

    –nogpgcheck :禁止进行gpg check

    -y:  自动回答为“yes”

    -q :静默模式

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

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

    –noplugins

 

yum仓库

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>

 

baseurl=ftp://mirrors.magedu.com/repos/$releaserver/$basearch  //根据系统版本自适应

 

centos6

cd /misc

cd cd

epel文件中添加

[cdrom]

baseurl=file:///misc/cd   自动挂载

gpgcheck=0

 

lftp 10.1.0.1

cd pub/Sources/7.x64

mget *

mv *.rpm /root/repodb

cd /root/repodb

createrepo .  创建仓库

epel文件中添加

[lftp]

baseurl=file:///root/repodb

gpgcheck=0

blob.png

 

 

误删rpm命令的恢复方法

光盘启动,进入救援模式,开shell

centos6

bash-4.1#

mdkir /mnt/cdrom

mount /dev/cdrom /mnt/cdrom

centos7

rpm -ivh Packages/rpm-r4.11.3.rpm –root=/mnt/sysimage

 

 

 

程序包编译

源代码–> 预处理–> 编译(gcc)–> 汇编–> 链接–>

C 代码编译安装三步骤:

 1./configure: :

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

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

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

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

开发工具:

   autoconf:  生成configure 脚本

   automake :生成Makefile.in

 

编译C 源代码:

前提:提供开发工具及开发环境

开发工具:make, gcc等 等

开发环境:开发库,头文件

glibc :标准库

yum groupinstall "Development Tools"

 

第一步:configure 脚本

   选项:指定安装位置、指定启用的特性

   –help:  获取其支持使用的选项

   选项分类:

        安装路径设定:

        –prefix=/PATH:  指定默认安装位置, 默认为/usr/local/

        –sysconfdir=/PATH :配置文件安装位置

    Optional Features:  可选特性

        –disable-FEATURE

        –enable-FEATURE[=ARG]

   Optional Packages:  可选包,

        –with-PACKAGE[=ARG], 依赖包

        –without-PACKAGE,

第二步:make

第三步:make install

 

安装后的配置:

(1)二进制程序目录导入至PATH 环境变量中;

  编辑文件/etc/profile.d/NAME.sh

  export PATH=/PATH/TO/BIN:$PATH

(2)导入库文件路径

  编辑/etc/ld.so.conf.d/NAME.conf

  添加新的库文件所在目录至此文件中;

  让系统重新生成缓存:

  ldconfig [-v]

(3)导入头文件

  基于链接的方式实现: ln -sv

(4)导入帮助手册

  编辑/etc/man.config|man_db.conf 文件 ,添加一个MANPATH

 

实战

编译安装apache 2.2, 并启动此服务

(1)bunzip2 httpd-2.2.29.tar.bz2

   tar xf httpd-2.2.29.tar

(2)./configure –prefix=/usr/local/http2 –sysconfdir=/etc/http2

(3)make && make install

(4)vim /etc/man_db.conf  添加

   MANDATORY_MANPATH         /usr/local/http2/man

    此时可以用man帮助

(5)/usr/local/http2/bin/apachectl start

(6)netstat -tnlp|grep 80 查看80端口是否在线

    blob.png 

(7)telnet localhost 80 试是否能够连接

   如果不行,iptables -F 清空防火墙链路规则

(8)links 访问apache服务

    blob.png

    blob.png

 

 

 

 

 

 

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

(0)
victorycommandervictorycommander
上一篇 2016-08-28
下一篇 2016-08-29

相关推荐

  • python装饰器

    装饰器本质是一个装饰器函数,在不改变一个函数的函数体本身的情况下,实现函数体本身外其他的功能 1.实现一个装饰器 def  logger(fn):                         #装饰器函数必须只能传入一个参数,那就是被装饰函数     print(‘in’)     def wrapper(*args,**kwar…

    Linux干货 2017-10-23
  • 网卡名称更改

    网卡是计算机进行网络通信的必须的设备。在CentOS6及其更早的系统中,网卡设备在系统中的名称命名为eth#(#为0,1,2…之类的数字)。在内核版本为3.0.0及其以后的Linux发行版中,网卡设备在系统中名称变得很长,变得不好识别以及不利于管理。为了更好的管理,我们将新的网络设备命名改为传统的命名。 网卡名称更改 在CentOS系统中操作 在RHEL7系…

    Linux干货 2016-11-23
  • 马哥教育网络21期+第二周练习博客

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 常用文件管理类命令有cp、mv、rm。 # cp命令:文件复制命令     cp [OPTION]… [-T] SOURCE DEST 单文件复制     cp [OPTION]… SOURC…

    Linux干货 2016-07-26
  • hello 北京&Linux启程

    北京初感&Linux启程

    Linux干货 2018-03-26
  • 3.用户和组管理

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# who root     tty1         2016-12-…

    Linux干货 2017-07-16
  • Linux的启动流程

    Linux的启动流程大致上如下图. 现在详细说明一下每个步骤: 第一阶段 当系统启动时,系统首先会加载BIOS。BIOS的首先会检查各硬件设备,当检查完毕没有问题之后。BIOS会根据设定的BootSequence来寻找可以引导系统的设备。一般而言,Linux是通过磁盘上MBR来引导系统的。 第二阶段 MBR是Master Boot Record,是位于磁盘第…

    Linux干货 2016-02-28