中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux的包管理工具介紹

發布時間:2020-07-01 03:32:12 來源:網絡 閱讀:788 作者:愿如初見 欄目:數據庫

 概述:

     本章內容:軟件的運行環境,軟件包基礎,rpm包管理,yum管理,定制yum倉庫,編譯安裝

一、軟件運行環境 

 1.API:Application Programming Interface (應用程序開發接口)
   POSIX:Portable OS(國際標準)
   程序源代碼–> 預處理–> 編譯–> 匯編–> 鏈接
       靜態編譯:
       共享編譯:.so
   ABI:Application Binary Interface(應用二進制程序接口)
        Windows與Linux不兼容
        linux:文件格式:ELF(Executable and Linkable Format)
        win:文件格式:exe,msl PE(Portable Executable)
   庫級別的虛擬化:
        Linux: WINE(提供模擬windows的庫,運行win環境)
        Windows: Cywin(提供linux的運行環境)
        
2.開發語言
   系統級開發
        C/C++(依賴于c庫)
        httpd,nginx,vsftpd,go
   應用級開發
        java(依賴于jvm虛擬機)
        Python(openstack云站),php,perl(依賴于per解釋器),ruby
        
3.程序格式:
        c/c++
        源代碼:文本格式的程序代碼;
        編譯開發環境:編譯器,頭文件,開發庫
        二進制格式:文本格式的程序代碼–>編譯器–>二進制格式(二進制程序、庫文件、配置文件、幫助文件)
    java/Python
        源代碼:編譯能夠在其虛擬機(jvm/pvm)運行的格式;
        開發環境:編譯器、開發庫
        二進制
    項目構建工具
        c/c++:make      jave:maven


二、包管理

1.二進制應用程序的組成部分:
        二進制文件、庫文件、配置文件、幫助文件
        
2.程序包管理:
        源代碼–>目標二進制格式(二進制程序、庫文件、配置文件、幫助文件)–>組織成為一個或有限幾個“包文件”(安裝,升級,卸載,查詢,校驗)
    程序包管理器:
        deblan: dpt,dpkg  以".deb"后綴
        redhat: rpm (redhat package manager) 以 ".rpm"后綴 
        S.u.S.E:rpm, ".rpm"命令
        
3.包命令格式
    源代碼:
         name-VERSION.tar.gz|bz2|xz
         VERSION: major(主版本號).minor(次版本號).release(發行號)
    rpm包命名格式:
         name-VERSION-release.arch.rpm
         VERSION: major.minor.release(rpm包發行號)
         changelog文檔(內容修復改進的相關文檔)
         例:bash-4.2.46-19.el7.x86_64.rpm
         release:release.OS
    常見的arch:
         x86: i386, i486, i586, i686
         x86_64: x64, x86_64, amd64powerpc: ppc
         跟平臺無關:noarch (適用于所有平臺)
         
4.包:分類和拆包
         Application-VERSION-ARCH.rpm: 主包
         Application-devel-VERSION-ARCH.rpm  開發子包
         Application-utils-VERSION-ARHC.rpm  其它子包
         Application-libs-VERSION-ARHC.rpm   其它子包
     包之間:可能存在依賴關系,甚至循環依賴
     自動解決依賴包管理前端工具:
         yum:rpm包管理器的前端工具
         apt-get:deb包管理器前端工具
         zypper: suse上的rpm前端管理工具
         dnf: Fedora 18+ rpm包管理器前端管理工具
         
5.庫文件
     查看二進制程序所依賴的庫文件:
         ldd /PATH/TO/BINARY_FILE
     管理及查看本機裝載的庫文件:
         ldconfig
         /sbin/ldconfig-p: 顯示本機已經緩存的所有可用庫文件名及文件路徑映射關系
         配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
         緩存文件:/etc/ld.so.cache
         
6.包管理器
     程序包管理器:
         功能:將編譯好的應用程序的各組成文件打包一個或幾個程序包文件,從而方便快捷地實現程序包的安裝、卸載、查詢、升級和校驗等管理操作
     程序包的組成清單(每個程序包單獨實現)
         RPM包內的文件清單
         RPM的元數據,如名稱,版本,依賴性,描述等
         安裝或卸載時運行的腳本
     數據庫(公共)  路徑:/var/lib/rpm 
         程序包名稱及版本
         依賴關系
         功能說明
         包安裝后生成的各文件路徑及校驗碼信息
             
7. 獲取程的來源        
             
1)系統發版的光盤或官方的服務器;
CentOS鏡像:
          http://mirrors.aliyun.com
          http://mirrors.sohu.com
          http://mirrors.163.com

2) 項目官方站點

3) 第三方組織:
      Fedora-EPEL
      搜索引擎:
          http://pkgs.org
          http://rpmfind.net
          ttp://rpm.pbone.net

4) 自己制作


三、CentOS系統上rpm命令管理程序包:

功能:安裝、卸載、升級、查詢、校驗、數據庫維護


1.安裝

格式:rpm -i[option] PACKAGE_FILE
選項:
     -i:表示install安裝
     -v -vv:表示顯示安裝過程,后者顯示更加詳細;
     -h:以#號顯示進度條格式;
     -nodeps:忽略依賴關系
     -force:強制動作,注意安裝成功后可能不能運行;
     -test:測試安裝,作為測試檢查
     -nosignature:不檢查簽名就是來源合法性;
     -nodigest:不檢查包完整性;MD5頭;
     -noscipts:不執行程序包腳本片斷
                注意:rpm自帶四類腳本
                          %pre:安裝前腳本;   -nopre
                          %post:安裝后腳本;  -nopost
                          %preun:卸載前腳本; -nopreun
                          %postun:卸載后腳本;-nopostun
 使用:
       rpm -ivh  PACKAGE_FILE


2.升級

格式: rpm -U|F[optIon] PACAGE_FILE  
選項:
     -U:表示不管軟件事先是否存在都要升級,存在就升級,不存在就安裝;
     -F:表示軟件軟件存在就升級,如何不存在,就放棄升級;
     -oldpackage:降級,如果升級之后發現有Bug或者兼容性問題,可以使用此選項回滾到升級前的版本;
     -force:強制動作,注意安裝成功后可能不能運行;
     -replacepkgs:注意不能替換配置文件;
     注意:
        (1)不要對kernel做升級操作;支持多kernel并存;可以直接安裝;
        (2)修改過的配置升級不會覆蓋,升級同新文件,會重命名為file.rpmnew


3.查詢:

格式:rpm -q[option] [PACKAGE-NAME|PACKAGE_FILE]
選項:
     -qa:查詢系統所有已安裝的程序包;
     -qf /path/to/file:查詢文件是由那個程序包生成;
     -ql:查詢程序生成的文件:
     -qi:查詢程序屬性信息;
     -qc:查詢程序配置文件;
     -qd:查詢程序提供的文檔
     -q -whatprovides CAPABILITY(功能):查詢這種CAPABILITY由那個程序提供;
     -q -whatrequires CAPABILITY:查詢這種CAPABILITY被哪些程序包依賴;
     -q -scripts:查詢程序包生成的腳本;
     -q -changelog:查詢軟件歷史
     查詢未安裝的軟件包信息,需要加-p選項跟上面的選項結合使用,后面的參數必須是PACKAGE_FILE;
     列如:
         -qpi:查詢指定PACKAGE_FILE的程序屬性信息;


4.卸載

格式:rpm -e[option] PACKAGE-NAME
選項:
     -vh:顯示過程
     -nodeps:忽略依賴
     -noscripts:忽略腳本
     -allmatches:卸載所有匹配指定名稱的程序包,也就是說卸載軟件名稱中包含此名稱的所有包;
     -test:測試檢查卸載,不是真卸載
 注意:
     卸載會檢查依賴關系,如果卸載的軟件被其他程序依賴,請謹慎卸載,否則導致其依賴程序無法運行;
     
使用:
       rpm -e  PACKAGE_FILE

 

5.校驗

工作原理:校驗檢查的是軟件包來源的合法性和完整性,要想對它們校驗檢查,必須要有校驗機制,這種機制是根據簽名和加密實現的,通常發行版的光盤中會有一個包含所有軟件特征碼的文件,特征碼是根據軟件包特征提取的,通過單項加密實現的用來校驗軟件包的完整性,如果軟件包在獲取途中被修改,在系統中再次提取軟件包特征碼,跟系統已有的特征碼文件比對,不同則判斷被攥該,修改過的軟件包,根據相同的加密算法提取的特征肯定不同;來源合法性是根據簽名實現的;特征碼文件被稱為公鑰;校驗是由校驗程序完成的,默認rpm命令安裝時會調用;
公鑰獲取:
      官方網站
      系統光盤
      系統配置文件中,這是系統在安裝時從安裝光盤復制進去的
        系統公鑰位置:/etc/pik/rpm-gpg/RPM-GPG-KEY-CentOS-7
導入公鑰:
         rpm -import /path/to/pub.key
校驗軟件:
         rpm -V PACKAGE-NAME:校驗安裝文件自安裝后是否被修改過,根據PMS記錄信息判斷;
         rpm -K PACKAGE_FILE:對指定未安裝的軟件包進行手工校驗;


6.數據庫重建

默認數據庫目錄位置:/var/lib/rpm
語法格式:
       rpm -initdb     :初始化數據庫
       rpm -rebuilddb  :重新構建
       -dbpath=/path/  :指定數據庫創建位置;


四、CentOS系統上yum命令管理程序包:


1.yum配置文件

yum repository:yum repo(yum倉庫),存儲了眾多rpm 包及包的相關的元數據文件(放置于特定目錄repodata)
文件服務器:
      ftp://
      http://
      file:///
yum 客戶端配置文件:
     /etc/yum.conf :為所有倉庫提供公共配置,一般不做更改
     /etc/yum.repos.d/*.repo :為倉庫的指向提供配置
倉庫指向的定義:
     [repositoryID]
      name=Some name for this repository,yum倉庫描述
      baseurl=url://path/to/repository/,yum倉庫路徑,支持上述三種路徑
      enabled={1|0},0表示禁用,1表示啟用,可以不寫表示啟用,但是寫錯enabled會造成禁用
      gpgcheck={1|0},此行不寫要檢測,0是不檢測包,1是檢查包
      pgkey=URL
此外假如系統上已經裝有檢查文本文件/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7,相當于以上兩項
      enablegroups={1|0},包組
      failovermethod={roundrobin|priority},優先級-(默認為:roundrobin,意為隨機挑選; cost=默認為1000)



2.yum 命令的用法

格式:yum [options] [command] [package …]

1)顯示倉庫列表:
    yum repolist [all|enabled|disabled]

2)顯示程序包:
    yum list


3)安裝程序包(centos7上yum支持補全,因為其bash版本更高):
    yum install package1 [package2] […]   
    yum reinstall package1 [package2] […] (重新安裝)

4)升級程序包:
    yum update [package1] [package2] […]   
    yum downgrade package1 [package2] […] (降級)

5)檢查可用升級:
    yum check-update

6)卸載程序包:
    yum remove | erase package1 [package2] […]  )


7)查看程序包信息information:
    yum info […]


8)查看指定的特性( 可以是某文件)是由哪個程序包所提供:
    yum provides | whatprovides feature1 [feature2] […],類似于rpm的-qf選項


9)清理本地緩存(yum緩存在主配置文件中有說明即是#cat /etc/yum.conf有相關說明):
安裝程序包時,下載的包文件存放于cachedir=/var/cache/yum/$basearch/$releasever中,其中$basearch是硬件架構,$releasever是操作系統版本號
    yum clean [ packages | metadata | expire-cache |rpmdb | plugins | all ]
.
10) 構建緩存:
    yum makecache

11) 搜索:
    yum search string1 [string2] […],以指定的關鍵字搜索程序包名及summary信息

12) 查看指定包所依賴的capabilities:
    yum deplist package1 [package2] […]

13) 查看yum 事務歷史:
        yum歷史日志文件:/var/log/yum.log
    #cat /var/log/yum.log也可以查看yum事務歷史
    yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

14) 包組管理的相關命令:
單個包的功能有限,為了實現復雜的功能,需要許多包組成包組
    yum groupinstall group1 [group2] […] ,安裝包組
    yum groupupdate group1 [group2] […] ,升級包組
    yum grouplist [hidden] [groupwildcard] […] ,查看包組列表
    yum groupremove group1 [group2] […] ,卸載包組
    yum groupinfo group1 […] ,查看包組信息


3. 如何使用光盤當作本地yum 倉庫

1) 掛載光盤至某目錄,例如/mnt/cdrom
[root@localhost ~]# mkdir /mnt/cdrom
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom 
2) 創建配置文件
[root@localhost ~]# vim /etc/yum.repos.d/yum.repo
[cdrom]
name=yum test
baseurl=file:///mnt/cdrom或者file:///misc/cd
gpgcheck=0
gpgkey=
enabled=1


4. yum 的命令行選項

-nogpgcheck:禁止進行gpgcheck檢查
-y:自動回答為“yes”
-q:靜默模式
-disablerepo=repoidglob:臨時禁用此處指定的repo
-enablerepo=repoidglob:臨時啟用此處指定的repo
-noplugins:禁用所有插件


5. yum 倉庫

1) yum 的repo配置文件中可用的變量:
     $releasever: 當前OS的發行版的主版本號
     $arch: 平臺,i386,i486,i586,x86_64等等
     $basearch:當前基礎平臺架構
實例:
     baseurl=http://server/centos/$releasever/$basearch/
     http://server/centos/7/x86_64
     http://server/centos/6/i384
2) 創建自定義yum倉庫:
     createrepo [options] <directory>
     其中yum需要的一些依靠性、校驗信息等等都存放在repodata目錄中,所以要自定義建立yum源不僅需要rpm包,也是離不開repodata目錄,repodata目錄文件可以由createrepo命令生成


五、源碼安裝


  1. C代碼編譯安裝三步驟-在源代碼目錄下操作

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

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

開源程序源代碼的獲取:
    	官方自建站點:
    	    apache.org (ASF)
    	    mariadb.org
    			...
    	代碼托管:
            SourceForge
    	    Github.com
    	    code.google.com

c/c++: gcc (GNU C Complier)
編譯C源代碼:
    前提:提供開發工具及開發環境
    開發工具:make, gcc等
    開發環境:開發庫,頭文件
    glibc:標準庫

通過“包組”提供開發組件
    CentOS 6: "Development Tools", "Server Platform Development",

第一步:configure腳本
    選項:指定安裝位置、指定啟用的特性
        --help: 獲取其支持使用的選項
    選項分類:
        裝路徑設定:
    	 --prefix=/PATH/TO/SOMEWHERE: 指定默認安裝位置;默認為/usr/local/
    	 --sysconfdir=/PATH/TO/SOMEWHERE:配置文件安裝位置;

    system types:
        Optional Features: 可選特性
    	--disable-FEATURE
    	--enable-FEATURE[=ARG]
        Optional Packages: 可選包
    	--with-PACKAGE[=ARG]
    	--without-PACKAGE

第二步:make
第三步:make install



2. 安裝后的配置:(以httpd為例子)

1) 將編譯安裝后的二進制程序目錄導入至PATH 環境變量中,就可以直接使用命令而不再用寫絕對路徑或相對路徑;
編輯文件/etc/profile.d/NAME.sh
#vim /etc/profile.d/http2.sh
PATH=$PATH:/usr/local/http2/bin
2) 導入庫文件路徑
編輯/etc/ld.so.conf.d/NAME.conf
添加新的庫文件所在目錄至此文件中#vim /etc/ld.so.conf.d/http2.sh
/usr/local/http2/lib
然后讓系統重新生成緩存#ldconfig [-v]
3) 導入頭文件,頭文件的默認位置是/usr/include
基于鏈接的方式實現:ln -sv
[root@localhost htdocs]# cd /usr/include
[root@localhost include]# ln -s /usr/local/http2/include http2
4) 導入幫助手冊
編輯/etc/man.config|man_db.conf文件
添加一個MANPATH /usr/local/http2/man


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东平县| 灵台县| 合肥市| 定安县| 新丰县| 陆河县| 谷城县| 福鼎市| 东乌| 炉霍县| 九龙城区| 海原县| 湘阴县| 简阳市| 开化县| 九龙县| 张家川| 怀安县| 大丰市| 砚山县| 塔河县| 普兰县| 泾阳县| 宝坻区| 阿拉尔市| 会宁县| 商都县| 宝山区| 萝北县| 长子县| 安塞县| 全州县| 佳木斯市| 隆子县| 民县| 乌拉特前旗| 商城县| 辉南县| 垫江县| 襄城县| 望谟县|