Linux程序包管理方式

Linux程序包安装和管理方式共计三种:

         一、[yum|dnf],通过官网或者其他开源网站提供的文件服务器,本机镜像源等途径进行安装。

        二、rpm,通过官网或者其他开源网站通过下载rpm包,在本地继续安装

        三、源代码编译,通过官网或者其他开源网站下载源代码自己编译安装

yum|dnf 

        yum|dnf 安装程序包的机制是通过官网或者其他开源网站提供的文件服务器、本机镜像源等,在这个文件服务器上面存储了众多rpm包,以及包的相关的元数据(放置于特定目录文件:repodata),因此我们只需要让本机能够访问这个文件服务器即可。

        一、yum|dnf 安装的优势:在远程的文件服务器上面储存了元数据,元数据记录了,每一个程序报的依赖关系,当我们需要下载某个程序包时,首先文件服务器会自行读取元数据确定相关安装报的依赖关系,将所有这个程序需要依赖的库函数,程序包等等一起按照程序包要求的特定顺序进行安装。这样安装避免了我们自己去确定程序的依赖关系,节约了时间。

    1,文件服务器格式(共四类):

        (ftp文件服务器)  ftp://

        (http文件服务器) http://

        (ntf文件服务器)  ntf://

        (本机镜像服务器) file:///

    1,现在本机查看是否安装了yum或者dnf工具,rpm -q [yum|dnf]

            [root@localhost ~]# rpm -q yum

            yum-3.4.3-132.el7.centos.0.1.noarch

         可以看到本机已经安装了yum工具。

    2,本机yum客服端:

            配置文件:

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

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

                常用的仓库配置,具体的每个信息请man yum.conf

          库指向的定义

        [repositoryID]—->这个yum源的名字,必须有

        name=Some name for this repository——>对于这个yum详细描述

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

        url://path/to/repository

       url://path/to/repository

                yum源的指向地址,这是本地yum元的地址

        mirrorlist 互联网镜像指向,这个yum必须支持插件功能]必须有

        enabled={1|0}是否启动,0代表不启用,1代表启用

        gpgcheck={1|0}是否检查这个软件包的来源是否合法,0代表不启用,1代表启用

        repo_gpgcheck={1|0}是否检查这个yum源合法,0代表不启用,1代表启用

        gpgkey=URL 软件包合法性key的位置,一般都在本机的

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

        enablegroup={0|1} 检查软件包组是否合法,0代表不启用,1代表启用

        failovermethod={roundrobin|priority} yum源的扫描方式,一共两种方式:

        1、轮循扫描,随机从一个baseurl地址开始,当这个baseurl链接服务器失败后才链接下一个baseurl地址

        2、priority,直接从上到下依次扫描

        bandwidth

        username :服务器不允许匿名显示需要输入用户名    

        passwd :服务器上面有密码是需要输入面

        显示仓库列表

        yum

    repolist [all|enabled|disabled]

    yum程序包管理工具的功能:

    升级/检查/卸载

        查看程序包informat

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

    provides|whatprovides

    清理本地缓存

    clean

    构建缓存

    makecache (没必要做,每次安装都会构建缓存,更新缓存)

    搜索

    search(模糊匹配机制)

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

    重新安装

    reinstall

    程序包降级

    downgrade

    显示某个程序包的依赖关系

    deplist

    查看yum事务历史

    yum history

    yum history summary

    yum 来安装rpm包,可以解决rpm 的依赖关系

    localinstall(可以直接使用insall)

    localupdate(直接使用update)

    显示包组

    grouplist

    包组安装:

    groupinstall

    包组信息

    groupinfo

    包组移除:

    groupremove

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

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

    # mount -r -t iso9660 /dev/cdrom /media/cdrom

     (2) 创建配置文件

     [CentOS7]

     name=

     baseurl=

     gpgcheck=

     enabled=

     yum的命令行选项

     –nogpgcheck  禁止执行gpg check

     -y 自动回答为“yes”

     -q 静默模式:

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

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

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

    $releasever :当前os发行版的主板号

    $arch :平台类型

    $basearch :基础平台

    $YUM0-YUM9  (基本没用)

    自建yum源

    createrepo [options]<directory>

    这个命令里面的选项基本没用,若有需要自行man

    二、rpm

    rpm=rpm is packeage manager

    rpm的优势:

                 使用RPM最大的好处在于它提供快速之安装,减少编译安装之侦错困扰。对于最终用户来说,RPM所提供的众多功能使维护系统要比以往容易的多。安装、卸载和升级RPM软件包均只需一条命令即可完成,所有烦琐的细节问题无须您费心。RPM维护一个所有已安装的软件包和文件的数据库,可以让您进行功能强大的软件包查询和验证工作。

在软件包升级过程中,RPM会对配置文件进行特别处理,因此您绝对不会丢失以往的定制信息——这对于直接使用.tar.gz文件是不可能的。对于程序员,RPM可以让您连同软件的源代码打包成源代码和二进制软件包供最终用户使用。这个过程十分简单,整个过程由一个主文件和可能的补丁程序组成。RPM在软件的新版本发布时,这种“原始”源代码,补丁程序和软件生成指令的清晰描述简化了软件包的维护工作

                rpm包的劣势:需要自己解决程序包的依赖关系

       rpm包命名的格式:

redis-3.0.2-1.centos7.x64.rpm

name-VERSION-release(打包次数).arch.rpm

VERSION:majior.minor.release(发行版本)

release.arch:rpm包的发行号

relese.os:2.el7.i386.rpm

archetceure:i386,x64(amd64),ppc,noarch

changelog:每次rpm更改后都有一个changelog开记录更改信息

拆包:

redis-3.0.2.tar.gz–>redis-3.0.2-1.centos7.x64.rpm

把一个包当中的n个功能拆开,可以实现按需安装

拆包后分为:主包和支包

主包:name-VERSION-release.arch.rpm

支包:name-function-release.arch.rpm

function:devel,utils(工具程序),libs(库包)

    rpm程序包管理器的功能

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

rpm 命令:rpm [options] [package_file]

安装:-i,–install

升级:-U,-update,-F,–freshen

卸载:-e,–erase

查询:-q,–query

校验: -v,–verify

数据库维护;–rebuilddb,–initdb

安装:-i,–install

-h:hash ,以50个#来表示安装进度

-v,–verbose:显示安装过程的详细信息

-vv:更详细的过程输出

-vvv:超级详细的过程输出

组合使用:-ivh;-ivvh

–test:不执行真正的安装过程,而仅仅报告依赖关系及冲突信息

–nodeps:忽略依赖关系,副作用是能安装成功,不一定能运行成功;不建议这样安装

–replacepkgs:覆盖安装–重新安装并覆盖原文件,但是修改的配置文件不会还原,因为系统默认是你有意识的修改,删除可以恢复

–force:强制安装

注意:rpm可以自带脚本:

四类:

preinstall:安装过程开始之前运行的脚本,%pre,–nopre

postinstall:安装过程完成之后的脚本,%post,–nopost

preuninstall:卸载过程真正开始执行之前运行的脚本,%preun,–nopreun

postuninstall:卸载过程完成之后运行的脚本,%postun,–nopostun

–noscripts 所有脚本都不执行

–nosingnature 不检查包签名信息,不检查来源合法性

–nodigest不检查包完整性信息,md5信息

升级

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

-U 升级或者安装

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

-F 升级

组合使用-iUh;-iFh

–test,不执行真正的安装或者升级过程,而仅仅报告依赖关系和冲突信息等

–oldpackage :将级;

–force :强制升级;

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

(2)如果某原程序包的配置文件安装后层级被修改过,升级是,新版本提供的配置文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENANME.rpmnew)后提供;

卸载:

{-e|–erase}[options]PACKAGE_NAME….

–nodeps

–test:测试卸载时,dry run模式

-allmathes:如果一个程序包同时安装多个版本,则此选项一次全部卸载之

注意:如果程序包的配置文件被安装后曾被修改,卸载时,此文件通常不会删除,而是被重命名(加后缀.rpmsave)后留存。

查询:

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

[select-options]

PACEAGE_NAME:查询某包或某些包是否安装;

rpm -q PACKAGE_NAME…

        -a,–all 查询所有已经安装过的包

        -f FILE :查询某些文件是有那个包安装生成;

        -f /PATH/TO/SOMEFILE

        -pi 查询某些安装的包文件的相关信息,使用-p选项

        -pi PACKAGE_FILE

        –whatprovides CAPABILITY:查询指定的CAPABILITY由那个程序包提供

        –whatrequire CAPANILITY:查询指定的CAPABILITY被那个包所依赖

   [query-options]

   -p 文件包名  用于执行查询未安装文件包的相关信息,接下面

    –changelog:查询rpm包的changelog

        -l,–list:程序安装生成的所有文件列表

        -i,–info 查询程序包的相关信息

        -c,–configfiles 查询程序包安装完成后所有的配置文件

        -d, 查询程序安装完成后生成的所有的帮助文件

        –provides:列出指定程序包提供的所有的CAPABILITIES

        -R,–requires:查询指定程序包所依赖的各种资源

        –scrips 查询安装或者卸载时执行的脚本

校验:

{-v|–verify}[select-option][verify-options]

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 mTime differs

       P caPabilities differ

     包来源合法性验证和完整性验证:

     来源合法性验证:由我们信任的制作者提供;依赖制作者的数字签名,签名是作者使用自己的私钥加密程序包的特性码进行的;

     所谓内容合法:包未被二次修改;完整性校验成功,依赖于制作者提供的程序特征码

    验证方式:安装者用同样的特征码提取算法提取程序包的特征码,与原作者提供的比较

    centos 自带 /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

    数据重建:

    rpm 管理器数据库路径:/var/lib/rpm/

    查询操作:通过此处数据库进行

    获取帮助:

    CentOS6 man rpm

    CentOS6 man rpmdb


    rpm {–initdb|rebuilddb}

         –initdb:初始化数据库

         –rebuilddb:重新构建数据库

    但是构建数据库不一定能让原来程序的数据库完全恢复,所以慎用,实在需要恢复是可以尝试。

    三、编译安装

    编译安装的优势:是将源代码在本机编译而成的安装好,能够更好地适应本机的硬件,不会存在兼容性的问题。

     程序包编译安装

   testapp-VERSION-release.src.rpm–>安装后,使用rpmrebuild命令制作成二进制格式的rpm包,而后再安装;

   源代码组织格式:

   多文件:文件中的代码之间,很可能存在跨文件依赖关系;

   源代码–>预处理–>编译器(gcc,c语言编译器)–>汇编–>链接(链接器)–>执行

   C、C++:make(项目打包构建管理工具)(configure–>Makefile.in –>makefile)

   java:maven

   C代码编译安装三步骤:

   ./configure

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

      (2)检查各启动特性依赖的外部环境

   make (*)

   根据makefile文件,构建应用程序

   make install

   开发工具:

   autoconf:生成configure脚本(有些程序未自带,需要通过此工具生成)

   automake:生成Makefile.in

   建议安装前查看install,没有install看readme

   开源程序源代码的获取:

   程序官方自建站点:

   apache.org(ASF)

   代码托管:

   SourceForege

   Giphub.com

   code.google.com

   C/C++ gcc(GNC C Complier)

   编译C源代码:

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

   开发工具:make,gcc等

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

   gilbc:标准库

   通过“包组”提供开发组件

   Centos 6:"Development Tools","Server platform Development"

   第一步:configuer脚本

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


   –help :获取其支持的选项

   ./configure –prefix=PREFIX 指定默认安装位置

   –sysconfdir=/PATH/TO/SOMEWHERE 配置文件安装的位置

   System types:


   Optional Features:可选特性

   –disable-FEATURE

   –enable-FEATURE[=ARG]

   Optional Packages:可选包

   –with-PACKAGE[=ARG]

   –without-PACKAGE

   安装后的配置:

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

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

   exprot PAHT=/PATH/TO/BIN:$PATH

    (2)导出库文件路径

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

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

    让系统重新生成缓存:

    ldconfig [-var]

    (3)导出头文件

    创建连接目录或者文件

    ln -sv

    存放位置/usr/include

    (4)导出帮助手册

    编辑/etc/man.conf

    添加一条新的路径MANPATH

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

(0)
上一篇 2016-08-29 08:49
下一篇 2016-08-29 08:49

相关推荐

  • Mysql 备份

    Mysql 备份 ============================================================================= =============================================================================    &n…

    2016-11-22
  • 马哥教育网络班21期+第五周课程练习

    马哥教育网络班21期+第5周课程练习 [TOC] 1. 显示/boot/grub/grub.conf中至少以一个空白字符开头的行。 [root@rhel-5 ~]# grep -E '^[[:space:]]+' /boot/grub/grub.conf  root (hd…

    Linux干货 2016-08-02
  • 浅谈用户和组相关配置文件

    用户、组和权限的管理 Linux如何像Windows系统那样,可以不输入密码直接进入图形界面?那么如何如何自动登录图形界面呢?这就要用到编辑配置文件: nano  /etc/gdm/custom.cof  ,在里面加上   automaticLoginEnable=true automaticLogin=root 退出…

    Linux干货 2016-10-23
  • Bonding多块网卡绑定同一IP地址

    Bonding多块网卡绑定同一IP地址 就是将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。当然,直接给两块网卡设置同一IP地址是不可能的。通过bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址。 一共有七种模式这里提供三种常用的:   一、Mode 0 (balance-rr)  轮转( Round-robin…

    Linux干货 2016-09-07
  • keepalived实现高可用LVS

    前言 vrrp介绍:  vrrp(Virtual Router Redundancy Protocol)虚拟路由冗余协议;就是把多个路由器或多个网关设备加入到组中,然后在这一组中虚拟出一个路由器,此虚拟路由器有真是的IP和MAC地址,客户端将网关指向此虚拟路由器的IP;客户端向此虚拟路由器的IP和MAC地址发起请求时,由活动路由器负责响应;当活动路…

    Linux干货 2015-07-23
  • N25期第一周作业

    计算机的组成与功能  一台能正常工作的计算机有硬件和软件组成,计算机的硬件就好比人的躯体,计算机的软件就好比人的思想,人的思想控制指挥人的躯体,计算机有了软件才能进行工作。 硬件大致由CPU,内存,输入输出设备,存储设备组成,各个部件的主要作用流程是:由输入设备(例如:键盘)输入数据, 数据暂时出入内存, 而后由内存传到CPU(CPU又由运算器+控…

    Linux干货 2016-12-05

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-29 10:13

    yum源的配置与程序包管理工具的使用,是我们以后工作,学习中离不开的,需要熟练掌握。