Linux程序包管理

應用程序   shell前端

————————java

lib callnode

————python

system calllinux

————————c++

硬件redis

————————shell


API:應用編程接口數據庫

ABI:應用二進制接口apache


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

相關文章
相關標籤/搜索