yum程序包管理

CentOS: yum, dnf

YUM: yellow dog, Yellowdog Update Modifier

yum repository:yum仓库

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

文件服务器:

ftp://、http://、nfs://、file:///

yum客户端:

配置文件:

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

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

仓库指向的定义:

[repositoryID] :仓库ID

name=Some name for this repository:简单说就是解释说明

baseurl=url://path/to/repository/:程序包仓库的地址

enabled={1|0}:是否启用

gpgcheck={1|0}:是否检查

gpgkey=URL:gpgkey的路径

enablegroups={1|0}

failovermethod={roundrobin|priority}

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

cost= :默认为1000

yum命令的用法:

yum [options] [command] [package ...]

       command is one of:

        * install package1 [package2] [...]

        * update [package1] [package2] [...]

        * update-to [package1] [package2] [...]

        * check-update

        * upgrade [package1] [package2] [...]

        * upgrade-to [package1] [package2] [...]

        * distribution-synchronization [package1] [package2] [...]

        * remove | erase package1 [package2] [...]

        * list [...]

        * info [...]

        * provides | whatprovides feature1 [feature2] [...]

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

        * makecache

        * groupinstall group1 [group2] [...]

        * groupupdate group1 [group2] [...]

        * grouplist [hidden] [groupwildcard] [...]

        * groupremove group1 [group2] [...]

        * groupinfo group1 [...]

        * search string1 [string2] [...]

        * shell [filename]

        * resolvedep dep1 [dep2] [...]

        * localinstall rpmfile1 [rpmfile2] [...]

           (maintained for legacy reasons only - use install)

        * localupdate rpmfile1 [rpmfile2] [...]

           (maintained for legacy reasons only - use update)

        * reinstall package1 [package2] [...]

        * downgrade package1 [package2] [...]

        * deplist package1 [package2] [...]

        * repolist [all|enabled|disabled]

        * version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ]

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

        * check

        * help [command]

    显示仓库列表:

    repolist [all|enabled|disabled]

[root@localhost test]# yum repolist
Loaded plugins: fastestmirror, langpacks
Repository epel is listed more than once in the configuration
Loading mirror speeds from cached hostfile
 * base: 
 * epel: mirrors.opencas.cn
 * extras: mirrors.aliyun.com
repo id                                                                      repo name                                                                                                   status
base/7/x86_64                                                                CentOS-7 - Base                                                                                             9,007
epel/x86_64                                                                  Extra Packages for Enterprise Linux 7 - x86_64                                                              9,973
extras/7/x86_64                                                              CentOS-7 - Extras                                                                                             265
repolist: 19,245

    显示程序包:

    list

    # yum list [all | glob_exp1] [glob_exp2] [...]

    # yum list {available|installed|updates} [glob_exp1] [...]

[root@localhost test]# yum list updates
Loaded plugins: fastestmirror, langpacks
Repository epel is listed more than once in the configuration
Loading mirror speeds from cached hostfile
 * base: 
 * epel: ftp.riken.jp
 * extras: mirrors.aliyun.com

    安装程序包:

    install package1 [package2] [...]

[root@localhost test]# yum install lrzsz
Loaded plugins: fastestmirror, langpacks
Repository epel is listed more than once in the configuration
Loading mirror speeds from cached hostfile
 * base: 
 * epel: ftp.riken.jp
 * extras: mirrors.aliyun.com
Package lrzsz-0.12.20-36.el7.x86_64 already installed and latest version
Nothing to do

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

    升级程序包:

    update [package1] [package2] [...]

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

    检查可用升级:

    check-update

    卸载程序包:

    remove | erase package1 [package2] [...]

    查看程序包information:

    info [...]

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

    provides | whatprovides feature1 [feature2] [...]

[root@localhost test]# yum provides /etc/httpd/conf/httpd.conf 
Loaded plugins: fastestmirror, langpacks
Repository epel is listed more than once in the configuration
Loading mirror speeds from cached hostfile
 * base: 
 * epel: mirrors.opencas.cn
 * extras: mirrors.aliyun.com
httpd-2.4.6-40.el7.centos.x86_64 : Apache HTTP Server
Repo        : base
Matched from:
Filename    : /etc/httpd/conf/httpd.conf



httpd-2.4.6-40.el7.centos.x86_64 : Apache HTTP Server
Repo        : @base
Matched from:
Filename    : /etc/httpd/conf/httpd.conf

    清理本地缓存:

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

[root@localhost test]# yum clean all
Loaded plugins: fastestmirror, langpacks
Repository epel is listed more than once in the configuration
Cleaning repos: base epel extras
Cleaning up everything
Cleaning up list of fastest mirrors

    构建缓存:

    makecache

    搜索:

    search string1 [string2] [...]


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


    查看指定包所依赖的capabilities:

    deplist package1 [package2] [...]


    查看yum事务历史:

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


    安装及升级本地程序包:

* localinstall rpmfile1 [rpmfile2] [...]

           (maintained for legacy reasons only - use install)

        * localupdate rpmfile1 [rpmfile2] [...]

           (maintained for legacy reasons only - use update)


    包组管理的相关命令:

        * groupinstall group1 [group2] [...]

        * groupupdate group1 [group2] [...]

        * grouplist [hidden] [groupwildcard] [...]

        * groupremove group1 [group2] [...]

        * groupinfo group1 [...]

    如何使用光盘当作本地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;

    --noplugins:禁用所有插件;

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

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

    $arch: 平台;

    $basearch:基础平台;

    $YUM0-$YUM9

    exp:http://mirrors.magedu.com/centos/$releasever/$basearch/os

    创建yum仓库:

    createrepo [options] <directory>

    程序包编译安装:

    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


你可能感兴趣的:(yum,仓库)