程序包管理之yum
yum概念
什么是yum
由yellow dog這一發行版的開發者Terra Soft研發。
使用rpm命令安裝軟件包時,解決不了依賴關系,就會很麻煩,使用yum可以自行解決依賴關系。
刪除某個安裝包,如果是用rpm刪除,就卸載掉某個依賴關系從而導致其他軟件包不能使用。
yum特點
可同時配置多個軟件倉庫 簡潔的配置文件/etc/yum.conf 自動解決安裝或者刪除RPM軟件包時遇到的依賴性問題 使用方便 保持與RPM數據庫的一致性
yum repository:yum repo
存儲了眾多rpm包,以及包的相關的元數據文件(放置于特定目錄下:repodata)
yum支持的常見服務器格式
ftp:// http:// nfs:// file:///
yun緩存
數據:程序包 元數據:repodata(請求的安裝包及依賴包的名稱、大小、版本、依賴關系等屬性)
執行流程為:第一次訪問倉庫時請求倉庫服務器的元數據并下載到本地緩存目錄中,然后檢索下載安裝包及其相關依賴包并進行安裝,安裝完成后最后再刪除緩存目錄中的這些安裝包,保留元數據。之后再次下載安裝包會先去倉庫服務器查詢元數據的校驗碼,并和本地元數據校驗碼進行比較,如果校驗碼相同,則直接忽略;如果不同就重新下載元數據并對本地緩存目錄中的元數據進行覆蓋,從而完成緩存有效性驗證。
/etc/yum.conf文件詳解
/etc/yum.conf文件是yum主配置文件 yum配置兩種方式 一種是直接配置在/etc/yum.conf 為所有倉庫提供公共配置 一種是在/etc/yum.repos.d目錄下增加repo文件 為倉庫的指向提供配置
/etc/yum.repos.d/*.repo文件詳解
先看一看/etc/yum.repos.d目錄下有哪些軟件倉庫配置文件
倉庫指向的定義: [repositoryID] name=Some name for this repository baseurl=url://path/to/repository/ enabled={1|0} 表示軟件包中定義的源是否啟用 gpgcheck={1|0} gpgkey=URL 定義用于校驗的GPG 密鑰 enablegroups={1|0} failovermethod={roundrobin|priority} 默認為:roundrobin,意為隨機挑選; cost= 默認為1000
yum用法
yum [options] [command] [package ...] command is one of: * install package1 [package2] [...] * update [package1] [package2] [...] * update-to [package1] [package2] [...] * check-update * upgrade [package1] [package2] [...] * upgrade-to [package1] [package2] [...] * distribution-synchronization [package1] [package2] [...] * remove | erase package1 [package2] [...] * list [...] * info [...] * provides | whatprovides feature1 [feature2] [...] * clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] * makecache * groupinstall group1 [group2] [...] * groupupdate group1 [group2] [...] * grouplist [hidden] [groupwildcard] [...] * groupremove group1 [group2] [...] * groupinfo group1 [...] * search string1 [string2] [...] * shell [filename] * resolvedep dep1 [dep2] [...] * 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] * version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ] * history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats] * check * help [command] 顯示倉庫列表: repolist [all|enabled|disabled] 顯示程序包: list # yum list [all | glob_exp1] [glob_exp2] [...] # yum list {available|installed|updates} [glob_exp1] [...] 安裝程序包: install package1 [package2] [...] reinstall package1 [package2] [...] (重新安裝) 升級程序包: update [package1] [package2] [...] downgrade package1 [package2] [...] (降級) 檢查可用升級: check-update 卸載程序包: remove | erase package1 [package2] [...] 查看程序包information: info [...] 查看指定的特性(可以是某文件)是由哪個程序包所提供: provides | whatprovides feature1 [feature2] [...] 清理本地緩存: clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] 構建緩存: makecache 搜索: search string1 [string2] [...] 以指定的關鍵字搜索程序包名及summary信息; 查看指定包所依賴的capabilities: deplist package1 [package2] [...] 查看yum事務歷史: history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats] 安裝及升級本地程序包: * localinstall rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use install) * localupdate rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use update) 包組管理的相關命令: * groupinstall group1 [group2] [...] * groupupdate group1 [group2] [...] * grouplist [hidden] [groupwildcard] [...] * groupremove group1 [group2] [...] * groupinfo group1 [...]
如何使用光盤當作本地yum倉庫:
(1) 掛載光盤至某目錄,例如/media/cdrom # mount -r -t iso9660 /dev/cdrom /media/cdrom (2) 創建配置文件 [CentOS7] name= baseurl= gpgcheck= 要gpgcheck,就必須要導入key enabled=
另外配置文件可以用變量替代,變量會自動替換,使一個變量可以多場景使用
yum的repo配置文件中可用的變量: $releasever: 當前OS的發行版的主版本號; $arch: 平臺; i386等 $basearch:基礎平臺; $YUM0-$YUM9 自定義 http://mirrors.magedu.com/centos/$releasever/$basearch/os
如何創建yum倉庫
yum的命令行選項: --nogpgcheck:禁止進行gpg check; -y: 自動回答為“yes”; -q:靜默模式; --disablerepo=repoidglob:臨時禁用此處指定的repo; --enablerepo=repoidglob:臨時啟用此處指定的repo; --noplugins:禁用所有插件; yum的repo配置文件中可用的變量: $releasever: 當前OS的發行版的主版本號; $arch: 平臺; $basearch:基礎平臺; $YUM0-$YUM9 創建yum倉庫: createrepo [options] <directory>
程序包編譯安裝:
程序包編譯安裝:
別人編好的rpm包不適用所有版本,所以要自己編譯,如下面的src格式的包,都需要先用rpmbuild命令封裝。 testapp-VERSION-release.src.rpm –> 安裝后,使用rpmbuild命令制作成二進制格式的rpm包,而后再安裝;
源代碼的組織格式是多文件的,多文件中的代碼之間,很可能存在跨文件依賴關系,要解決這種依賴關系,則使用專門的項目管理工具。如下:make,就為項目組織打包管理工具。
源代碼 --> 預處理 --> 編譯(gcc) (編譯器)--> 匯編(匯編器) --> 鏈接(鏈接器)--> 執行這個過程很復雜,所以要是有了項目管理器,就可以自動完成上述過程。
make真的那么強大嘛,是因為make與每個源代碼都有配置文件,即為makefile。makefile也不是寫死的,makefile由Makefile.in生成,Makefile.in根據用戶需求生成。configure腳本可以幫助用戶配置這些編譯的配置。
那么問題來了,./configure文件、Makefile.in文件以及makefile文件從哪里來?有的自帶,有的要生成。用開發工具生成 。 autoconf:生成configure腳本 automake:生成Makefile.in文件
建議:安裝前查看INSTALL,README
開源程序源代碼獲取
官方自建站點: apache.org (ASF) mariadb.org ... 代碼托管: SourceForge Github.com code.google.com
編譯安裝的過程如下
1.運行configure腳本
(1)讓用戶通過選項傳遞參數,指定啟用特性、安裝路徑等,執行時會參考用戶的指定以及Makefile.in生成makefile。 (2)檢查各指定特性所依賴的外部環境,沒有依賴關系,configure會報錯。
configure腳本的應用: –prefix:指定默認安裝路徑 –sysconfdir:指定配置文件安裝路徑 –with-CAPABLILITY:依賴的程序包 –without-CAPABILITY:不依賴的程序包 –enable-FEATURE:啟用某個特性 –disable:禁用某個特性 2.運行make命令,完成項目構建 根據makefile文件,構建應用程序。 3.運行makeinstall命令,完成安裝
示例演示,以apache進行演示
安裝后的配置:
(1) 導出二進制程序目錄至PATH環境變量中; 編輯文件/etc/profile.d/NAME.sh export PATH=/PATH/TO/BIN:$PATH (2) 導出庫文件路徑 編輯/etc/ld.so.conf.d/NAME.conf 添加新的庫文件所在目錄至此文件中; 讓系統重新生成緩存: ldconfig [-v] (3) 導出頭文件 基于鏈接的方式實現: ln -sv (4) 導出幫助手冊 編輯/etc/man.config文件 添加一個MANPATH
實例
-
yum grouplist。查看是否安裝好所需要的包組。CentOS 6: "Development Tools", "Server Platform Development",Centos7就只有開發工具
2.gcc –version。檢查是否有gcc。
3.下載http相關軟件包,由于筆者安裝到后面發現少安裝了3個文件,顧在此一并下載安裝。 具體情況如下:
wget http://mirrors.aliyun.com/apache/httpd/httpd-2.2.31.tar.gz wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz wget http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gz wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.10/pcre-8.10.zip
5.將原有安裝卸載
yum remove apr-util-devel apr apr-util-mysql apr-docs apr-devel apr-util apr-util-docs
6.具體步驟如下:
a:解決apr not found問題>>>>>> [root@xt test]# tar -zxf apr-1.4.5.tar.gz [root@xt test]# cd apr-1.4.5 [root@xt apr-1.4.5]# ./configure --prefix=/usr/local/apr [root@xt apr-1.4.5]# make && make install b:解決APR-util not found問題>>>> [root@xt test]# tar -zxf apr-util-1.3.12.tar.gz [root@xt test]# cd apr-util-1.3.12 [root@xt apr-util-1.3.12]# ./configure --prefix=/usr/local/apr-util --with- apr=/usr/local/apr/bin/apr-1-config 因為安裝apr-util的時候需要編譯環境apr存在,故--with-apr指定apr安裝路徑。 [root@xt apr-util-1.3.12]# make && make install c:解決pcre問題>>>>>>>>> [root@xt test]#unzip -o pcre-8.10.zip [root@xt test]#cd pcre-8.10 [root@xt pcre-8.10]#./configure --prefix=/usr/local/pcre [root@xt pcre-8.10]#make && make install
可以看到:現在我們都裝好了包,并解壓,并編譯安裝完成。 7.cd 到 httpd-2.2.31,ls,less INSTALL。
8../configure –prefix=/usr/local/apache2 –sysconfdir=/etc/httpd2 –with-apr=/usr/local/apr –with-apr-util=/usr/local/apr-util/
9.make&&make install
10.cd /usr/local/apache2/ 上,ls bin11.bin/apachectl start
12.netstat -tan 13.看到端口80表示成功了,然后是安裝后的配置。 安裝后的配置:
(1) 導出二進制程序目錄至PATH環境變量中; 編輯文件/etc/profile.d/NAME.sh export PATH=/PATH/TO/BIN:$PATH (2) 導出庫文件路徑 編輯/etc/ld.so.conf.d/NAME.conf 添加新的庫文件所在目錄至此文件中; 讓系統重新生成緩存: ldconfig [-v] (3) 導出頭文件 基于鏈接的方式實現: ln -sv (4) 導出幫助手冊 編輯/etc/man.config文件 添加一個MANPATH
原創文章,作者:N24_yezi,如若轉載,請注明出處:http://www.www58058.com/60348
注解的方式能加深對知識的掌握程度,而對自己來說就是知其然知其所以然了。