程序包管理

源代碼包命名:name-VERSION.tar.gz

rpm包命名:name-VERSION-release.arch.rpm

    VERSION:major.minor.release

    arch:

        x86:i386,i486,i586,i686

        x86_64:x64,x86_64,amd64

        powerpc:ppc

        無平臺:noarch

包之間:存在依賴關係,使用包管理的前端工具,可自動化解決包的依賴關係

    yum:rpm包管理器的前端工具

    apt-get:deb包管理器的前端工具

    zypper:suse上的rpm前端管理工具

    dnf:Fedora 22+ rpm包管理器的前端管理工具(CentOS7使用)

    查看二進制程序所依賴的庫文件:(程序需要調用很多庫文件)

[root@localhost ~]# ldd /bin/ls
    linux-vdso.so.1 =>  (0x00007ffca11f0000)
    libselinux.so.1 => /lib64/libselinux.so.1 (0x0000003d91600000)
    librt.so.1 => /lib64/librt.so.1 (0x0000003d90600000)
    libcap.so.2 => /lib64/libcap.so.2 (0x0000003d93200000)
    libacl.so.1 => /lib64/libacl.so.1 (0x0000003d9b600000)
    libc.so.6 => /lib64/libc.so.6 (0x0000003d8fe00000)
    libdl.so.2 => /lib64/libdl.so.2 (0x0000003d8fa00000)
    /lib64/ld-linux-x86-64.so.2 (0x0000003d8f600000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003d90200000)
    libattr.so.1 => /lib64/libattr.so.1 (0x0000003d9fe00000)
[root@localhost ~]#

    管理和查看本機裝載的庫文件:

        ldconfig(/sbin/ldconfig)

            -p:顯示本機已經緩存的所有可用庫文件名及其路徑映射關係

        配置文件:/etc/ld.so.conf    /etc/ld.so.conf.d/*.conf

        緩存文件:/etc/ld.so.cache

程序包管理:

    將編譯好的應用程序的各組成文件打包一個或幾個程序包文件,從而方便快捷地實現程序包的安裝、卸載、查詢、升級和校驗等管理操作

    1、程序的組成清單(每個包獨有)

        文件清單

        安裝或卸載的腳本

    2、數據庫(公共)

        程序包名稱及版本

        依賴關係

        功能說明

        安裝生成的各文件的文件路徑及校驗碼信息


程序包的管理方式:

    包管理器:rpm

    包管理器的前端工具:yum,dnf


獲取程序包的途徑:

    1、系統發行版的光盤或官方的服務器

        鏡像:mirrors.aliyun.com;mirrors.163.com

    2、項目官方站點

        apache,nginx,mariadb

    3、第三方組織:

        Fedora-EPEL(很強大的第三方源,建議安裝)

        搜索引擎:pkgs.org;rpmfind.net;rpm.pbone.net

    4、diy

    tips:檢查合法性,來源合法性,程序包的完整性


RPM:

    安裝,卸載,升級,查詢,校驗,數據庫維護


    安裝:

   rpm {-i|--install} [install-options] PACKAGE_FILE

               -v:詳細信息(-vv)

               -h:以#顯示程序包安裝進度

           {install-options}

                --test:測試安裝;dryrun模式

                --nodeps:忽略依賴關係(兩個包互相依賴時使用)

                --replacepkgs:重新安裝

                --nosignatura:不檢查來源合法性

                --nodigest:不檢查包完整性

                --noscripts:不執行程序包腳本片段

            一般使用 rpm -ivh PACKAGE_FILE進行程序包的安裝

    升級:

        rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
        rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

            upgrade:安裝有舊版程序包,則升級;反之執行安裝過程

            freshen:安裝有舊版程序包,則升級;反之不執行

            --oldpackage:降級

            --force:強行升級

        tips:不要對內核做升級操作;linux支持多內核版本並存,因此請直接安裝新版本內核即可

                 如果原程序包的配置文件有過修改,升級時,新版本的配置文件不會覆蓋老版本的配置文                    件,而會重命名爲FILENAME.rpmnew保留

     查詢:

         rpm {-q|--query} [select-options] [query-options]

        [select-options]

            -a:所有包

            -f:查看指定的文件是由哪個程序包安裝生成

[root@localhost ~]# rpm -qf /bin/ls
coreutils-8.4-37.el6.x86_64
[root@localhost ~]# rpm -e --nodeps coreutils-8.4-37.el6.x86_64
[root@localhost ~]# ls
-bash: /bin/ls: No such file or directory

            -p /PATH/TO/PACKAGE_FILE:針對尚未安裝的程序包做查詢操作

            --whatprovides:查詢指定的功能由哪個包提供

            --whatrequires:查詢指定的功能被哪個包所依賴

        [query-options]

            --changelog:更新日誌

            -c:查詢程序的配置文件

            -d:查詢程序的文檔

            -i:information信息

            --scripts:程序包自帶的腳本片段

            -R:查詢指定的程序包所依賴的能力

            --provides:列出指定程序包所能提供的能力(CAPABILITY)

    卸載:

        rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]
           [--notriggers] [--test] PACKAGE_NAME ...

    校驗:

        rpm {-V|--verify} [select-options] [verify-options]

        使用非對稱加密對程序包進行加密,使用私鑰加密,公鑰開放,校驗時,如果開放公鑰無法進行校驗,則證明此包的來源合法性及完整性不正確。

        導入所需要的公鑰:

            rpm --import /PATH/TO/PUBLIC-KEY

            發行版光盤會自帶密鑰文件

    數據庫重建:

        數據庫位置:/var/log/rpm/

            rpm {--initdb|--rebuilddb}

            initdb:初始化

            rebuilddb:重建


YUM:(C/S架構)

    yum repository:yum repo

        存儲了衆多的rpm包,以及包的相關的遠數據文件

        yum客戶端:

            配置文件:

                /etc/yum.conf:所有倉庫的公共配置

                /etc/yum.repos.d/*.repo:倉庫的指向提供配置

    倉庫指定的定義:

        [repoID]

        name=

        baseurl=指向repodata文件的父目錄

            {ftp://

            https://

            nfs://

            file://   }

        enable=1|0    是否啓用

        gpgcheck=1|0  是否校驗

        gpgkey=密鑰文件

        enablegroups=1|0 組啓用

        failovermethod=roundrobin|priority

            故障處理方式:默認爲roundrobin(隨機)

        cost=

               (默認1000)


        顯示倉庫列表

            yum repolist all|enable|disable

        顯示程序包

            yum list available|installed|updates

        安裝程序包

            yum install package...

        升級程序包

            yum update package...

            yum reinstall package.. 重新安裝

        檢查可用升級

            yum check-update

        卸載程序包

            yum remove|erase package...

        查看程序包信息

            yum info package...

        查看指定的特性是由哪個程序包提供

            yum provides|whatprovides feature...

        清理本地緩存

            yum clean all

        構建緩存

            yum makechche

        搜索

            yum search string...

            以指定的關鍵字搜索程序包名及summary信息

        查看依賴

            yum deplist package

        查看yum事務

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

        包組管理命令

            groupinstall

            groupupdate

            grouplist

            groupremove

            groupinfo

        命令行選項:
            --nogpgcheck:禁止進行gpg check; 優先於倉庫配置文件
            -y: 自動回答爲“yes”;
            -q:靜默模式;
            --disablerepo=repoidglob:臨時禁用此處指定的repo;
            --enablerepo=repoidglob:臨時啓用此處指定的repo;
            --noplugins:禁用所有插件;

           

使用光盤當做本地yum倉庫

        1、掛載光盤

            mount -r /dev/cdrom /media/cdrom

        2、配置文件

            [CentOS7]
            name=
            baseurl=
            gpgcheck=
            enabled=

            yum的repo配置文件中可用的變量:
            $releasever: 當前OS的發行版的主版本號;
            $arch: 平臺;
            $basearch:基礎平臺;
            $YUM0-$YUM9

        3、查看倉庫列表是否成功

            yum repolist

手動創建yum倉庫

        安裝createrepo    

            yum install createrepo

        創建倉庫

            createrepo DIR (DIR指向RPM包的文件夾)

        配置文件

程序包編譯安裝:
        testapp-VERSION-release.src.rpm --> 安裝後,使用rpmbuild命令製作成二進制格式的rpm包,而後再安裝;

    源代碼組織格式:
            多文件:文件中的代碼之間,很可能存在跨文件依賴關係;
            C、C++: make (configure --> Makefile.in --> makefile)
            項目管理工具makefile由Makefile.in生成,

編譯安裝三步驟:

    ./configure:
        (1) 通過選項傳遞參數,指定啓用特性、安裝路徑等;執行時會參考用戶的指定以及Makefile.in文件生成makefile;
        (2) 檢查依賴到的外部環境;
    make:
        根據makefile文件,構建應用程序;
    make install

        開發工具:
            autoconf: 生成configure腳本
            automake:生成Makefile.in
        tips:安裝前查看INSTALL,README

編譯C源代碼:
    前提:提供開發工具及開發環境
    開發工具:make, gcc等
    開發環境:開發庫,頭文件
         glibc:標準庫
        通過“包組”提供開發組件
             CentOS 6: "Development Tools", "Server Platform Development",

安裝後的配置:
    (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







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章