關于軟件包管理

        軟件包管理

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

安裝、卸載、升級、查詢、檢驗、數據庫維護

rpm安裝:

        rpm {-i|–install} [安裝-選項] 打包;包

        -h  以#符號表示安裝進度

        -v  顯示安裝過程中的詳細信息

        -vv

        -vvv

        經常使用組合:-ivh,ivvh

        例如 rpm -ivh 包文件

        安裝時的選項:

        –test    測試安裝,但不真正執行安裝,僅報告依賴關系以及沖突信息等

        –nodeps  忽略依關系,副作用是能安裝成功,但未必能運行成功

        –replacepkgs  覆蓋安裝–重新安裝并覆蓋原有的文件

        –nosignature  不被監測來源合法性

        –nodigest     不檢查包完整性

        –noscipts     不執行程序包腳本的片斷

        –foree        強制安裝

        

rpm包升級:

         rpm {-U|–upgrade} [安裝-選項] 打包;包 

              -U   升級或安裝

               upgrade:安裝有舊版程序包,則“升級”  如果不存在舊版程序包,則“升級”

         rpm {-F|–freshen} [安裝-選項] 打包;包 

              -F   升級

               freshen:安裝有舊版程序包,則“升級”  如果不存在舊版程序包,則不執行升級操作

        常用組合:-Uvh,Fvh 

        例如  rpm -Uvh 包文件

        升級選項:

        –oldpackage      降級

        –force           強制升級

升級時需要注意事項:

1  不要對內核執行升級,Linux 支持多個內核共存,可以對此直接安裝新版本內核或不同版本的內核

2   如果程序包的配置文件安裝后被修改,升級時,新版本的文件不會覆蓋老版本的配置文件。而是把新版本的文件重命名加上后綴(.rpmnew) 之后保留

rpm包查詢:

         rpm {-q|–query}[選擇-選項][查詢選項]

         安裝選項                                                     ~]# rpm -q tree 后面準確查找包名    

         -a 所有包、                                                ~]# rpm -qa     查詢當前系統安裝的所有包  ~]# rpm -qa |grep "^tr"  管道給關鍵字查找,以tr開頭的包名

         -f 查看指定的文件由哪個程序安裝生成                          ~]# rpm -qf /etc/issue   查詢文件是哪個包生成   

         -p  rpmfuile 針對尚未安裝程序包文件做查詢操作;              ~]# rpm -qp tree-1.6.0-10.el7.x86_64.rpm 

         –whatprovides 性能進程 查詢指定的性能進程有哪個包所提供     ~]# rpm -q tree –whatprovides  查詢這個功能是由哪個包所提供

         –whatrequires 性能進程 查詢指定的性能進程被哪個包所依賴     ~]# rpm -q bash –whatrequires  查詢這個功能是被哪個包所依賴  

         rpm2cpio 包文件|cpio -itv  預覽包內的文件                    ~]# rpm2cpio tree-1.6.0-10.el7.x86_64.rpm |cpio -itv

rpm2cpio 包文件|cpio -id   "*.conf" 釋放包內文件

         查詢選項:

         –changelog 查詢rpm包的變動日志                              ~]# rpm -qc tree –changelog

         -c   查詢程序的配置文件   

         -d   查詢程序的文檔                                          ~]# rpm -qd tree

         -i   信息                                                    ~]# rpm -qi tree

         -l   查看指定的程序包安裝后生成的所有文件                    ~]# rpm -ql tree

         –scripts 程序包自帶的腳本片斷                               ~]# rpm -q bash –scripts

         -R   查詢指定的程序包所依賴的 性能進程                       ~]# rpm -qR bash

         –provides  ;列出指定程序包所提供的 性能進程                ~]# rpm -q bash –provides

rpm卸載:

        rpm  {-e|–erase} 

         –allmatches      移除所有符合 <package> 的軟件包(如果<package> 被指定未多個軟件包,常常會導致錯誤出現)

         –nodeps                         不驗證軟件包依賴

         –noscripts                      不執行軟件包腳本

         –notriggers                     不執行本軟件包觸發的任何腳本

         –test                           不真正安裝,只是判斷下是否能安裝

包檢驗:rpm {-V|–verify}

               –nofiledigest                   不驗證文件摘要

               –nofiles                        不驗證軟件包中文件

               –nodeps                         不驗證包依賴

               –noscript                       不執行驗證腳本

導入所需要公鑰:

 ~]# rpm -K tree-1.6.0-10.el7.x86_64.rpm   檢查包的完整性和簽名

       

rpm數據庫:

        數據庫重建: /var/lib/rpm

        rpm {–initdb|–rebuilddb}

        initdb  初始化

        如果時間不存在數據庫,則新建之,否則 不執行任何操作

        rebuilddb 重建數據庫  無論當前存在與否,直接重新創建數據庫             

  

  

  

rpm命令實現程序管理   主要核心命令

安裝:-vih,–nodeps,–replacepkgs

卸載:-e,–nodeps

升級:-Uvh,-Fvh,–nodeps,–oldpackage

查詢:-q,-qa,-qf,-qi,-qc,-q –scripts, -q –chanlog, -q –provides,-q–requires

校驗:-V

導入GPG密鑰:–import,-K,–nodigest,–nosignature

數據庫重建:–initdb,–rebuilddb                                   

===========================================================

yum 

    yum是rpm的前端程序,用來解決軟件包相關依賴性,可以在多個庫之間定位軟件包,

資源庫: 存儲了眾多rpm包,以及包的相關的元數據文件(放置于特定目錄repodata下)

    文件服務器:ftp:

                http://

                file:///

yum配置文件:

           /etc/yum.conf              主配置文件為所有倉庫提供數據

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

           創庫指向的定義:

           文件以.repo 結尾; 

           root@Compro ~]# cat /etc/yum.repos.d/base.repo 

           [base]                       提供配置信息

           name=CentOS 7                當前倉庫的名稱

           baseurl=http://10.1.0.1/cobbler/ks_mirror/CentOS-7-x86_64/    教室里的yum源

           enabled=1                    此倉庫是否為可用

           gpgcheck=0                   是否對程序包做校驗

           gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7    指明訪問密鑰路徑的路徑

           [倉庫ID]     對于當前系統的yum來將,此倉庫ID用于唯一標識此倉庫指向,因此,必須唯一

           name=name    當前倉庫描述信息名稱

           baseurl=url://path/to/repository/   

           enabled={1|0}    此倉庫是否可被使用 1是 禁用0是可以 不寫是默認

           gpgcheck={1|0}   是否對程序包做校驗  

           gpgkey=          指明gpgkey文件路徑

           cost= 默認為1000

           

如果使用光盤當作本地yum倉庫:

掛載光盤至某目錄,例如/media/cdrom

#mount /dev/cdrom /media/cdrom

創建配置文件:

[CentOS7]

name=自定義                  當前倉庫描述信息

baseurl=指明資源庫的訪問路徑,通常為一個文件服務器上輸出的某資源庫,支持的類型:ftp://;http://;file:///

gpgcheck={1|10}          是否對程序包做校驗

enabled={1|10}         此倉庫上是否可用,默認為可用           

yum命令的語法: yum [選項] [命令] [包]

yum顯示倉庫列表:

                yum repolist [all|enabled|disabled]

顯示程序包:

          yum list

          yum list [all | glob_ exp1 ] [glob_exp2] …             

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

安裝程序包:

          yum install 包1 [包2] …

          yum reinstall 包1 [包2]…         重新安裝

升級程序包:

          yum update [包1][包2]…

          yum downgrade 包1 [包2]…      降級

卸載程序包:

          yum remove | erase 包1 [包2]  …                      

                

查看程序包的信息:

          yum info name

查看指定的特性(可以是某文件)是由那個程序包所提供

yum provides | whatprovides 特性1 [特性2] …                

清理本地緩存:

          yum clean [包|元數據|expire-cache|rpmdf|plugins|all]

構建緩存:

         yum makecache            

 

搜索:

    yum  search 字符串1 [字符串2]

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

查看指定包所依賴的capabilities 

     yum deplist 包1 [包2] …

查看 yum事務歷史

               yum history

               

日志:

     /var/log/yum.log

     

安裝及升級本地程序包

         yum install rpmfile1 [rpmfile2] …

         yum update  rpmfile1 [rpmfile2] …

包組管理的相關命令:

         yum groupinstall group1

         yum groupupdate group1

         yum grouplist [hidden][groupwildcard]

         yum groupremove group1

         yum groupinfo group1

         

     

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

 

掛載光盤至某目錄 

          例如 /media/crom  # mount /dev/cdrom /media/crom

          創建配置文件

          [CentOS7]

          name=name

          baseurl=file:///

          gpgcheck=0

          enabled=1    

yum 的命令行選項

yum [選項] 包

     –nogpgcheck     禁止進行gpg check

     -y               自動回答為"yes" 

     -q               靜默模式

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

     –enablerepo=repoidglob     臨時啟動此處指定的repo

     –noplugins                 禁用所有插件

     

 

 =================================================================

 

                    源碼編譯  

程序包編譯安裝:

Application-VERSION-release.src.rpm–> 

安裝后,使用rpmbuild命令制作成二進制格式的rpm包,而后再安裝

源代碼–>預處理–>編譯–>匯編–>鏈接–>執行

源代碼組織格式:

多文件:文件中的代碼之間,很可能存在跨文件依賴關系

C、C++:make (項目管理器,configure –>

Makefile.in –> makefile)

java: maven

C代碼編譯安裝三步驟:

                    ./configure

                    通過選項傳遞參數,指定啟動特性、安裝路徑等;

                    執行時會參考用戶的指定以及makefile.in文件生成makefile

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

                    [cdrom] 

                    name=centos 7 cdrom

                    baseurl=file:///mnt/cdrom

                    gpgcheck=0

                    enabled=0                   

                    make    根據makefile文件,構建應用程序

                    make install   復制文件到相應路徑

開發工具:

         autoconf: 生成configure腳本

         automake:生成Makefile.in

         注意:安裝前查看 安裝自帶文檔

開源程序源代碼的獲取:

官方自建站點:

apache.org (ASF:Apache Software Foundation)

mariadb.org

代碼托管:

SourceForge.net

Github.com

code.google.com

c/c++編譯器: gcc(GNU C Complier)

編譯C源代碼:

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

             開發工具:make,gcc等

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

             glibc:標準庫

       實現:通過“包組”提供開發組件

CentOS 6:

Development Tools

Server Platform Development

CentOS 7:

Development Tools

Development and Creative Workstation

編譯安裝:

        第一步:configure 腳本

        選項:指定安裝位置、指定啟用的特性

        安裝路徑設定:./configure –prefix=/usr/local/http2 –sysconfdir=/etc/http2/

可選特性:

–disable-FEATURE

–enable-FEATURE[=ARG]

可選包:

–with-PACKAGE[=ARG],依賴包

–without-PACKAGE,禁用依賴關系     

     

安裝后的配置:

二進制程序目錄導入至PATH環境變量中;

編輯文件:

 [root@Compro ~]# vim /etc/profile.d/http2.sh

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

導入庫文件路徑:

 編輯/etc/ld.so.conf.d/NAME.conf

 添加新的庫文件所在目錄至此文件中

讓系統重新生成緩存:

 ldconfig[-v]    

     

導入頭文件

基于鏈接的方式實現:

ln -sv

導入幫助手冊

編輯/etc/man.config|man_db.conf文件

添加一個MANPATH     

[root@Compro ~]# vim /etc/man_db.conf

MANDATORY_MANPATH /usr/local/http2/ma

     

     

     

     

     

     

     

     

     

     

 

原創文章,作者:小馬哥,如若轉載,請注明出處:http://www.www58058.com/42119

(0)
小馬哥小馬哥
上一篇 2016-08-30 13:55
下一篇 2016-08-30 13:55

相關推薦

  • TCP網絡關閉的狀態變換時序圖

    TCP共有11個網路狀態,其中涉及到關閉的狀態有5個。 在我們編寫網絡相關程序的時候,這5個狀態經常出現。因為這5個狀態相互關聯,相互糾纏,而且狀態變化觸發都是由應用觸發,但是又涉及操作系統和網絡,所以正確的理解TCP 在關閉時網絡狀態變化情況,為我們診斷網絡中各種問題,快速定位故障有著非常重要的作用和意義。 下是是根據W.Richard Stevens的《…

    Linux干貨 2015-04-03
  • parted使用說明

    一.為什么使用parted命令     傳統的MBR(Master Boot Record)分區方式,有一個局限:無法支持超過2TB的硬盤分區(單個分區超過2TB)。     GPT(GUID Partition Table)的分區表很好的解決了這個問題,但在Linux系統中,傳…

    Linux干貨 2015-04-13
  • bash功能特性三 命令的引用、展開和補全

    一、bash的補全功能     1、命令補全     根據內建命令或外部命令的查找方式,查找以用戶指定的字符串開頭的命令,如果用戶指定的開頭字符串能惟一標識某命令,則tab鍵可以補全此命令,否則,則兩次tab鏈可顯示所有以指定字符串開頭的命令。   &nbsp…

    Linux干貨 2015-04-15
  • ldd 的一個安全問題

    我們知道“ldd”這個命令主要是被程序員或是管理員用來查看可執行文件所依賴的動態鏈接庫的。是的,這就是這個命令的用處??墒?,這個命令比你想像的要危險得多,也許很多黑客通過ldd的安全問題來攻擊你的服務器。其實,ldd的安全問題存在很長的時間了,但居然沒有被官方文檔所記錄來下,這聽上去更加難以理解了。怎么?是不是聽起來有點不可思議?下面,讓我為你細細道來。 首…

    Linux干貨 2016-05-05
  • vsftpd+pam+MySQL—->實現虛擬用戶認證

    一、安裝所需要程序 1、安裝vsftpd yum -y install vsftpd 2、安裝MySQL yum -y install  mysql-server mysql-devel pam_mysql 二、創建虛擬用戶賬號 1.準備數據庫及相關表 首先請確保mys…

    Linux干貨 2016-09-19
  • 二維碼的生成細節和原理

    二維碼又稱QR Code,QR全稱Quick Response,是一個近幾年來移動設備上超流行的一種編碼方式,它比傳統的Bar Code條形碼能存更多的信息,也能表示更多的數據類型:比如:字符,數字,日文,中文等等。這兩天學習了一下二維碼圖片生成的相關細節,覺得這個玩意就是一個密碼算法,在此寫一這篇文章 ,揭露一下。供好學的人一同學習之。 關于QR Code…

    Linux干貨 2016-08-15
欧美性久久久久