码迷,mamicode.com
首页 > 系统相关 > 详细

Linux程序包管理

时间:2016-07-21 20:09:19      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:linux程序包管理

应用程序   shell

————————

lib call

————

system call

————————

硬件

————————


API:应用编程接口

ABI:应用二进制接口


c/c++程序格式:

        源代码:文本格式的程序代码

        二进制格式:将文本格式的程序代码通过编译器编译成二进制格式

        编译开发环境:编译器,头文件,开发库


java/python程序格式:

         源代码:文本格式的程序代码

         二进制:将源代码编译成能在其虚拟机(jvm/pvm)运行的格式

         开发环境:编译器,开发库

程序包管理器:

              源代码——>目标二进制格式——>组织成一个或有限几个"包"文件

              完成:安装,卸载,查询,校验

        程序包管理器:

              debian:dpt,dpkg ".deb"

              redhat:rpm ".rpm"

              suse:rpm ".rpm"

              gentoo:ports

        源代码包命令格式:name-version.tar.gz

        rpm包命名格式:name-version-release.arch.rpm

                       如:redis-3.0.2-1.centos7.x64.rpm

        拆包:主包和支包

            主包:name-version-release.arch.rpm

            支包:name-function-version-release.arch.rpm

                        function:devel,untils,libs

        依赖关系:一个程序包的安装卸载可能需要另外几个程序包的支持        

                前端工具:自动解决依赖关系

                        yum:rhel系类os上rpm的包管理前端工具

                        apt-get(apt-cache):deb系类os上包管理前段工具

                        zypper:suse上的rpm包管理前段工具

                        dnf:Fedora 22+系统上的rpm包管理前端工具

程序包管理器的功能:

                    1.程序包的组成清单(独立):文件清单,安装或卸载时运行的脚本

                    2.数据库(公共):/var/lib/rpm

                         记录程序包的名称,版本,依赖关系,功能说明,安装生成的各文件的文件                          路径及校验信息等

获取程序包的途径:

                1.系统发行版本的光盘,官方文件服务器,镜像站点

                2.项目官方站点:如:zabbix.org

                3.第三方:(a)EPEL

                          (b)程序包搜索引擎:pkgs.org,rpmfind.net,rpm.pbone.net

                4.自己动手,丰衣足食

                建议:检查其来源的合法性,程序包的完整性

Centos系统上rpm命令管理程序包:

                             安装,升级,卸载,查询和校验,数据库维护

rpm命令: rpm [options] [PACKAGE_FILE]

             安装:-i

             升级:-U,-F

             卸载:-e    

             查询:-q

             校验:-V    

             数据库维护:--buliddb,--initdb

安装:rpm -i [install options] PACKAGE_FILE

                -v:显示信息

                -vv:更详细的输出

                -h:以hash标记输出进度条;每个进度条代表2%的进度

                --test:测试安装,检查并报告依赖关系

                --nodeps:忽略依赖关系,不建议使用

                --replacepkgs:重新安装

                --nosignature:不检查包的签名信息,即不检查来源合法性

                --nodigest:不检查包的完整性

    注意rpm可以自带脚本,共4类

                                perinstall:安装过程之前运行的脚本 %pre

                                postinstall:安装完成之后运行的脚本 %post

                                preuninstall:卸载前运行的脚本 %preun

                                postuninstall:卸载后运行的脚本 %postun

                    

升级:rpm -Uvh PACKAGE_FILE:升级或安装

      rpm -Fvh PACKAGE_FILE:升级

                --oldpackage:降级

                --force:强制


    注意:1.不要对内核做升级;linux支持多内核版本并存,因此直接安装新内核

          2.如果某原程序包的配置文件安装后曾被修改,那么升级后新版本的程序提供的同一个配置             文件不会覆盖原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后             提供

卸载:rpm -e PACKAGE_NAME

                         --allmatches:卸载所有匹配指定名称的程序包的各版本

                         --nodeps:忽略依赖关系

                         --test:测试卸载


查询:rpm -q [selection options] [query-options]

              selection options:

                                PACKAGE_NAME:查询指定的程序包是否已安装及其版本

                                -a:查询所有已安装过的程序包

                                -f FILE:查询指定的文件由哪个程序包安装生成

                                -p PACKAGE_FILE:查询未安装的程序包的相关信息

                                --whatprovides CAPABILITY:查询指定的capability由哪个程序包                                                            提供

                                --whatrequires CAPABILITY:查询指定的capability被哪个包依赖


               query-options:

                            -changelog:查询rpm包的changelog

                            -l:程序安装生成的所有文件列表

                            -i:程序包的相关信息,版本号,大小,所属的包组...

                            -c:查询指定的程序包的配置文件

                            -d:查询指定的程序包提供的文档

                            --provides:列出指定的程序包提供的CAPABILITY

                            -R:查询指定程序包的依赖关系

                            --scripts:查看程序包自带的脚本


校验:rpm -V

    程序包来源合法性验证:数字签名

    完整性验证:

         获取并导入信任的包制作者的密钥 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CENTOS-7



数据库重建:

           rpm管理数据库的路径:/var/lib/rpm

                                查询,安装等操作都通过数据库进行

      rpm [--initdb|--rebuilddb] [--dbpath directory] [--root directory]

           --initdb:初始化数据库,当前无任何数据库时可实现创建一个新的,当前有数据库则不会                     执行任何操作                                                                       --rebuilddb:重新构建,是通过读取当前系统上以安装过的程序包进行重建的


yum前端管理工具:

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

    显示程序包:list [all]

    安装:install package1 [package2]...

    重新安装:reinstall package1 [package2]...

    升级:update package1 [package2]... 

    降级:downgrade package1 [package2]

    检查可用升级程序包:check-update

    卸载:remove

    查看程序包简要信息:info

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

    清理本地缓存:clean [packages|rpmdb|all]

    构建缓存:makecache

    搜索:search STRING1 [STRING2]...    

    查看指定的程序依赖的capabilities:deplist [package1] [package2]...    

    查看YUM事物历史(安装,卸载等信息):history [info|list|packages-list|packages-info]

   

包组管理的相关命令:

    groupinstall group1 [group2]...

    grpupupdate group1 [group2]...

    grouplist group1 [group2]...

    groupremove group1 [group2]...

    groupinfo group1 [group2]...


如何使用光盘当做本地YUM仓库:

    1.mount -r /dev/cdrom /media

    2.vim /etc/yum.repos.d/base.repo

        [base]

        name=Centos7 packages

        baseurl=file:///media

        enabled=1

        gpgcheck=1

        gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CENTOS-7

        :wq


yum的命令行选项:

    --nogpgcheck:不检查程序包来源的合法性和程序包的完整性

    -y:无需用户确认安装

    -q:静默

    --disablerepo=xxx:临时禁用此处指定的repo        

    --enablerepo=xxx:临时启用此处指定的repo

    --noplugins:禁用所有插件


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

    $releasesever:当前os发版本的主版本号

    $arch:平台(cpu架构i386,X86_64,PPC)

    $basearch:基础平台(i386,i486,i586-->i386)

   如:http://mirrors.echoh.com/centos/$releasesever/$basearch/OS

    

创建YUM仓库:createrepo [option] FILE


源码包编译安装:

       源代码组织格式:                                                        

          多文件:文件中的代码间可能存在跨文件依赖关系,所以需要用项目管理工具(make/maven)

       开发工具:

                autoconf:生成configure脚本

                automake:生成Makefile.in

                                                                    

编译安装3步骤:

    (1)./configure:A通过传递参数指定安装路径,启用的特性等,执行时参考用户指定的Makefile.in                    文件生成makefile

                   B检查依赖到的外部环境(编译环境)

    (2)make:根据makefile文件,构建应用程序

    (3)make install:安装


开源程序源代码的获取:

    官方站点:apache.rog,mariadb.org..

    托管站点:code.google.com,Github.com,SourceForge


编译安装C源代码程序:

    1.提供开发工具(make,gcc),开发环境(开发库,头文件,glibc:标准C库)

        yum -y install "Development Tools" "Server Platform Development"

    2. ./configure 配置(--help获取其支持的选项)

        选项分类:

                指定安装路径:--prefix=/PATH/TO/FILE:默认为/usr/local/xxx

                指定system os:System type:作用是实现交叉编译

                可选特性:--disable-FEATURE,--enable-FEATURE

                可选包:--with-PACKAGE,--without-PACKAGE

    3.make

    4.make install


安装后的配置:

            (A)导出程序二进制目录至PATH环境变量中:

                cp xx /etc/profile.d/xx.sh

                vim xx.sh

                export PATH=/usr/local/http2/bin:$PATH

                

            (B)导出库文件路径

                  添加新的库文件至/etc/ld.so.conf.d/文件中

                  让系统重新生成缓存:ldconfig [-v]

            (C)导出头文件

                  基于链接的方式(ln -s)

            (D)导出帮助手册:

                    添加一个MANPATH




       












Linux程序包管理

标签:linux程序包管理

原文地址:http://11358534.blog.51cto.com/11348534/1828419

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!