第10章,程序包管理學習筆記


更多內容請點擊:前端

Linux學習從入門到打死也不放棄,徹底筆記整理(持續更新,求收藏,求點贊~~~~) 
java

https://blog.51cto.com/13683480/2095439node


筆記整理開始時間:2018年4月20日14:07:22數據庫


第10章  程序包管理apache


本章內容windows

        軟件運行環境centos

        軟件包基礎緩存

        rpm包管理bash

        yum管理網絡

        定製yum倉庫

        編譯安裝

        

軟件運行和編譯:

        ABI: Application Binary  Interface 應用程序的二進制接口

               window:       PE,Portable Executable

               Linux:           ELF,Executable and Linkable  Format

               彼此互不兼容

        庫級別的虛擬化:

               Linux:WINE

               windows:Cygwin

        API: Application Programming  Interface  

               POSIX:Portable OS

        

        程序源代碼--> 預處理 -->  編譯 --> 彙編 —->  連接

               靜態編譯: .a

               動態編譯: .so

               

        靜態連接:

               把程序對應的依賴庫複製一份到包

               libxxx.a

               嵌入程序包

               升級難,需從新編譯

               佔用較多空間,遷移容易

        動態連接:

               只把依賴加作一個動態連接

               libxxx.so

               連接指向

               佔用較少空間,升級方便

               

        jave程序

               源程序.java --jave編譯器-->  字節碼.class --> 類裝載器>字節碼校驗器>解釋器-->操做系統

               

               JVM for unix

                             windows

                             other

 

包管理器

        二進制應用程序的組成部分:

               二進制文件、庫文件、配置文件、幫助文件

        程序包管理器:

               debian:deb文件,dpkg包管理器

               redhat:rpm文件,rpm包管理器

               rpm:Redhat Package Manager

                     RPM Package  Manager

        

        包命名:

               源碼:name-VERSION.tar.gz|bz2|xz

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

                     realese:  ..el7

                     arch: i686 x86_64      noarch

        

        解決依賴包管理工具:

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

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

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

               dnf:              Fedora 18+ rpm 包管理器前端管理工具

               

庫文件:

        

ldd         查看二進制程序所依賴的庫文件

        如:ldd /bin/bash ldd/bin/cat

ldconfig         加載庫文件

/sbin/ldconfig -p  顯示本機已經緩存的全部可用庫文件名及文件路徑映射關係

        

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

                             /etc/ld.so.conf.d/*.conf

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

        

               

包管理器:

        程序包管理器:     

               功能:將編譯好的應用程序的各組成文件打包一個或幾個程序包文件,

               從而方便快捷的實現程序包的安裝,卸載,查詢,升級和校驗等操做

        包文件組成(每一個包獨有)

               rpm包內的文件

               rpm的元數據,如名稱,版本,依賴性,描述等

               安裝或卸載時運行的腳本

        

        數據庫(公共):/var/lib/rpm

               程序包名稱和版本

               依賴關係

               功能說明

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

        

rpm:

        Centos系統上使用rpm命令管理程序包

               安裝、卸載、升級、校驗、數據庫維護

        

        安裝:

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

                     -v    verbose 可視

                     -vv:    

                     -h   以#顯示程序包管理執行進度

               rpm -ivh Package_file

               

                      [install-options]

                            --test                   測試安裝,不真正執行安裝,即dry  run模式

                            --nodeps             忽略依賴關係

                            --replacepkgs |  --replacefiles    覆蓋安裝

                            --nosingature       不檢查來源合法性

                            --nodigest            不檢查包完整性

                            --noscripts           不執行程序包腳本

                                   --nopre                安裝前腳本

                                   --nopost       安裝後腳本

                                    --nopreun             卸載前腳本

                                    --nopostun           卸載後腳本

               

        升級:

               rpm {-U|--upgrate}[install-options]  Package_file

               rpm {-F|--freshen}[install-options]Package_file

                     upgrade:     安裝有舊版程序包,則「升級」

                                           若是不存在舊版程序包,則「安裝」

                     freshen:      安裝有舊版程序包,則「升級」

                                           若是不存在舊版程序包,則不執行升級操做

               rpm -Uvh Package_file..

               rpm -Fvh Package_file

               --oldpackage 降級

               --force:              強制安裝

               

               升級注意事項:

                     1,不要對內核作升級操做;Linux支持多內核版本並存,所以,對直接

                     安裝新版本內核

                      2,若是原程序包的配置文件安裝後曾被修改,升級時,新版本的提供的同一個

                      配置文件並不會直接覆蓋老版本的配置文件,而把新版本的文件重命名

                     (filename.rpmnew)後保留

               

        包查詢

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

                                                  選擇選項               查詢選項

                      select-options

                            -a           全部包

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

                            -p  rpmpack-file:針對還沒有安裝的程序包文件作查詢操做

                            --whatprovides  CAPABILITY:      查詢指定的CAPABILITY由哪一個包所提供

                            --whatrequires  CAPABILITY:       查詢指定的CAPABILITY被哪一個包所依賴

                    

                      quety-options

                            --changelog         查詢rpm包的changelog

                            -c                         查詢程序的配置文件

                            -d                        查詢程序的文檔

                            -i                          查詢information

                            -l                           查看指定的程序包安裝後生成的全部文件

                            --scripts        程序包自帶的腳本

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

                            -R                        查詢指定的程序包所依賴的CAPABILITY

 

               經常使用查詢用法:

                     -qi   package         -qip package-file

                     -qf  file

                     -qa

                     -ql   pack              -qlp  pack—file

                     -qc  pack             

                     -qd pack

        

        rpm2cpio pack—file | cpio -itv           預覽包內文件

        rpm2cpio pack-file | cpio -id "單個file"     釋放包內文件

        

        包卸載:

               rpm   {-e|--erase}[--allmatch][--nodeps][--noscripts][--notriggers]

                     [--test]   package.name

               

               如:rpm -e tree

               

        包校驗:

               rpm -V|--verify [select-option] [verify-options]  package.name

                             

                      針對已安裝包,查看文件是否有修改如:

                     如:

                            [root@sentos7 /data]$rpm -V tree

                            S.5....T.  d  /usr/share/doc/tree-1.6.0/LICENSE

                     S            file size differs 大小改變

                     M           mode differs(includes permissions and file type)

                                    權限改變

                     5            hash值,md5值發生變化,表示文件內容發生改變

                     D            Device major/minor number  mismatch     設備主次發生改變

                     L            readlink path mismatch       連接發生改變

                     U            USER ownership  differs

                     T            mtime differs(includes

                     P            capability  differ

               

               md5sum file file    比較文件hash(md5)值

               

        包來源合法性驗證和 完整性

               導入所須要公鑰:

                     rpm --import  /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

                     rpm --import  /光盤/RPM-GPG-KEY-CentOS-7     

               rpm -K|checksig  rpmfile    檢查包的完整性的簽名

               rpm -qa "gpg-pubkey"        查看gpgkey

               

        數據庫重建

                       /var/lib/rpm

               rpm --initdb|--rebuiddb

                     initdb:     初始化

                                    若是事先不存在數據庫,則新建之

                                    不然,不執行任何操做

                     rebuilddb  :重建已安裝的包頭的數據庫索引目錄

               

                    

yum:   

        客戶端配置:

               /etc/yum.conf:                      爲全部倉庫提供公共配置

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

        

               新建/etc/yum.conf.d/.repo文件

                      [repositoryID]

                     name=some name  

                      baseurl=file:///光盤路徑                    本地光盤

                                   ftp://  http:// https://   網絡路徑

                     enabled=0,1                                              0關閉,1開啓

                     gpgcheck=0,1                                           0關閉,1開啓

                     gpgkey=URL  (file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7)

                                           file:///光盤根目錄/RPM-GPG-KEY-CentOS-7

                      enablegroups=0;1

                      failovermethod={roundrobin|priority}

                                   roundrobin    隨機

                                   priority   順序

                     cost=      默認1000             值越小越優先

                    

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

                     $releasever           當前OS的發行版的主版本號

                     $arch                    平臺,i386,i686,x86_64等

                     $basearch:            基礎平臺,如x86_64

                    

               yum源

                     阿里雲repo

                             https://opsx.alibaba.com/mirror

                     阿里雲centos:

                             https://mirrors.aliyun.com/centos/

                     阿里雲epel

                             https://mirrors.aliyun.com/epel/7/x86_64/

 

        yum-config-manager

               yum-config-manager   --add-repo=url

                     自動生成倉庫

               yum-config-manager --disable name.repo      禁用倉庫

               yum-config-manager --enable name.repo       啓用倉庫

               

yum命令:

        yum 不能多終端同時使用

        

        yum命令的用法

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

        

        顯示倉庫列表:

               yum repolist [ all | enabled | disabled  ]

        

        顯示程序包:

               yum list

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

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

        安裝程序包:

               yum install package1 [package2]..

               yum reinstall package1..             從新安裝

        升級程序包:

               yum update package..

               yum downgrade package

        檢查可用升級:

               yum check-update

        卸載程序包:

               yum remove | erase package...

               

        查看程序包:

               yum info package

        查看指定的特性(能夠是某文件)是由哪一個程序包所提供

               yum provdes | whatprovides feature1....

        清除本地緩存:

               清除/var/cache/yum/$basearch/$releasever  緩存

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

        構建緩存:

               yum makecache

               

        搜索:

               yum search string1.

        查看指定包所依賴的capabilities

               yum deplist package1....

        

        查看yum事務歷史:

               yum history info| list | packages-list| packages  -info

               yum history info 6

               yum history undo |redo 6

 

        日誌文件:/var/log/yum.log     

               

        安裝或升級本地程序包:

               yum localinstall rpmfile

                     如今通常用(install)

                    

        包組管理的相關命令:

        yum grouplist [hidden]

        yum groupinstall group1

        yum groupremove group1...

        yum groupinfo group1..

        yum groupupdate group1..

        

        yum的命令行選項:

               --nogpgcheck      禁止進行gpgcheck

               -y                          自動回答yes

               -q                         靜默模式

               --disablerepo=repoidglob   臨時禁用此處指定的repo

               --enablerepo=repoidglob           臨時啓用此處指定的repo

               --noplugins                                禁用全部插件

               

        建立yum倉庫:

               createrepo dir 製做倉庫 若是添加了安裝包,需從新createrepo

        

        

程序包編譯:

               Application-VERSION-release.src.rpm --> 安裝後,使用rpmbuild命令製做成

               二進制格式的rpm包,然後再安裝

               源代碼-->預處理 -->  編譯 --> 彙編 -->  連接 --> 執行

               源代碼組織格式:

                      多文件:文件中代碼只見,很肯能存在跨文件依賴關係

                     C,C++: make項目管理器

                             configure腳本 --> Makefile.in -->  Makefile

                     java:maven

                    

C語言源代碼編譯安裝三步驟:

               1      ./configure | --prefix=dir

                      經過選項傳遞參數,指定啓用特性、安裝路徑等;執行時會參考用戶的

               指定以及makefile.in文件生成makefile

                      檢查依賴到的外部環境,如依賴的軟件包

               2     make | -j 4     根據Makefile  構建應用程序

               3     make insatall  複製文件到相應路徑

        開發工具:

               autoconf:生成configure腳本

               automake      生成Makefile.in

        注意:

               安裝前查看INSTALL ,README

               

編譯安裝:

        編譯c源代碼:

               準備:提供開發工具及開發環境

                     開發工具:make gcc等

                     開發環境:開發庫,頭文件

                            glibc:    標準庫

                    

               實現:經過‘包組’提供開發組件

                     Development  Tools

                     Server Platform  Developmet

               

               第一步:./configure腳本

                      選項:指定安裝位置,指定啓用特性

                     --help  獲取其支持使用的選項

                     選項分類

                            安裝路徑指定:

                                   --prefix=dir  :指定安裝路徑, 默認爲/usr/local

                                    --sysconfdir=dir    配置文件安裝位置

                            System types 支持交叉編譯

                            Optional  Features:可選特性

                                    --disable-FEATURE

                                    --enable-FEATURE[=ARG]

                            Optional  Packages:可選包

                                    --with-Package[=ARG]        依賴包

                                    --without-Package 禁用依賴關係

                             注意:一般被編譯操做依賴的程序包,須要安裝此程序包的‘開發’組件,

                            其包名通常相似於name-devel-VERSION

               第二步:make 【 -j 4  】

               第三部: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    centos6

                                    /etc/mam_db.conf centos7

                                    添加一個manpath

 

練習:

        1.查詢命令java來自於哪一個rpm包

        方法1      which java

                     ll  /usr/bin/java

                     ll  /etc/alternatives/java

                     rpm -qf  /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/jre/bin/java

 

        方法2     rpm  -q --whatprovides java

 

        2.yum的配置和使用,包括yum倉庫的建立

               實戰做業

        3.編寫系統初始化腳本reset.sh,包括別名,提示符顏色,yum倉庫配置文件

        安裝tree,ftp,lftp。telnet等包

        4.在CentOS7上編譯安裝apache2.4源碼包,並啓動此服務

        

        

 

筆記整理完成時間:2018年4月24日11:02:09

相關文章
相關標籤/搜索