• Linux:Day10 程序包管理


    YUM:yellow dog,Yellowdog Update Modifier

    yum repository:yum repo

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

      文件服务:

        ftp://

        http://

        nfs://

        file://

    yum客户端:

       配置文件:

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

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

      仓库指向的定义:

      [repositoryID]

      name=Some name for this repository

      baseurl=rul://path/to/repository

      enabled={1|0}

      gpgcheck={1|0}

      gpgkey=URL

      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]
      * load-transaction [txfile]
      * check
      * help [command]

    显示仓库列表:

      repolist [all|enabled|disabled]

    显示程序包:

      list

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

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

        # yum list installed 

    安装程序包:

      install package1 [package2] [...]

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

    升级程序包:

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

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

      upgrade [package1] [package2] [...]  # 作用和update一样,已经废弃。

    检查可用升级:

      check-update

    卸载程序包:

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

    查看程序包information:

      info [...]

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

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

      注:rpm只能查询已安装程序包的信息,而yum可以查询某个功能由哪个程序包所提供。

    清理本地缓存:

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

    构建缓存:

      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

      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)

        jave:maven

        

        编译安装三步骤:

          ./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 (GUN C Complier)

      编译C源代码:

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

          开发工具:make,gcc等

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

            glibc:标准库

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

            CentOS 6:”Development Tools",“Server Platform Development"

        第一步:configure脚本

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

          --help:获取其支持使用的选项

            选项分类:

              安装路径设定:

                --prefix=/PATH/TO/SOMEWHERE:指定默认安装 位置;

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

    练习:

      1、yum的配置和使用;包括yum repository的创建;

      2、编译安装apache 2.2;启动此服务;

    博客作业:程序包管理:rpm/yum/编译

  • 相关阅读:
    【BUG】android.content.res.Resources$NotFoundException: File res/drawable-xxhdpi/toolbar_line.png from
    关于 折半查找 while 条件 &lt; , &lt;=
    Unity3D——加入剑痕效果(PocketRPG Trail插件)
    用外部物理路由器时使用Neutron dhcp-agent提供的metadata服务(by quqi99)
    项目经理之项目经理注意事项
    让你提前认识软件开发(37):研发流程初探
    1.RunLoop是什么?
    列表类型内置方法
    字符串类型内置方法
    数字类型内置方法
  • 原文地址:https://www.cnblogs.com/sq5288/p/10311335.html
Copyright © 2020-2023  润新知