程序包管理工具之yum及源代码安装

yum介绍

Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

首先要有一个网络上或本地或远程的yum仓库。
然后需要yum安装程序的机器去yum仓库下载yum元数据(包括包信息和依赖信息)到本地的cache里。
当需要安装程序的时候,会查看yum源数据里是否有此包,并且查找此包的依赖信息,然后去yum仓库里面下载包和依赖包到本地cache里,并且进行安装。

校验码:远程仓库数据有可能发生改变,这样本地的信息就和仓库信息不符。这样根据校验码,来确定文件是否更改,这样可以节省网络带宽。(对于我们来说,yum一般配置本地仓库,yum源来自操作系统的iso镜像,一般不去校验)

yum仓库(yum repository)

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

CentOS和Redhat安装操作系统的时候,anaconda也会去调用yum来安装(不过是调用的本地的光盘上的yum repository)

无论任何仓库,repodata目录的父目录就是yum源的目录。比如CentOS 5是在光盘/Server/下,6和7在光盘/下。

  • 网络文件服务器: CentOS已经配置好,联网可以直接使用(redhat不可使用,需要购买服务),是网络上的的文件服务器。
  • 文件服务器:
    • ftp://
    • http://
    • nfs://
    • file:///

yum的配置文件:

  • /etc/yum.confyum的公共配置文件
  • /etc/yum.repos.d/*.repo具体的每个仓库的配置,分开文件是为了方便管理和配置。

/etc/yum.com
常用配置项:

[main] #yum仓库id
cachedir=/var/cache/yum/$basearch/$releasever #缓存和数据库文件,baseserach指的架构,如`x86_64`,releaserver指的是版本,如`6`或`7`
keepcache=0 #缓存源文件和安装成功后的下载包是否保存
debuglevel=2 #debug级别
logfile=/var/log/yum.log #日志文件位置
exactarch=1 #精确平台匹配
obsoletes=1
gpgcheck=1 #来源完整性和包完整性检查
plugins=1 # 支不支持插件机制
installonly_limit=5 # 允许同时安装几个程序包
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=19&ref=http://bugs.centos.org/bug_report_page.php?category=yum #bug报告
distroverpkg=centos-release #ditribution version pkg 发行版版本号获取

/etc/yum.repos.d/*.repo
常用配置项:

[repositoryid]   # 仓库的id名,中括号一定要存在,里面的名称则可以随意取。但是不能有两个相同的软件库名称, 否则 yum 会不晓得该到哪里去找软件库相关软件列表文件
name=Some name for this repository # 仓库名字,只是说明一下这个软件库的意义而已
baseurl=url://path/to/repository/ # 仓库的实际网址
enable={1|0}     # 是否可用
gpgcheck={0|1}   # 是否需要查阅 RPM 文件内的数字签名
gpgkey=URL       # 就是数字签名的公钥文件所在位置!使用默认值即可

yum安装日志:/var/log/yum.log

yum使用方法

显示仓库列表:
    yum repolist [all|enabled|disabled]

显示程序包:
    yum list
        # yum list [all | glob_exp1] [glob_exp2] [...]
        # yum list {available|installed|updates} [glob_exp1] [...]

安装程序包:
    yum install package1 [package2] [...]

    yum reinstall package1 [package2] [...]  (重新安装)

升级程序包:
    yum update [package1] [package2] [...]

程序包降级:
    yum downgrade package1 [package2] [...] (降级)

检查可用升级:
    yum check-update

卸载程序包:
    yum remove | erase package1 [package2] [...]

查看程序包information:
    yum info [...]

查看指定的特性(可以是某文件)是由哪个程序包所提供:
    yum provides | whatprovides feature1 [feature2] [...]

清理本地缓存:
    yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

构建缓存:
    yum makecache

搜索:以指定的关键字搜索程序包名及summary信息;
    yum search string1 [string2] [...]  

查看指定包所依赖的capabilities:
    yum deplist package1 [package2] [...]

查看yum事务历史:
    yum history [info|list|packages-list|summary|addon-info|redo|undo|rollback|new|sync|stats]

安装及升级本地程序包:
    * yum localinstall rpmfile1 [rpmfile2] [...]
         (maintained for legacy reasons only - use install)
    * yum localupdate rpmfile1 [rpmfile2] [...]
         (maintained for legacy reasons only - use update)

包组管理的相关命令:
    * yum groupinstall group1 [group2] [...]
    * yum groupupdate group1 [group2] [...]
    * yum grouplist [hidden] [groupwildcard] [...]
    * yum groupremove group1 [group2] [...]
    * yum groupinfo g roup1 [...]

非常常用的几个个命令:

yum clean all   # 清除所有缓存(如果还清不了,可以手动删除rm -rf /var/cache/yum)
yum makecache   # 创建yum缓存
yum -y install xxx yyy zzz # 可以安装一个或多个包
yum remove      # 卸载程序包

程序包编译安装:

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

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

源代码组织格式:

多文件:文件中的代码之间,很可能存在跨文件依赖关系;
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,README

开源程序源代码的获取:

    官方自建站点:
        apache.org (ASF)
        mariadb.org
        ...
    代码托管:
        SourceForge
        Github.com
        code.google.com

c/c++: gcc (GNU C Complier)

编译C源代码:

准备:提供开发工具及开发环境
    开发工具:make, gcc等
    开发环境:开发库,头文件
        glibc:标准库

实现:通过“包组”提供开发组件
    CentOS 6: "Development Tools", "Server Platform Development",

安装前的配置:

第一步:configure脚本
    选项:指定安装位置、指定启用的特性

    --help: 获取其支持使用的选项
        选项分类:
            安装路径设定:
                --prefix=/PATH/TO/SOMEWHERE: 指定默认安装位置;默认为/usr/local/
                --sysconfdir=/PATH/TO/SOMEWHERE:配置文件安装位置;

            System types:

            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文件
        添加一个MANPATH

猜你喜欢

转载自blog.csdn.net/lv8549510/article/details/80455862