Linux學習命令彙總七——軟件包管理(rpm包 、yum repo、源碼包管理及相關命令)

本章Blog相關Linux知識點前端


程序:預編譯,編譯(源代碼——>cpu指令),彙編,鏈接node

    API:application programing interface 應用程序接口;兼容,意味開發庫接口兼容,所以源代碼可跨平臺python

    ABI:application binary interface 應用二進制接口;兼容,編譯後的程序可跨平臺mysql

庫:可執行的程序,自己不能做爲程序執行入口,但能夠被調用;編譯好的二進制格式nginx

頭文件(/usr/include):c++

    # which cat  查看一個可執行程序的具體路徑,即外部命令位置git

    # ldd  /bin/cat  查看可執行程序依賴的共享庫
github

    # man -M /usr/locla/nginx/man  nginx   調用安裝路徑man 幫助文件,查看命令功能sql

兩臺操做系統相同的平臺,在A主機上編譯的程序,手動遷移到B主機,沒法保證其正常運行,須要保證程序依賴的庫在B主機上存在 。
數據庫

軟件包的組成部分:

    二進制程序:默認安裝目錄/bin , /sbin ,/usr/bin ,/usr/sbin ,/usr/local/bin ,/usr/local/sbin

    庫文件: 默認安裝目錄/lib ,/usr/lib ,/lib64 , /usr/lib64

    頭文件:默認安裝目錄 /usr/include

    配置文件:使用純文本文件保存配置信息 ,默認安裝目錄爲/etc 

    幫助文件:默認安裝目錄爲/usr/share/man ,配置文件/etc/man.conf  包含man 文件 ,info文件 ,readme 等 文件 

# man command 到某路徑下查找與命令相同的一般以.gz結尾的壓縮文件的文件名.

例: 編譯安裝的mysql 程序,包括

    二進制程序文件:/usr/local/mysql-5.5.54/bin

    庫文件:/usr/local/mysql-5.5.54/lib

    頭文件:/usr/local/mysql-5.5.54/include

    配置文件:/usr/local/mysql-5.5.54/support_files/*.cnf

    幫助文件:/usr/local/mysql-5.5.54/man  , /usr/local/mysql-5.5.54/README

例: 編譯安裝的httpd 程序,包括

    二進制程序文件:/usr/local/httpd-2.2.34/bin

    頭文件:/usr/local/httpd-2.2.34/include

    配置文件:/usr/local/httpd-2.2.34/conf/

    幫助文件:/usr/local/httpd-2.2.34/man  , /usr/local/mysql-5.5.54/README

應用程序管理器:

    debian:.deb使用dpkg應用程序管理軟件

    Redhat:.rpm 使用RPM(RPM is package manager)應用程序管理器

包管理器的基本功能:打包,安裝,查詢 ,升級,卸載,校驗,數據庫管理

應用程序的安裝:

    包管理rpm 安裝

    使用源碼編譯安裝

    通用二進制格式安裝

    使用前端管理器工具(yum)安裝

程序包格式:

    源程序包格式:name-major.minor.release.tar.{gz|bz2|xz} 例:mysql-5.5.54.tar.gz

    rpm 包格式:name-version-release.arch.rpm  例:MySQL-client-5.5.54-1.el6.x86_64.rpm ,一般release中包含版本發行號及適用的os版本

    源碼包格式:源碼包擁有10個功能,大多數用戶只用其中的6個功能,餘下的4個分別爲:大包,核心主包,支包,分包。

驗證來源合法性:

    源碼包:經過MD5 或SH1 碼校驗

    RPM包:經過發行商提供的可信。包括驗證包完整性——校驗碼(MD5 或SH1),驗證來源合法——公鑰(RSA)。

獲取RPM途徑:

    發行商提供的光盤或站點服務器

    http://mirrors.163.com ,http://mirrors.sohu.com , http://mirrors.aliyutn.com

    http://rpmfind.net

    http://rpm.pbone.net 


rpm包管理及命令使用


rpm包管理:


一、校驗包來源合法及軟件包完整性

導入公鑰:

    #rpm --import /mnt/RPM-GPG-KEY-CENTOS-6 導入公鑰

驗證來源合法性:

    源碼包:經過MD5 或SH1 碼校驗

    RPM包:經過發行商提供的可信。包括驗證包完整性——校驗碼(MD5 或SH1),驗證來源合法——公鑰(RSA)。

      # rpm [ -K | --checksig ] rpm_name.rpm  檢查包來源合法及軟件包完整性

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

        --nodigest:不檢查包完整性

例:# rpm -K rpm -K zsh-4.3.10-7.el6.x86_64.rpm --nodigest


二、rpm包安裝

如存在依賴關係,需先解決依賴關係 ;若忽略依賴關係 ,--nodeps

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

    -v :顯示詳細信息

    -h :以#的個數表示安裝進度

    -ivh :通常三者組合使用

    --test :僅測試,不執行安裝

    --nodeps :忽略依賴關係

    --replacepkgs :從新安裝

例:# rpm -ivh zsh-4.3.10-7.el6.x86_64.rpm   安裝zsh包

例:# rpm -ivh zsh-4.3.10-7.el6.x86_64.rpm  從新安裝zsh包


三、rpm包卸載

rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]

例 :# rpm -e zsh-4.3.10-7.el6.x86_64 --nodeps 忽略依賴關係,卸載zsh 包


四、rpm包查詢

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

   query-options

        [--changelog] [-c,--configfiles] [-d,--docfiles] [--dump]
        [--filesbypkg] [-i,--info] [--last] [-l,--list]
        [--provides] [--qf,--queryformat QUERYFMT]
        [-R,--requires] [--obsoletes] [--scripts] [-s,--state]
        [--triggers,--triggerscripts

    -qa:查詢全部安裝的包 例:# rpm -qa apr* 或 # rpm -qa |grep 「^apr」

    -qc:查詢安裝包生成的配置文件

    -qd:查詢安裝包生成的幫助信息 例# rpm -qd apr

    -qi:查詢安裝包的描述信息 

    -ql:查詢安裝在當前生成的列表信息

    -qf:查詢某文件是由那個安裝包生成的 例 # rpm -qf /etc/passwd

    -q --scripts :查詢包相關腳本

    -p :查詢還沒有安裝的rpm包信息,能夠 -i ,-l,-c等選項組合使用  例:# rpm -qpc zsh-4.3.10-7.el6.x86_64.rpm


五、rpm包升級

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

    --nodeps :忽略依賴關係

    --force :強制安裝


六、校驗安裝後的rpm包

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

    狀態值及含義:

       S file Size differs
       M Mode differs (includes permissions and file type)
       5 digest (formerly MD5 sum) differs
       D Device major/minor number mismatch
       L readLink(2) path mismatch
       U User ownership differs
       G Group ownership differs
       T mTime differs
       P caPabilities differ

例: [root@study Packages]# rpm -V apr  校驗安裝後的rpm包
S.5....T.    /usr/lib64/libapr-1.so.0.3.9 


七、rpm包數據庫初始化及重建

# rpm {--initdb|--rebuilddb}

    --initdb 重建初始化,若是事先不存在,則重建一個管理庫

    --rebuilddb 重建管理庫,若存在,則覆蓋

注:這兩個參數是極爲有用,有時rpm 系統出了問題,不能安裝和查詢,大可能是這裏出了問題;


yum  repo管理及相關命令


程序包管理器的前段工具:yum(yellowdog update modifier)

一、依賴關係

    yum自動解決依賴關係

二、文件服務器(共享rpm包):經過yum所支持的文件共享機制將各個rpm包經過文件服務共享

    repository:倉庫

    須要的各rpm包

    依賴關係、程序包安裝後所可以生成的列表等元數據文件

三、yum客戶端

    配置文件,指定各可用的yum倉庫

    緩存元數據,yum回到各可用的yum倉庫獲取元數據,並緩存到本地

    分析元數據(包的依賴關係),根據具體操做請求完成元數據分析,包括檢查依賴關係、文件列表等信息

執行具體操做

四、客戶端配置文件指定對應服務器的訪問方式

    ftp服務器: ftp://server/path_to_repo

    http服務器:http://server/path_to_repo

    NFS服務器:nfs://server/path_to_repo

    file服務器: file:///server/path_to_repo


五、配置yum倉庫,要使用yum管理應用程序,首先爲其配置可用的yum倉庫。 

  配置文件:/etc/yum.conf  ,/etc/yum.repos.d/*.conf

  配置文件格式:由兩段組成,相似於Windows的ini配置文件

    [main] 主配置段

    [repo] 倉庫配置段

  配置repo:

    [repo_id]

    name=string 定義倉庫名稱

    baseurl=倉庫訪問路徑。系統中repodata文件目錄,即倉庫目錄

    enabled={1|0} 1表明倉庫啓用,0表明倉庫關閉

    gpgcheck={1|0} 1表明校驗,0表明不校驗

    gpgkey=公鑰路徑(能夠是本地,也能夠是服務器端路徑)

    cost=定義此倉庫開銷,默認爲1000 ,值越小越優先使用


六、yum配置文件中可用的四個宏

    $releasever :程序的腳本。對yum而言指的是redhat-release版本,只替換爲主版本號。如redhat6.5 ,則 $releasever 表示爲6

    $basearch:系統基本架構 ,如i686 ,i586等的基本架構爲i386

    $arch:系統架構

    $YUM0-9 :在系統定義的環境變量,能夠在yum中使用


例:配置yum倉庫

# vi  /etc/yum.repos.d/Base.conf

    [base]

    name=CentOS-$releasever - Base

    #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra

    baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/

    gpgcheck=1

    gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

    enabled=1


七、yum相關命令

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

    包管理

      * help [command]

      * install package1 [package2] [...] -y  安裝指定的程序包

      * update | upgrade  [package1] [package2] [...]   升級指定的程序包

      * downgrade package1 [package2] [...]  降級安裝的程序包

      * check-update    檢查可升級的包   例# yum check-update apr
      * remove | erase package1 [package2] [...]   刪除yum包,被依賴的包會一同刪除

      * repolist [all|enabled|disabled]   :列出全部可用的yum倉庫

      * reinstall package1 [package2] [...]  從新安裝指定的包

      * list [...]       顯示rpm列表   例 # yum list
      * info [...]     顯示rpm包信息  例 # yum info apr 等同於 #rpm -qi apr
      * clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]   清除緩存
      * provides | whatprovides /path/to/somefile  查詢某文件是由那個包安裝生成
      * version [ all | installed | available | group-* | nogroups* | grou-plist | groupinfo ]

      * history    [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

    包組管理:

      * groupinstall group1 [group2] [...]   安裝包組
      * groupupdate group1 [group2] [...]  升級包組
      * grouplist [hidden] [groupwildcard] [...]  列出全部的包組
      * groupremove group1 [group2] [...]  卸載包組
      * groupinfo group1 [...]    列出包組信息,注意組名有空格

    三個與開發有關的組:

       Server Platform Development  服務器開發組

       Development tools  基本開發環境組

       Desktop Platfrom Development  有圖形程序時,需安裝此組

    安裝本地包:

       # yum install /path/to/package_file --nogpgcheck   手動禁止檢查來源及合法性


八、yum repository 文件

    # yum install createrepo -y  安裝createrepo 功能

    # createrepo /path/to/somefile   爲某路徑建立repodata 目錄

    ftp mirror 下載包

    repodata ,自動生成

        repomd.xml :爲repodata中的其餘文件提供元數據信息


實驗1:把本地光盤做爲yum源

步驟:

一、禁用其餘yum源,設置enable=0;清理緩存 # yum clean all

二、建立本地yum源

  # vi /etc/yum.repos.d/local.repo

  [local_base]
  name=Centos-$releasever-$basearch
  baseurl=file:///mnt/    光盤掛載到/mnt/ 目錄
  gpgcheck=1
  enabled=1
  gpgkey=file://mnt/RPM-GPG-KEY-CentOS-6

三、查看確認該yum源是否生效

  # yum repolist

  Loaded plugins: fastestmirror
  Loading mirror speeds from cached hostfile
   * base: centos.ustc.edu.cn
   * extras: mirror.bit.edu.cn
   * updates: mirror.bit.edu.cn
  repo id                              repo name                                    status
  local_base                           Centos-6-x86_64                              6,518

 

實驗2:把2張光盤複製到本地做爲yum源

一、禁用其餘yum源,設置enable=0;清理緩存 # yum clean all

二、分別插入2張Centos6.6光盤,並製做本地iso光盤鏡像:

  # dd if=/dev/sr0 of=/media/Centos-6.6(1).iso

  # dd if=/dev/sr0 of=/media/Centos-6.6(2).iso

三、掛載本地iso文件:

  # mount -o loop  /media/Centos-6.6(1).iso  /usr/local/yum/dvd1

  # mount -o loop /media/Centos-6.6(2).iso /usr/local/yum/dvd2

四、配置開機自動掛載  # vi /etc/fstab  添加以下兩行

   /media/Centos6.6(1).iso   /usr/local/yum/dvd1  iso9660  defaults,loop  0 0

   /media/Centos6.6(2).iso   /usr/local/yum/dvd1  iso9660  defaults,loop  0 0

五、驗證是否實現開機自動掛載

  #mount -a  

六、使用createrepo命令建立軟件源目錄

  # createrepo /usr/local/yum/   ,將會在 /usr/local/yum目錄下生成repodata的子目錄。

七、調整軟件源配置文件/etc/yum.repos.d/CentOS-Media.repo

# vi /etc/yum.repos.d/CentOS-Media.repo

[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///usr/local/yum/    調整該文件,指向repodata目錄
gpgcheck=1
enabled=1                啓用該軟件源
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

[c6-epel]
name=CentOS-$releasever - Epel
baseurl=http://mirrors.sohu.com/fedora-epel/$releasever/$basearch/
enabled=1
gpgchek=1
gpgkey=http://mirrors.sohu.com/fedora-epel/RPM-GPG-KEY-EPEL-6

八、驗證該本地源生效

[root@study media]# yum repolist enabled
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id                                                             repo name                                                                   status
c6-epel                                                             CentOS-6 - Epel                                                             12,455
c6-media                                                          CentOS-6 - Media                                                            4,184
repolist: 16,639
[root@study media]# yum install mysql-libs   可正常使用本地yum源
Loaded plugins: fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
 * c6-media:
Resolving Dependencies
--> Running transaction check
---> Package mysql-libs.x86_64 0:5.1.73-3.el6_5 will be installed
--> Finished Dependency Resolution


源碼包管理及編譯安裝


程序包管理之編譯安裝:源碼:c ,c++;perl源碼 ;python源碼

應用程序: https://sourceforge.net   https://github.com   

一、源程序組成:

    項目工程:把代碼分散於多個源代碼文件

    GNU/make :項目編譯工具

    autoconf :configure 腳本

檢查編譯環境是否知足需求,並定義當前程序比哪一時啓用那個特性或功能,以及安裝路徑的定義等

結果:會根據Makefile.in 文件生成makefile文件

automake:生成Makefile.in文件

用於結合configure腳本生成Makefile.in 文件

makefile 文件是make命令的配置文件


二、編譯安裝步驟:

源代碼解壓:  #tar -xf package-version.tar.{gz|bz2|xz}

注意:展開後的目錄名一般爲package-version

切換至解壓目錄 # cd package-version

執行./configure 腳本 # ./configure

編譯 # make && make install


三、configure腳本的通用功能

指定安裝路徑 : --prefix=/path_to_somefile

配置文件路徑 : --sysdir=/path_to_somefile

指定啓用特性: --enable-feature ,例 --enable-fpm ;指定禁用特性 : --disable-feature ,例--disable-socket

指定依賴的功能、程序或文件: --with-function 啓用功能 ;--without-function 禁用功能

不一樣的程序,其configure腳本功能不一樣,獲取幫助方式 # ./configure --help


實驗:編譯安裝nginx

一、下載並解壓源碼包:

# wget http://mirrors.sohu.com/nginx/nginx-1.10.3.tar.gz

# tar -xf nginx-1.10.3.tar.gz

二、切換至解壓目錄

# cd nginx-1.10.3

三、執行./configure 腳本

# ./configure --prefix=/usr/local/nginx-1.10.3 

四、執行編譯安裝

# make && make install

五、二進制程序設置環境變量

# vi /etc/profile.d/nginx.sh

export PATH=$PATH:/usr/local/nginx-1.10.3/sbin

:wq

# source /etc/profile.d/nginx.sh   重讀環境變量

六、庫文件輸出

# vi /etc/ld.so.conf.d/nginx.conf

/usr/local/nginx-1.10.3/lib

:wq

#ldconfig       讓系統從新生成庫文件路徑緩存

七、頭文件輸出給系統

# ln -sv /usr/local/nginx-1.10.3/include /usr/include/nginx

八、配置文件

# cp /usr/local/nginx-1.10.3/conf/nginx.conf /etc/nginx.conf

九、幫助文件

# vi /etc/man.conf

MANPATH_MAP    /usr/local/nginx-1.10.3/bin  /usr/local/nginx-1.10.3/man


本章知識點彙總


程序包管理器:rpm ,deb(dpkg)

rpm - RPM Package Manager

    導入公鑰:# rpm --import

    驗證:# rpm -K | --checksig

    安裝: # rpm -ivh ,--replacepkgs  ,--nodeps

    升級: # rpm -Uvh | -Fvh --force ,--nodeps

    卸載: # rpm -e | --erase ,--nodeps

    查詢: # rpm -qa | -qc | -qd | -ql | -qi | -qf | -qpl | -q --scripts

    校驗: # rpm -V

    重建數據庫:  # rpm --rebuilddb | --initdb

yum : C/S 架構

yum repository : 文件服務器 (rpm包 + 元數據)

文件服務器格式: ftp://  ,http://  , nfs:// , file:///   

生成元數據: # createrepo 

yum client:

依賴配置文件:/etc/yum.conf  , /etc/yum.repos.d/*.repo

配置yum repo :

[repo_id]

name=

baseurl=

gpgcheck=

enabled=

gpgkey=

cost=

yum 管理命令

    安裝: # yum install | reinstall

    卸載: # yum remove | erase

    查詢升級包:# yum check-update

    升級: # yum update | upgrade

    降級: # yum downgrade

    查詢: # yum info

    列出yum repo : # yum repolist

    清除緩存: # yum clean

    重讀緩存: # yum makecache

    列出包組:#yum grouplist

    安裝包組: # yum groupinstall

    顯示包組信息: # yum groupinfo

    刪除包組: # yum groupremove

源碼包管理安裝:

    下載源碼包,解壓並切換進入該解壓目錄

    ./configure 檢查編譯環境,定義特性及功能

    make && make install  安裝

    輸出: 環境變量,頭文件 ,庫 ,配置文件及幫助文件

相關文章
相關標籤/搜索