天天看點

7、yum 學習筆記

Linux的程式包管理:

軟體包的組成部分:

二進制程式 /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin

庫 lib, /usr/lib, /lib64, /usr/lib64, /usr/local/lib, /usr/local/lib64

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

配置檔案 /etc

幫助檔案 man檔案, info檔案, README, INSTALL, ChangeLog

man COMMAND

        到某路徑下查找與指令名同名的通常以.gz結尾的壓縮檔案的名字

        /usr/share/man/

ldd指令:

檢視應用所依賴的共享庫

ldd [options] FILE...

rpm包的使用:

rpm包命名格式:

源程式:name-version.tar.{gz|bz2|xz}

version: major.minor.release

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

release:通常包含rpm的制作發行号,還包含适用的OS

bash-4.3.2-2.el6.x86_64.rpm

來源合法性驗正:

源程式:通過md5或sha1校驗碼驗正;

rpm包:發行商提供的合法性是可信的

驗正包完整性:校驗碼

驗正來源合法:公鑰

擷取rpm包的途徑:

1、發行商的CD光牒或站點伺服器

以CentOS為例: 

    http://mirrors.163.com

    http://mirrors.sohu.com

2、http://rpmfind.net

3、http://rpm.pbone.net

rpm包管理:安裝

# rpm -ivh [install-options] /path/to/rpm_package  安裝軟體包,顯示安裝進度

[install-options]

--test 僅測試,不真正執行安裝過程

--nodeps 忽略依賴關系

--replacepkgs 重新安裝

原來的配置檔案不會被覆寫,新安裝的配置檔案将會重命名為以.rpmnew為字尾的檔案

rpm包管理:解除安裝

#rpm -e [install-options] package_name 解除安裝軟體包

rpm包管理:查詢

#rpm -qa 查詢所有已經安裝的包

#rpm -q package_name 查詢某單個包是否安裝

#rpm -qi package_name 查詢包的描述資訊

#rpm -ql package_name 查詢包安裝之後在目前系統生成檔案清單

#rpm -qd package_name 查詢包安裝後生成的幫助文檔

#rpm -qc package_name 查詢包安裝後生成的配置檔案

#rpm -qf /path/to/somefile 查詢某檔案是哪個包安裝生成的

#rpm -q --scripts package_name 查詢包相關的腳本

腳本有四類:

preinstall 安裝前腳本

postinstall 安裝後腳本

preuninstall         解除安裝前腳本

postuninstall         解除安裝後腳本

查詢尚未安裝的rpm封包件的相關資訊:

#rpm -pqi /path/to/package_file 查詢包的描述資訊

#rpm -pql /path/to/package_file 查詢包安裝之後在目前系統生成檔案清單

#rpm -pqd /path/to/package_file 查詢包安裝後生成的幫助文檔

#rpm -pqc /path/to/package_file 查詢包安裝後生成的配置檔案

rpm包之更新:

#rpm -Uvh [install-options] /path/to/package_file 更新或安裝

#rpm -Fvh [install-options] /path/to/package_file 更新

--nodeps 忽略依賴關系

--force 強行安裝

rpm包管理:檢查包安裝後生成的檔案是否被修改過;

#rpm -V package_name

       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

rpm包管理:檢驗來源合法性和軟體包完整性

包完整性:通過單向加密機制(md5|sha1)

來源合法性:通過公鑰加密機制(RSA)

導入制作者的公鑰,CentOS發行版的公鑰在iso檔案中; 

導入指令:rpm --import /path/to/gpg-key-file

#pm -K --nosignature /path/to/package_file 隻檢查完整性,不檢查來源合法性         #pm -K --nodigest /path/to/package_file 不檢查完整性,隻檢查來源合法性

#pm -K /path/to/package_file 既檢查完整性,又檢查來源合法性

rpm包管理:資料庫重建

資料庫:/var/lib/rpm/

#rpm --initdb 初始化,如果事先不存在一個資料庫,則建立之;

#rpm --rebuilddb 重建,直接重建資料庫,會覆寫原有的庫;

yum用戶端:

1、配置檔案:指定各可用的yum倉庫;

2、緩存中繼資料:yum會到各可用yum倉庫擷取中繼資料,并緩存至本地; 

3、分析中繼資料:根據具體操作請求完成中繼資料分析, 可能包括檢查依賴關系、檔案清單等資訊;

4、執行具體操作:

用戶端配置檔案指定對應伺服器通路方式:

ftp   ftp://server/path/to/repo

http  http://server/path/to/repo

nfs   nfs://server/nfs_path

file  file:///path/to/repository

要使用yum管理應用程式,首先得配置其可用的yum倉庫,儲存在配置檔案中:

/etc/yum.conf

/etc/yum.repos.d/*.repo

配置檔案格式:由兩段組成,類似windows的ini配置檔案

[main] :主配置段

[repo] :倉庫配置段

配置repo:

[repo_ID]

name=String

baseurl=倉庫的通路路徑

enabled={1|0}

gpgcheck={1|0}

gpgkey=公鑰檔案(可以在本地,也可是伺服器端路徑)

cost=定義此倉庫開銷,預設為1000

[base]

name=CentOS 6.5 X86_64 relase 

baseurl=http://172.16.0.1/cobbler/ks_mirror/centos-6.5-x86_64/

enabled=1

gpgcheck=1

gpgkey=http://172.16.0.1/cobbler/ks_mirror/centos-6.5-x86_64/RPM-GPG-KEY-CentOS-6

yum的各指令:

# yum repolist 列出所有可用yum repo

# yum clean all 清理緩存

# yum list [all|installed|available]         列出[所有的安裝包|已安裝包|可安裝包]

# yum info package_name 列出包的描述資訊

# yum whatprovides|provides /path/to/somefile 查詢某檔案是由哪個包安裝生成的 

# yum install package_name 安裝指定的程式包

# yum reinstall package_name 重新安裝指定的程式包

# yum erase package_name  解除安裝指定的程式包

# yum check-update 檢查可更新的包

# yum update package_name 更新指定的程式包

# yum downgrade package_name 降級指定的程式包

# yum grouplist 列出所有包組

# yum groupinfo "group_name" 顯示包組資訊

# yum groupinstall "group_name" 安裝指定的包組

# yum groupremove "group_name" 解除安裝指定的包組

如果系統為CentOS 5,常用的開發包組為“Development Tools”和“Development Libraries”

如果系統為CentOS 6,常用的開發包組為“Development Tools”和“Server Platform Development”

安裝本地包:

# yum install /path/to/package_file

手動禁止檢查來源及完整性:--nogpgcheck

# yum --nogpgcheck install /tmp/zsh-2.3.1-2.el6.x86_64.rpm 

練習:安裝相關的包組,確定如下指令可執行

# gcc --version

gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4)

Copyright (C) 2010 Free Software Foundation, Inc.

This is free software; see the source for copying conditions.  There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

#yum -y groupinstall "Development tools" "Server Platform Development"

yum repository: 檔案伺服器

repodata/:

repomd.xml: 

測試實作yum repository的配置:

1、準備檔案伺服器;使用httpd為例,請事先確定已經安裝httpd程式包;

2、在/var/www/html目錄,使用一個目錄來儲存準備制作成為yum倉庫的所有rpm包;

  # cd /var/www/html

# lftp 172.16.0.1/pub/Sources/6.x86_64

# lftp: > mirror openstack

# bye

3、建立yum倉庫

# rm -rf /var/www/html/openstack/repodata

# createrepo /var/www/html/openstack

4、啟動httpd服務

# service httpd start

5、配置使用自建的yum倉庫

[openstack]

name=Openstack Repository

baseurl=http://172.16.100.7/openstack/

gpgcheck=0

6、配置好epel的yum源

7、測試使用

# yum install openstack-keystone

程式包管理之編譯安裝:

源程式:

項目工程:把代碼分散于多個源代碼檔案

GNU/make

autoconf: configure腳本 

檢查編譯環境是否編譯需求,并定義目前程式編譯時啟用哪個特性或功能,以及安裝路徑的定義等等;

結果:會根據Makefile.in檔案生成makefile檔案

automake: Makefile.in檔案

用于結合configure腳本生成makefile檔案

makefile檔案是make指令的配置檔案

編譯安裝的步驟:

1、拿到源代碼,并解壓:

# tar xf package-version.tar.{gz|bz2|xz}

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

2、切換至源碼目錄中

# cd package-version

3、執行configure腳本

# ./configure

4、編譯

# make

5、安裝

# make install

configure腳本的通用功能:

我們需要定義的配置:

1、指定安裝路徑:

--prefix=/usr/local/package_name

--sysconfdir=/etc/package_name

2、指定啟用/禁用的特性:

--enable-feature: 例如--enable-fpm

--disable-feature: 例如 --disable-socket

3、指定所依賴功能、程式或檔案

--with-function:啟用某功能

--without-function:禁用某功能

不同的程式,其configure腳本功能不同,要擷取幫助:

./configure --help

練習:

1、編譯安裝nginx, 并啟動之;

2、編譯安裝axel,并試用之;

3、編譯安裝httpd,并啟動之;

/usr/local/apache/bin

二進制程式:

# vim /etc/profile.d/apache.sh

PATH=/usr/local/apache/bin:/usr/local/apache/sbin:$PATH

export PATH

頭檔案輸出給系統:

# ln -sv /usr/local/apache/include /usr/include/httpd

庫檔案輸出:

# vim /etc/ld.so.conf.d/httpd.conf

/usr/local/apache/lib

讓系統重新生成庫檔案路徑緩存

# ldconfig

導出man檔案:

# vim /etc/man.config

MANPATH /usr/local/apache/man

      本文轉自開源殿堂 51CTO部落格,原文連結:http://blog.51cto.com/kaiyuandiantang/1942716,如需轉載請自行聯系原作者