Yellow Dog! COMMAND && source

linux程序包管理之yum

       yum:之前命名为:yellow dog ,后来因为及其好用,很多发行版都以此为默认rpm程序前端管理工具,故此更名为:yellowdog update modifier,更牛的还有一个基于redhat的二次发行版也叫yellow dog

功能:

yum解决程序包依赖性前端管理工具:

Centos:yum,dnf

suse:zyyer(rpm)

yum repository:yum repo (yum仓库)

存储了众多rpm包,以及包的相关元数据文件(放置于特定目录下:repodate):

 

repodate:目录所在的位置就应该是仓库应该指向的路径,而这个路径指向的叫做文件服务器,其中有ftp、http、file、nfs等

yum客户端:

配置文件:

主配置文件:/etc/yum.conf  

 //为所有仓库提供公共配置(如:在安装程序包时是否要精确的平台匹配(exactarch=1)、 装某一个包时是否要检查其合法性及其完整性(gpgcheck=1,1表示开启)是否支持插件机制(plugins=1)等等………),此文件很少动用。

各仓库的定义地址:/etc/yum.repos.d/*.repo 

    //此遵循linux把大配置文件分割为小文件进行管理风格,每个文件中以.repo结尾的可以配置一个至多个仓库,用此方法便于管理

仓库的定义:

        [repository]仓库名

name:描述

baseurl:yum仓库地址(其中可同时指定多个)

enabled:{1|0}:默认开启(1为开启)

gpgcheck:对于此仓库的所有程序包在安装之前是否要检查其来源合法性及其完整性

repo_gpgcheck:是否要检查仓库元数据文件的签名信息。

gpgkey:指明一个url,系其秘钥文件地址

mirrorlist:以镜像方式指定baseurl地地址

enablegroups={1|0}:是否支持在此仓库中使用组来批量管理程序包。

failovermethod {roundrobin(轮寻)|priority(优先级)}:baseurl指向多个时,默认为roundrobin(意为随机挑选),而priority则是至上而下的故障转移方法 

cost:默认为1000,如果决定把某一个仓库cost值变小,则此仓库则会优先应用。

yum命令的用法:

yum [options] [command] [package …]

子命令:

        * install package1 [package2] […]

安装指定程序包

        * reinstall package1 [package2] […]

            重启安装==rpm -ivh –replacepkgs  P-file


        * update [package1] [package2] […]

升级的指定程序包:

        * downgrade package1 [package2] […]

降级指定的程序包

        * check-update

检查有哪些升级包可用

        * remove | erase package1 [package2] […]

卸载指定程序包(依赖于此删除的程序包的所有包都会被卸载)

        * info […]

用于列出可用的包的描述和汇总信息

#yum info gcc

        * provides | whatprovides feature1 [feature2] […]

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

相当于rpm -qf

#yum provides  /bin/cat  /bin/ls

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

清理本地缓存:

        * makecache

生成、构建缓存

        * search string1 [string2] […]

根据指定的关键字搜索包含指定的关键的所有信息(模糊匹配,匹配的是程序包的包名和summary(摘要总结))


        * localinstall rpmfile1 [rpmfile2] […]

           (maintained for legacy reasons only – use install)

        * localupdate rpmfile1 [rpmfile2] […]

           (maintained for legacy reasons only – use update)

安装及升级本地程序包(并非yum仓库中的包)

//在网上download一个程序包,如果此包拥有依赖关系。则不能用rpm -ivh,则需使用yum 只带的本地安装命令。如遇发现需要解决依赖关系,yum会自动从仓库中查找安装。解决了依赖关系问题。 

注:可直接使用install,功能相同

        

        * deplist package1 [package2] […]

查看指定包所依赖的(capabilities)能力

显示指定程序包的依赖关

 #yum deplist p-name

          *   history   [info|list|packages-list|packages-info|summary|ad don -info|redo|undo|roll-back|new|sync|stats]

查看yum事务历史

查看过去的事物中发生的什么事,查询不触发事物,只有安装,升级、卸载等修改类的动作才会触发事物

#yum history

                summary:只显示摘要

#yum history summary

 list :默认动作

 stats:显示统计数据

显示仓库列表总量:(默认显示启用的)

repolist [all|enabled|disabled]  

显示所有:all,

启用 :enabled,

未启用:disabled

显示程序包:

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

#yum list | less      

#ConsoleKit.x86_64   0.4.1-6.el6      @anaconda-CentOS-201605220104.x86_64/6.8

显示程序包后面为@anaconda时,表示已经安装过,并且是操作系统安装时直接装上的。

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

   all :显示所有的

#yum list all

  glob_exp1:显示glob匹配到的程序包

#yum list php*

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

available:显示仓库中有但并为安装的

updates:可用的升级包

installed:已安装的包

都可用glob模糊匹配指定程序包

包组管理相关命令

       * grouplist [hidden] [groupwildcard] […]

显示包组

        * groupinstall group1 [group2] […]

安装包组(只能安装显示出来可用的组

         #yum groupinstall “development-toos”

        * groupupdate group1 [group2] […]

升级包组

        * groupremove group1 [group2] […]

移除指定包组

        * groupinfo group1 […]  

包组信息

# yum groupinfo "development-toos"

其中:Mandatory表示必须安装的包

default:默认要安装的包

options:可选的

yum的命令行选项:

用在命令行中执行安装卸载程序包时的选项

    --nogpgcheck:禁止做包校验
    --enablerepo=(repoid) :临时禁用指定的某repo
    --disablerepo=repoidglob   :临时启用指定的repo
    -y:自动回答为yes
    -q:静默模式
    -noplugins:禁用所有插件

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

为什么会用到变量:

判断获取当前系统发行版本号

判断平台架构

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

$arch  :平台

$basearch:基础平台(只要是32位的通通认为是i3863 )

$YUM0-$YUM9  :如果需要,自己定义

定义:http://mirrors.magedu.com/centos/$releasever/$basharch/os


创建yum仓库

    如果多个仓库中同时拥有一个程序包,会优先应用cost值低的仓库

createrepo [options] <directory>

options:可省略

移动到rpm所在的文件目录

[centos@root /yum/repo]#createrepo  ./     

 //会尝试读取每一个rpm包的元数据,把原数据读出来之后,分析创建一个repo。

创建之后保存名字为repodate,可进入查看

之后添加到/etc/yum.repos.d/*.repo文件内。即可使用

用repolist列出已经配置的所有可用仓库

程序包编译安装

     编译是真正将代码编译成为cpu可以执行的指令的过程,能够编译成为自己需要版本的过程。

1.找不到合适的rpm包

2.虽然有合适的,不满足我们的需要的功能

    testapp-VERSION-release.src.rpm 

    //使用rpmbuild命令制作成二进制格式的rpm包,而后再安装。

   

     src=source :未经过编译的源码包,能够编译成为当前硬件架构适用的程序

 源代码组织格式:

    源代码–预处理–编译(gcc)–汇编器–链接–执行

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

项目打包构建管理工具:

c、c++:make(会完成以上源代码的所有过程)

(configure –》Makefile.in (模板)–》makefile)

java:maven

C代码编译安装三步骤

(1)./configure

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

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

 (2)make

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

(3)make  install

(使用install命令)

开发工具:

     对于 不同的程序都是不同的

    autoconf:生成configure脚本

//autofile需要结合额外的配置文件去生成configure脚本。

    automake:生成Makefile.in 


 建议:安装前查看(软件里自带的)INSTALL,README

开源程序源代码的获取

官方自建站点

apache.org(ASF)

mariadb.org

代码托管:

SourceForge

Github.com

code.google.com

c/c++:gcc (GUN C complier GUN的组织c编译器)

融合了很多其他编译器

编译C源代码:

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

开发工具:make,gcc等

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

glibc:GUN的C标准库

 

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

#yum grouplist 

Centos 6 :“Development Tools”,"Server Platfor Development"

第一步:configure脚本

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

–help:获取其支持的选项

[root@CentOs6 httpd-2.2.29]# ./configure –help

选项分类:

安装路径设定:

–prefix=/Path/to/somewhere:指定默认安装位置

//如果其他很多文件安装地址不指定自动在默认目录下创建子目录

–sysconfdir=/path/to/somewhere:配置文件安装位置:

system type:

只有在交叉编译时才会用到

可选特性:

disable feature:禁用某个特性

enable feature:启用某个特性

optional Packages

可选程序包,依赖到的程序包

–with-PACKAGE[=ARG]

–without-PACHAGE

第二步:make

第三部:make insatll

第二第三部一般不需要用其他附加选项,直接执行就行。

步骤实现:

1、进入源码包目录:设置configure属性

     #./configure –prefix=/usr/local/apache2 –sysconfigdir=/etc/http2

2、属性执行完成之后使用make命令执行编译

     # make


3、编译完成之后执行安装命令安装即完成

    # 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文件

添加MANPATH=/usr/local/apchach2/man    //此为http服务源码安装时指定的文件地址



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

(0)
LiiLii
上一篇 2016-08-21
下一篇 2016-08-21

相关推荐

  • Python内置数据结构

    Python内置数据结构 数值型 Int,float,complex,bool 序列对象 字符串:str  列表:list   数组:tuple 键值对 集合:set    字典:dict 数值型 Int,float,complex,bool都是class,1,5.0,2+3j都是对象即示例 Int:python3的int就是长整形,且没有大小限制,受限于内…

    Linux干货 2018-03-26
  • Linux 发展史

    摘要:     Linux是一款基于Unix的服务端操作系统,目前已广泛应用于国内外的服务器端操作系统领域,其开源性是其获得及其快速的发展,目前至少已有数百种发行版本。 本文主要讲述了linux的系统简介、发展历程和Linux的发行版;     1、Linux的哲学思想:    &nbsp…

    Linux干货 2016-10-19
  • Linux基础之sed流编辑器详解

    之前介绍了三大文本编辑器的grep,这里介绍比grep功能更强的sed流编辑器 sed是什么? sed是Stream EDitor的缩写,man中对sed的简介为 sed – stream editor for filtering and transforming text 它的主要功能是对文本的过滤与替换。 sed的工作原理 sed的工作过程:…

    Linux干货 2016-08-15
  • 硬链接与软链接

    硬连接:          其本质就是:一个文件,多个名字。注意:目录是没有硬链接的。 用ln filename linkname创建硬链接,注意源文件和链接文件位置顺序,硬链接不可以跨分区建。 在创建硬链接时会增加硬连接数,可以通过ls –l查看,如下图所示的,可看到硬链接数。…

    2017-07-20
  • 马哥教育网络班19期+第九周课程练习

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现;#!/bin/bash#declare -i noNum=0declare -i lNum=0for bashName in `cat /etc/passwd | cut -d: -f7` …

    Linux干货 2016-06-29
  • linux —————-目录配配置【FHS】

    linux 目录配配置【FHS】 /根目录的意义与内容 根目录是整个系统最重要的一个目录;根目录与开机、还原、系统修复等操作有关 FHS建议标准: 根目录所在的分区应该越小越好,且应用程序所安装的软件最好不要与根目录放在同一个分区内,保持根目录越小越好 FHS定义的目录含义 /bin :系统存放执行文件的目录,但是bin比较特殊【bin放置的是在单用户维护模…

    Linux干货 2017-04-17