1. 程式人生 > >Linux學習命令匯總七——軟件包管理(rpm包 、yum repo、源碼包管理及相關命令)

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

rpm yum yum repo配置 源碼包編譯安裝 createrepo

本章Blog相關Linux知識點


程序:預編譯,編譯(源代碼——>cpu指令),匯編,連接

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

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

庫:可執行的程序,本身不能作為程序執行入口,但可以被調用;編譯好的二進制格式

頭文件(/usr/include):

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

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

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

兩臺操作系統相同的平臺,在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包管理:

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

導入公鑰:

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

2、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包
3、rpm包卸載

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

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

4、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

5、rpm包升級

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

--nodeps :忽略依賴關系

--force :強制安裝

6、校驗安裝後的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
7、rpm包數據庫初始化及重建

# rpm {--initdb|--rebuilddb}

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

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

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


yum repo管理及相關命令


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

1、依賴關系

yum自動解決依賴關系

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

repository:倉庫

  • 需要的各rpm包

  • 依賴關系、程序包安裝後所能夠生成的列表等元數據文件

3、yum客戶端

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

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

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

  • 執行具體操作

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

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

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

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

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

5、配置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

6、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 有圖形程序時,需安裝此組

安裝本地包:

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

7、yum repository:文件

# yum install createrepo -y 創建createrepo

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

    Dependencies Resolved

    ======================================================================================================================================================
    Package Arch Version Repository Size
    ======================================================================================================================================================
    Installing:
    mysql-libs x86_64 5.1.73-3.el6_5 c6-media 1.2 M

    Transaction Summary


源碼包管理及編譯安裝


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

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

1、源程序組成:

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

GNU/make :項目編譯工具

autoconf :configure 腳本

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

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

automake:生成Makefile.in文件

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

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

2、編譯安裝步驟:

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

    註意:展開後的目錄名通常為package-version

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

  • 執行./configure 腳本 # ./configure

  • 編譯 # make && make install

3、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

  1. 下載並解壓源碼包:

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

    # tar -xf nginx-1.10.3.tar.gz

  2. 切換至解壓目錄

    # cd nginx-1.10.3

  3. 執行./configure 腳本

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

  4. 執行編譯安裝

    # make && make install

  5. 二進制程序設置環境變量

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

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

    :wq

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

  6. 庫文件輸出

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

    /usr/local/nginx-1.10.3/lib

    :wq

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

  7. 頭文件輸出給系統

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

  8. 配置文件

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

  9. 幫助文件

    # 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 安裝

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

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