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

相关推荐

  • linux的文件类型

    linux的文件类型 linux其中的一个哲学思想就是一切皆文件,今天我们就来学习一下linux系统中的文件类型。linux不同于windows,有多种多类的文件类型,文件类型的判断也不是以文件的后缀为标准的。linux中一共有七种文件类型,分别是:普通文件、目录、字符设备文件、块设备文件、套接字文件、命名管道文件和符号链接文件。那么接下来我们就分别看看每种…

    Linux干货 2016-10-27
  • N22第八周作业

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥: 网桥是早期的二层网络设备,每个端口分别有一条独立的交换信道,不是共享一条信道,可隔离冲突域。网桥比集线器(Hub)性能更好,集线器上各端口都是共享同一条信道的,工作于数据链路层。后被端口更多的交换机替代。 集线器: 多端口中继器,工作在物理层,本身不具备识别信号的能力,只…

    Linux干货 2016-10-17
  • Storm集群安装详解

    storm有两种操作模式: 本地模式和远程模式。 本地模式:你可以在你的本地机器上开发测试你的topology, 一切都在你的本地机器上模拟出来;  远端模式:你提交的topology会在一个集群的机器上执行。 本文以Twitter Storm官方Wiki为基础,详细描述如何快速搭建一个Storm集群,其中,项目实践中遇到的问题及经验总结,在相应章…

    Linux干货 2015-04-04
  • LAMP快速部署及LAMP组合深入讲解-1

      lamp php php: 脚本编程语言、嵌入到html中的嵌入式web程序开发语言;基于zend编译成opcode(二进制格式的字节码,重复运行,可省略编译环境) 一、PHP简介 PHP是通用服务器端脚本编程语言,其主要用于web开发以实现动态web页面,它也是最早实现将脚本嵌入HTML源码文档中的服务器端脚本语言之一。同时,php还提供了一…

    Linux干货 2017-06-04
  • M25初尝试部署RAID磁盘阵列组

    在学习了linux系统管理硬盘设备的基础后,现在尝试部署RAID10硬盘组技术,在部署前我们先了解一下什么叫“RAID”磁盘冗余阵列(Redundant Array of Independent Disks)。 RAID技术就是把多块硬盘设备组合成一个容量更大、更安全的硬盘组,可以把数据切割成多个区段后分别存在各个不同物理硬盘设备上,然后利用分散读写需求赖提…

    2017-07-12
  • M20 – 1- 第二周博客(2):Linux的常用命令与通配符

    1、Linux的常用命令 pwd 命令 简介: Print the name of the current working directory. 格式: pwd [-LP] 实例1 [root@centos6 local]# pwd  &n…

    Linux干货 2016-08-03