系統管理之程序包管理(二)yum詳解:
上節向大家介紹了程序包管理的理論和rpm命令的使用,本篇文章接著向大家介紹rpm的前端使用工具,方便大家更快捷的管理,使用rpm包,提高工作效率。
一 概論:
Centos:yum,dnf 兩個rpm前端工具
YUM :yellow dog, Yellowdog,Update Modifier
rpm的前端工具,用于解決軟件包相關依賴性,可以在多個庫之間定位軟件包
采取cs架構 從文件服務器加載rpm包,安裝程序到本地主機
yum repository:yum repo 存儲了眾多rpm包,以及包的相關的元數據文件(放置于特定目錄下:repadata)
文件服務器:
ftp:// URL:ftp://10.1.0.1/pub/
http://
nfs://
yum配置文件:
/etc/yum.conf:為所有倉庫提供公共配置
/etc/yum.repos.d/*.repo 為倉庫的指向提供配置
倉庫的定義:
[repositoryID]
name=Some name for this repository 倉庫名稱
baseurl=ur1://path/to/repository/ 指明rpm包的文件服務器
enabled={1|0} 啟動此倉庫
pgpchecck={1|0} 此倉庫的所有rpm包在安裝前是否支持來源合法性和完整性驗證
gpgkey=URL 指明密鑰文件,通過URL把密鑰文件通過服務器共享
enablesgroups={1|0} 是否支持此倉庫批量管理包組 默認支持,不寫也OK
failovermethod={roundrobin|priority} 故障轉移方法 ,倉庫在特殊情況下的使用順序
默認為:roundrobin 輪訓,意為隨機挑選;
priority 憑位置的上下優先級決定
cost=默認為1000
二.yum使用:
yum命令的用法 (引用于yum的官方幫助文檔):
yum [options] [command] [package …]
command is one of:
* install package1 [package2] […]
* update [package1] [package2] […]
* update-to [package1] [package2] […]
* update-minimal [package1] [package2] […]
* check-update
* upgrade [package1] [package2] […]
* upgrade-to [package1] [package2] […]
* distribution-synchronization [package1] [package2] […]
* remove | erase package1 [package2] […]
* autoremove [package1] […]
* list […]
* info […]
* provides | whatprovides feature1 [feature2] […]
* clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
* makecache [fast]
* groups […]
* search string1 [string2] […]
* shell [filename]
* resolvedep dep1 [dep2] […]
(maintained for legacy reasons only – use repoquery or yum provides)
* localinstall rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use install)
* localupdate rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use update)
* reinstall package1 [package2] […]
* downgrade package1 [package2] […]
* deplist package1 [package2] […]
* repolist [all|enabled|disabled]
* repoinfo [all|enabled|disabled]
* repository-packages <enabled-repoid> <install|remove|remove-or-rei
stall|remove-or-distribution-synchronization> [package2] […]
* version [all|installed| available | group-* |nogroups* |grouplist| groupinfo ]
*history [info|list|redo|undo|rollback|new|sync|stats]
* load-transaction [txfile]
info|redo|undo|rollback|new|sync|stats]
* load-transaction [txfile]
* updateinfo [summary | list | info | remove-pkgs-ts | exclude-updates |
exclude-all | check-running-kernel]
* fssnapshot [summary | list | have-space | create | delete]
* fs [filters | refilter | refilter-cleanup | du]
* check
* help [command]
顯示倉庫列表:
repolist [all|enabled|disabled]
顯示程序包:
list
#yum list [all|glob_exp1] [glob_exp2]..
#yum list {available|installed|updatese} [glob_exp1]
安裝程序包
install package1[package2] …
reinstall 覆蓋重新安裝
升級程序包
update [package1] [package2] ..
downgrade [package1] [package2] .. 降級
檢查可用升級
chack-update
卸載程序包:
rmore | erase package1 [package2]..
查看程序包 information
info […]
查看程序提供特性:(可以查看是有那個程序包所提供)
provides | whatprovides feature1 [feature2] […]
清理本地緩存:
clean [ package | metadata | expire-cache| rpmddb| plugins|all]
構建緩存
makecache
搜索:
search string1 [string2][..]
以指定的關鍵字搜索程序包名及summary信息
查看指定包所依賴的capabilities
deplist package1 [package] [..]
查看yum事務歷史
yum history [info|list|packages-list|pac|redo|undo|rollback|new|sync|stats]
安裝及升級本地程序包 (5系系統用localinstall)
* localinstall rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use install)
* localupdate rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use update)
包組管理的相關命令
groupinstall group1 [group2] …安裝包組
groupuodate group1 [group2] … 升級包組
grouplist [hidden] [groupwildcard] […] 顯示包組列表
groupremove group1 [group2] … 卸載包組
groupinfo group1 [group2] … 顯示包組的詳細信息及包的組成信息
實戰:創建本地yum源
1.掛載光盤
(1).虛擬機的設置里選CD-ROM中的已連接
(2).命令:
[root@wen-7 ~]# mount -r -t iso9660 /dev/cdrom /media mount: /dev/sr0 寫保護,將以只讀方式掛載
2.配置yum
[root@wen-7 ~]# cd /etc/yum.repos.d/ 會看到系統默認的一些以Centos開頭文件,是網絡yum源,暫不使用,可以創建一個文件,mv移動到文件里以后使用 [root@wen-7 yum.repos.d]# ls 1 yum.repo [root@wen-7 yum.repos.d]# cat yum.repo 創建一個以repo為后綴的文本,配置如下: [centos7] name=centos 7 is yum gpgcheck=0 enabled=1 baseurl=file:///media [root@wen-7 yum.repos.d]# yum repolist #檢查yum是否配置成功,結果如下,表示已加載成功軟件包,可正常使用yum了 已加載插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile 源標識 源名稱 狀態 yum yum 9,007 repolist: 9,007 [root@wen-7 http]# yum makecache ##建立緩存 已加載插件:fastestmirror, langpacks yum | 3.6 kB 00:00:00 yum/other_db | 2.3 MB 00:00:00 Loading mirror speeds from cached hostfile 元數據緩存已建立 [root@wen-7 http]# yum install zsh -y #安裝軟件 已加載插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile
yum的命令行選項
–nogpgcheck:禁止進行pgpcheck 阻止驗證來源合法性和完整性
-y: 指定回答yes 避免用戶交互
-q:靜默模式
–enablerepo=repoidglob:臨時啟用此處指定的repo。
–disablerepo=repoidglob:臨時禁用此處指定的repo。
–noplugins:禁用所有插件
yum的倉庫配置文件中可用的變量:
判斷獲取當前系統的版本號 ,方便yum 自己找尋符合自己主機的yum倉庫地址
$releaserver:當前OS的發行版的主版本號;
$rach:平臺
$basearch:基礎平臺
$YUM0-$YUM9
例: 指定倉庫文件 baseurl參數
http://mirrors.magedu.com/centos/$centos-7/i386/os
http://mirrors.magedu.com/centos/$$releaserver/$basearch/os
三、程序包編譯安裝
testappp-VERSION-release.src.rpm–>安裝后,使用rpmbuild命令制作成二進制格式包的rpm包,而后在安裝;
源代碼–>預處理———>編譯(gcc)–>匯編–>鏈接–>執行
源代碼組織格式:
多文件:文件中的代碼之間,很可能存在跨文件依賴關系;
C/C++: make (configure –>Makefile.in–>makefile)
java:maven
編譯安裝三步驟:
(1)./configure:
(1)通過選項傳遞參數,指定啟用特性,安裝路徑登;執行時會參考用戶的指定以及Makefile.in文件生成Makefile
(2)檢查依賴到的外部環境; 不存在外部環境,會報警,提示安裝所需的外部環境。configure執行失敗,make將無法進行;
(2)make (項目管理工具,依賴于Makefile)
根據makefile文件,構建應用程序;相仿與instal命令,把程序的相應的文件復制到工作目錄中
(3)make install
相仿與instal命令,把程序的相應的文件復制到相應的工作目錄中(二進制文件,庫文件,配置文件,幫助文檔)
開發工具:
autoconf:生成configure腳本 需要結合一個能夠介紹程序特性的腳本,了解程序的相關信息,才能生成configure腳本
automake:生成Makefile.in文
建議:安裝前查看INSTALL,README文件,查看安裝事項
開源程序源代碼的獲?。?/span>
官方自建站點:
apache.org(ASF)
mariadb.org
….
代碼托管站點:
SourceForge
Github.com
code.google.com
…
編譯c源代碼:
C/C++: gcc(GNU C Complier)編譯器
前提:提供開發工具記憶開發環境
開發工具:make,gcc等
開發環境:開發庫,頭文件
glibc:標準庫
通過“包組”提供開發組件
Centos 6:“Development Tools”,“Server Platdorm Development”
過程:
(1)configure腳本
選項:指定安裝位置,指定啟用的特性等等
–help:獲取其支持使用的選項
選項分類:
安裝路徑設定
–prefix=/PATH/TO/SOMEWHERE:指定默認安裝位置,默認為/usr/local;
–sysconfdir=/PATH/TO/SOMEWHERE/:配置文件存放位置
system types(系統設定):
Optional Packages(可選依賴包):
–with-PACKAGE[=ARG]
–without-PACKAGE
Optional Features(可選特性):
–disable-FEATURE
–enable-FEATURE[=ARG]
環境變量:
(2)make
調用命令,編譯安裝
(3)make install
移動,粘貼程序文件
(4)安裝后的配置
(1)導出二進制程序目錄至PATH環境變量中
編輯文件:/etc/profile.d/NAME.sh
export PATH=PATH/TO/BIN:$PATH
(2)導出庫文件路徑:
編輯/etc/ld.so.conf/NAMe.conf
添加新反庫文件所在目錄至此文件中;
讓系統重新生成緩存:
idconfig [-v]
(3)導出頭文件
基于連接的方式實現 (/usr/bin /usr/sbin)
ln -sv
(4)導出幫助手冊
編輯/etc/man.config文件中
添加一個MANPATH
實戰:(實戰演練均在centos7.2操作系統上操作)
1.yum的配置和使用,包括yum reoisitory的創建
(1).準備rpm包到文件夾內
[root@wen-7 yum]# cp tree-1.6.0-10.el7.x86_64.rpm /tmp
(2).createrepo ./ 進入文件夾內 執行命令createrepo命令,創建倉庫函數
[root@wen-7 yum]# createrepo ./ Spawning worker 0 with 546 pkgs Workers Finished Saving Primary metadata Saving file lists metadata Saving other metadata Generating sqlite DBs Sqlite DBs complete
(3).檢查倉庫函數
[root@wen-7 yum]# cd repodata/ [root@wen-7 repodata]# ls 189860660bf3eff6826715ecec3750a6d116d9b034703a71fed5661b2d5ac719-primary.xml.gz 2a3690fa47f57597494eb52bed1c8baafe8418467b5af2d82b79505c1dd8f124-filelists.sqlite.bz2 328759bb1bb75627712b4ba99b4234c26aefcb71bc9c71a78b08092c106ea303-primary.sqlite.bz2 581f2e2e2025c833919ea42523ecad4dbb6d83c162c9c85c260965fed41a0532-other.xml.gz a83ecbd110af8a84c6587b04de826154a514dac462f21b59fa1eee1b1baaa950-other.sqlite.bz2 c24ada093144b72ec25f3f5876f199a15baaa27bdd8741b78a8b82ef90a1b0f1-filelists.xml.gz
(4).編寫倉庫文件
[root@wen-7 repodata]# vim /etc/yum.repos.d/yum.rep [centos7] name=centos7.yum pgpcheck=0 baseurl=file:///root/yum/
(5).清除yum緩存
yum makecache
(6).查看yum包列表
[root@wen-7 repodata]# yum repolist 已加載插件:fastestmirror, langpack centos7/primary_db | 263 kB 00:00:00 Loading mirror speeds from cached hostfile 源標識 源名稱 狀態 centos7(以顯示可以使用,后面有546個包) centos7.yum 546 yum yum 9,007 repolist: 9,553
到此,自已制作rpm倉庫以完成
2.編譯安裝apache 2.2,啟動此服務
1.復制安裝包到目錄,并解壓到指定目錄
[root@wen-7 ~]# cp httpd-2.2.9.tar.gz /tmp [root@wen-7 ~]# tar xvf httpd-2.2.9.tar.gz
2.進去解壓目錄
[root@wen-7 ~]# cd /tmp/ [root@wen-7 tmp]# ls httpd-2.2.9 httpd-2.2.9.tar.gz [root@wen-7 tmp]# cd httpd-2.2.9/
3.執行configure腳本,檢查當前編譯環境,并指定安裝選項
[root@wen-7 httpd-2.2.9]# ./configure -prefix=/usr/local/http [root@wen-7 httpd-2.2.9]# echo $? ##查看命令狀態返回值,確認命令執行成功 0
4.執行安裝命令,并執行生成程序文件命令
[root@wen-7 httpd-2.2.9]# make && make install [root@wen-7 httpd-2.2.9]# echo $? ##查看命令狀態返回值,確認命令執行成功 0
5.導出二進制程序目錄至PATH環境變量中
[root@wen-7 httpd-2.2.9]# cat /etc/profile.d/http PATH=$PATH:/usr/local/http/bin
6.導出程序頭文件
[root@wen-7 httpd-2.2.9]# ln -sv /usr/local/http/bin/apachectl /usr/sbin/apache 軟連接到/usr/sbin "/usr/sbin/apache" -> "/usr/local/http/bin/apachectl"
7.導出庫文件
[root@wen-7 httpd-2.2.9]# cat /etc/ld.so.conf 編寫文件 include ld.so.conf.d/* include /usr/local/http/bin/* [root@wen-7 httpd-2.2.9]# ldconfig -v ##系統重新生成緩存
8.導出man幫助文檔
[root@wen-7 httpd-2.2.9]# vim /etc/man_db.conf vim ##編寫文件,寫下面代碼 [root@wen-7 httpd-2.2.9]# ldconfig -v
9.啟動或關閉apache
[root@wen-7 ~]# apache stop httpd: apr_sockaddr_info_get() failed for wen-7.2 httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName [root@wen-7 ~]# apache start httpd: apr_sockaddr_info_get() failed for wen-7.2 httpd: Could not reliably determine the server's fully qual
10檢查apache端口
[root@wen-7 ~]# netstat -tan| grep 80 tcp6 0 0 :::80 :::* LISTEN
11.瀏覽器訪問(配置成功)
注意:如果訪問不成功,請查看防火墻是否開啟
原創文章,作者:wencx,如若轉載,請注明出處:http://www.www58058.com/39329
文章整體架構清晰,層次明了,內容上較為完整,如果嫩南瓜對一些工具的背景知識和實驗過程中遇到的錯誤進行總結會讓文章更專業,更具有可讀性哦。