在CentOS或rhel下,軟件包的管理方式有三種:
一種是使用rpm安裝別人編譯好的軟件包,一種是使用yum,還有一種是使用編譯安裝
1、軟件包簡介
軟件包的組成部分:
二進制程序:/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin,/usr/local/sbin
庫文件:/lib,/usr/lib,/usr/local/lib
配置文件:/etc
幫助文件:手冊(/etc/man.config),README,INSTALL(/usr/share/doc/)
軟件包管理工具:rmp,dpt
文件清單
文件放置、安裝路徑
提供的功能說明
依賴關係
安裝程序的方式:
通用二進制格式:直接展開就能使用
軟件包管理器
軟件包管理器的前端工具
源代碼編譯
rmp:打包、安裝、查詢、升級、校驗、卸載、數據庫管理(重建)
編譯安裝:源代碼
編譯器:gcc,g++
提供編譯環境:開發環境
二進制
庫:/etc/ld.so.conf,/etc/ld.so.conf.d/*.conf
幫助手冊:/etc/man.config,man -M
文件:/usr/include
源程序的命名:name-version.tar.{gz|bz2|xz}包名-版本號
版本號version:major.minor.release主版本號.次版本號.發行號(修正號)
主版本號通常用於標識重大分支,通常而言,一個程序只有做出重大改變,主版本號纔會發生改變次版本號只是部分功能發生改變發行號的目的主要是修復一些bug,調整一些工作屬性
bash-4.3.1.tar.xz
rpm包命名:name-version-release.arch.rpm包名-版本號-發行號
發行號release:是這個rpm包的軟件包自身的release號,跟程序沒有關係; 是用在標識rpm包的製作者第幾次製作或第幾次修正rpm包的release號; 用於標識rpm包本身的發行號,可還包含所使用的操作系統:el6:rhel6;centos6;el5;suse11
arch:主機平臺
i686、x86_64、amd64、ppc、noarch
bash-4.3.2-5.el6.x86_64.rpm
rpm分包:
主包:核心包
分包:支包
bind
bind-devel
bind-chroot
OS:安裝程序
RedHat系列官方公鑰:
/etc/pki/rpm-gpg/
RPM-GPG-KEY-CentOS-6
2、使用rmp安裝軟件包
2.1、rpm選項
rpm -i /PATH/TO/RPM_FILE
-i:安裝軟件
-v,-vv,-vvv:顯示詳細信息
-h:以#顯示安裝進度,一個#表示%2的進度
-ivh
-V 包名:校驗已安裝的軟件包
-K(或--checksig):驗證合法性
rpm -K zsh-4.3.10-7.el6.x86_64.rpm
--nodeps:忽略依賴關係
--test:測試安裝
--replacepkgs:重新安裝
-e 包名:卸載
-q|--query 包名:查詢
rpm -q zsh
-qa:查詢所有已經安裝包
rpm -qa | grep "pattern"
-qi 包名:查詢包的摘要信息
-ql 包名:查詢包安裝生成的文件清單
-qc 包名:查詢包安裝生成的配置文件
-qd 包名:查詢包安裝生成的幫助文檔
-qf /path/to/some_file:查詢某文件是由哪個rpm安裝生成的
-q --scripts 包名:查詢包安裝運行相關的腳本
preinstall:安裝前腳本
postinstall:安裝後腳本
preuninstall:卸載前腳本
postuninstall:卸載後腳本
-qpi /path/to/rpm_file:查詢尚未安裝的包的相關信息
-qpi
-qpl
-qpc
-qpd
-qp --scripts
-U:升級+安裝
-F:升級
-Uvh
-Fvh
--force:強行升級
注意:內核不應該升級,應該儘可能安裝,它允許多版本並存
rpm包的數據庫:
/var/lib/rpm
重建rpm包數據庫:
--initdb:新建(不會覆蓋原來的文件)
--rebuilddb:重建(會覆蓋原來的文件)
2.2、rpm安裝示例
rpm -ivh package_name.rpm
如:本地安裝(要有軟件包對可以)
# rpm -ivh tree-1.6.0-10.el7.x86_64.rpm
也可從網絡安裝
rpm -ivh http://mirrors.aliyun.com/centos/6.6/os/x86_64/Packages/tree-1.5.32.el6.x86_64.rpm
缺點不能自己解決軟件包依賴關係
3、使用yum安裝軟件包
3.1、yum簡介
源碼格式的rpm包:
打包:rpm的包製作過程是根據spec文件來完成的
rpmbuild
yum:RPM前端工具
要想使用好yum,要先配置好yum倉庫和
yum repository yum倉庫
ftb,http,file
路徑:存放了rpm包
createrepo:
.repo
客戶端:
yum install|reinstall|remove
/etc/yum.conf
/etc/yum.repos.d/*.repo
section:
[main] []用做倉庫定義
[repository_ID]
name=
baseurl=
enableed={1|0}
gpgcheck={1|0}
gpgkey=
gpg:檢查rpm簽名
[base]
name=CentOS 6.4 x86_64
baseurl=http://192.168.1.20/cobbler/ks_mirror/centos-6.4-x86_64/
enabled=1
gpgcheck=1
yum客戶端:
yum SUBCOMMAND:
list {all|installed|available}
repolist [all|enabled|disabled]
info 包名:查看包的摘要信息
yum info zsh
grouplist:查看當前yum源內有多少包組
groupinfo 包組名:查看包組的相關安裝包
yum groupinfo "Development tools"
clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
makecache:創建手動生成緩存
yum install package_name安裝包
-y:自動回答爲yes
reinstall package_name重新安裝包
update 包名升級
update-to 包名 版本號
remove 包名卸載
provides whatprovides查詢某文件是由哪個rpm安裝生成的
groupinstall組安裝
開發組:
RHEL6:"Development tools"、"Server Platform Development"、"Desktop Platform Development"
RHEL5:"Development tools"、"Development Libraries"
groupupdate升級
groupremove移除
localinstall命令:RHEL5用於本地安裝rpm包,而不是通過yum源來安裝rpm包
HEL6既可以用於本地安裝,也可以用於yum源安裝
--nogpgcheck:避免檢查來源軟件包的合法性
history:查看此前安裝卸載等操作歷史
version
yum倉庫的創建:
lftp:
get:單文件下載
mget:多文件下載
mirror:鏡像一個目錄到本地
bye:退出
cd:切換
pwd:查看當前在什麼位置
3.2、安裝示例
配置網絡yum源
cd /etc/yum.repos.d/ mv CentOS-Base.repo CentOS-Base.repo.bak #防止base.repo中[base]衝突 vim base.repo [base] name=base baseurl=http://mirrors.sohu.com/centos/6.6/os/x86_64/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
配置iso光盤yum源
# mkdir /mnt/cdrom # vim /etc/fstab /root/CentOS-6.6-x86_64-bin-DVD1.iso /mnt/cdrom iso9660 loop 0 0 # # mount -t iso9660 -o loop /root/CentOS-6.6-x86_64-bin-DVD1.iso /mnt/cdrom
# vim base.repo [base] name=base baseurl=http://mirrors.sohu.com/centos/6.6/os/x86_64/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 cost=1000 [cdrom] name=cdrom baseurl=file:///mnt/cdrom gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 cost=100 # yum clean all #清緩存 # yum makecache #建緩存
安裝
# yum grouplist # yum groupinstall "Development tools" # yum install 軟件包
4、使用編譯安裝軟件包
autoconf --> configure腳本 + Makefile.in = makefile
automake --> Makefile.in
make install
編譯安裝步驟:
# cd SOURCE_CODE
# ./configure
檢查編譯環境是否完備
讓用戶定製編譯配置(通過腳本選項來完成)
--help
--prefix=/usr/local/apache指定默認安裝路徑
--sysconfdir指定配置文件的存放位置
# make
# make install
庫文件搜索路徑:/etc/ld.so.conf,/etc/ld.so.conf.d/*.conf
/usr/local/apache/lib
# ldconfig -v:重新搜多當前系統上所有庫文件所搜路徑下的庫文件,並生成緩存/etc/ld.so.cache
/usr/local/apache/conf
/etc/man.config,
MANPATH /usr/local/apache/share/man
頭文件:
ln -s
# tar -xvf axel-2.4.tar.gz # cd axel-2.4 # ./configure --prefix=/usr/local/axel # make # make install #安裝 # echo 'PATH=/usr/local/axel/bin:$PATH' > /etc/profile.d/axel.sh #axel執行路徑 # . /etc/profile #使配置文件生效 # vim /etc/man.config # MANPATH /usr/local/axel/share/man #添加axel的man查找命令