RPM包基礎(chǔ)
企業(yè)建站必須是能夠以充分展現(xiàn)企業(yè)形象為主要目的,是企業(yè)文化與產(chǎn)品對(duì)外擴(kuò)展宣傳的重要窗口,一個(gè)合格的網(wǎng)站不僅僅能為公司帶來(lái)巨大的互聯(lián)網(wǎng)上的收集和信息發(fā)布平臺(tái),創(chuàng)新互聯(lián)公司面向各種領(lǐng)域:成都銅雕雕塑等成都網(wǎng)站設(shè)計(jì)、營(yíng)銷(xiāo)型網(wǎng)站解決方案、網(wǎng)站設(shè)計(jì)等建站排名服務(wù)。
RPM
YUM
編譯安裝
概述
Linux上的程序包管理,是我們的必備技能,本文將從三個(gè)視角:rpm、yum、源碼編譯來(lái)淺析Linux的程序包管理。首先,我們來(lái)看下本文的主要內(nèi)容:
- 程序包的命名- RPM: 程序包管理器 安裝、卸載、升級(jí)、查詢(xún)、校驗(yàn)、數(shù)據(jù)庫(kù)維護(hù) - YUM: RPM的前端程序 yum的配置文件 yum的常規(guī)操作:升級(jí)、檢查、卸載、查看、包組管理 使用光盤(pán)當(dāng)作本地yum倉(cāng)庫(kù) yum的命令行選項(xiàng)及repo配置文件中的可用變量 - 編譯安裝 編譯安裝三步驟 編譯安裝后的相關(guān)配置
RPM包
在了解RPM之前,我們需要了解下關(guān)于rpm包的基本知識(shí),通常,一個(gè)二進(jìn)制應(yīng)用程序的組成部分有:二進(jìn)制文件、庫(kù)文件、配置文件、幫助文件,而源代碼與rpm包都有各自的命名規(guī)則:
源代碼: name-VERSION.tar.gz|bz2|xz 其中,VERSION: major.minor.release rpm包: name-VERSION-release.arch.rpm 其中,VERSION: major.minor.release release:release.OS 如:ash-4.2.46-19.el7.x86_64.rpm 另外,noarch表示與平臺(tái)無(wú)關(guān)
而包與包之間,是存在依賴(lài)關(guān)系的,甚至循環(huán)依賴(lài),由此才有也RPM與YUM,以下為包的主要分類(lèi):
Application-VERSION-ARCH.rpm: 主包 Application-devel-VERSION-ARCH.rpm開(kāi)發(fā)子包 Application-utils-VERSION-ARHC.rpm其它子包 Application-libs-VERSION-ARHC.rpm其它子包
對(duì)于庫(kù)文件,有以下兩個(gè)常用命令及相關(guān)配置文件
ldd: 查看二進(jìn)制程序所依賴(lài)的庫(kù)文件 ldconifg: 管理及查看本機(jī)裝載的庫(kù)文件 配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf 緩存文件:/etc/ld.so.cache
下面是一個(gè)常見(jiàn)的rpm包:
RPM
rpm - RPM Package Manager
RPM就是一個(gè)包管理器,對(duì)rpm的主要操作有:
安裝:rpm {-i|--install} [install-options] PACKAGE_FILE ... 卸載:rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] 升級(jí):rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... rpm {-F|--freshen} [install-options] PACKAGE_FILE ... 查詢(xún):rpm {-q|--query} [select-options] [query-options] 校驗(yàn):rpm {-V|--verify} [select-options] [verify-options] 數(shù)據(jù)庫(kù)維護(hù):rpm {--initdb|--rebuilddb} /var/lib/rpm
使用示例
安裝一個(gè)rpm包:
[root@centos7 ~]#rpm -ivh tree-1.6.0-10.el7.x86_64.rpm
[install-options] -h: hash marks輸出進(jìn)度條;每個(gè)#表示2%的進(jìn)度; --test: 測(cè)試安裝,檢查并報(bào)告依賴(lài)關(guān)系及沖突消息等; --nodeps: 忽略依賴(lài)關(guān)系,不建議 --replacepkgs: 重新安裝,注意不會(huì)替換配置文件 --nosignature: 不檢查包簽名信息,不檢查來(lái)源合法性 --nodigest: 不檢查包完整性信息
卸載一個(gè)rpm包:
[root@centos7 ~]#rpm -e tree
[erase-options] --almatches: 卸載所有匹配指定名稱(chēng)的程序包的各版本: --nodeps: 忽略依賴(lài)關(guān)系 --test;測(cè)試卸載,dry run模式
查詢(xún)一個(gè)rpm包:
[root@centos7 ~]#rpm -qi tree
[root@centos7 ~]#rpm -ql tree
[query-options] -a,--all: 查詢(xún)所有已經(jīng)安裝過(guò)的包 -f FILE: 查詢(xún)指定的文件由哪個(gè)程序包安裝生成; --chargelog: 查詢(xún)r(jià)pm包的changlog; -l,--list: 程序包安裝生成的所有文件列表; -i,--info: 程序包相關(guān)的信息,版本號(hào),大小,所屬的包組等 -c,--configfiles: 查詢(xún)指定的程序提供的配置文件 -d,--docfiles: 查詢(xún)指定的程序包提供的文檔 --provides: 列出指定的程序包提供的所有CAPABILITY -R,--requires: 查詢(xún)指定的程序包的依賴(lài)關(guān)系 --scripts: 查看程序包自帶的腳本片斷
校驗(yàn)一個(gè)rpm包:
[root@centos7 ~]#rpm -V tree [root@centos7 ~]#echo $? 0 [root@centos7 ~]#
公鑰如何得到: 在光盤(pán)中:RPM-GPG-KEY-CentOS-7 或者在此路徑下:ls /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 獲取并導(dǎo)入信任的包制作者的密鑰: 對(duì)于CentOS發(fā)行版來(lái)說(shuō): #rpm --import /media/cdrom/RPM-GPG-KEY-CentOS-7驗(yàn)證: (1)安裝此組織簽名的程序時(shí),會(huì)自動(dòng)執(zhí)行驗(yàn)證 (2)手動(dòng)驗(yàn)證:rpm -K PACKAGE_FILE
[root@centos7 ~]#rpm -K tree-1.6.0-10.el7.x86_64.rpm tree-1.6.0-10.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK [root@centos7 ~]#
關(guān)于rpm包制作與使用時(shí)的加密解密問(wèn)題:
制作者:
1.使用單向加密算法去提取這個(gè)包的特征碼,特征碼是定長(zhǎng)的;
2.用私鑰加密特征碼,附加在文件后面,私鑰加密的特征碼就是數(shù)字簽名;
使用者:
1.拿到制作者的公鑰,去解密特征碼,如果能解密則表明該rpm包的確為相應(yīng)的制作者,這便是來(lái)源合法性驗(yàn)證
2.用同樣的單向加密算法對(duì)包作計(jì)算,計(jì)算得到一個(gè)特征碼,然后拿特征碼與解密數(shù)字簽名的特征碼作比對(duì),如果二者一樣,則驗(yàn)證了其完整性。
[root@centos7 ~]#rpm -ql tree /usr/bin/tree /usr/share/doc/tree-1.6.0 /usr/share/doc/tree-1.6.0/LICENSE /usr/share/doc/tree-1.6.0/README /usr/share/man/man1/tree.1.gz [root@centos7 ~]#echo >> /usr/bin/tree # 給/usr/bin/tree里面追加空格 [root@centos7 ~]#rpm -V tree # 驗(yàn)證安裝完之后包文件有無(wú)變動(dòng) S.5....T. /usr/bin/tree # 大小,MD5,時(shí)間戳已變 [root@centos7 ~]#rpm -K tree-1.6.0-10.el7.x86_64.rpm # 驗(yàn)證來(lái)源合法性與包的完整性 tree-1.6.0-10.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK [root@centos7 ~]#
校驗(yàn): 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
升級(jí)rpm包:
rpm -Uvh PACKAGE_FILE... rpm -Fvh PACKAGE_FILE... -U:升級(jí)或安裝-F:升級(jí) --oldpackage: 降級(jí);--force: 強(qiáng)制升級(jí); 注意: (1)不要對(duì)內(nèi)核做升級(jí)操作;Linux支持多內(nèi)核版本并存,因此,直接安裝新版本內(nèi)核; (2)如果某原程序包的配置文件安裝后曾被修改過(guò),升級(jí)時(shí),新版本的程序提供的 同一個(gè)配置文件不會(huì)覆蓋原有版本的配置文件,而是把新版本的配置文件重命名后 (FILENAME.rpmnew)后提供;
數(shù)據(jù)庫(kù)重建| 此功能慎用!
rpm管理器數(shù)據(jù)庫(kù)路徑:/var/lib/rpm/,相關(guān)的查詢(xún)操作,通過(guò)此處的數(shù)據(jù)庫(kù)進(jìn)行;
rpm {--initdb|--rebuilddb} --initdb: 初始化數(shù)據(jù)庫(kù),當(dāng)前無(wú)任何數(shù)據(jù)庫(kù)可初始化創(chuàng)建一個(gè)新的;當(dāng)前有時(shí)不執(zhí)行任何操作; --rebuilddb: 重建,無(wú)論當(dāng)前存在與否,直接重新創(chuàng)建數(shù)據(jù)庫(kù)
在其他目錄構(gòu)建rpm數(shù)據(jù)庫(kù):
[root@centos7 ~]#rpm --initdb --dbpath=/tmp/rpm [root@centos7 ~]#ls /tmp/rpm /Basenames __db.003 Name Requirename Conflictname Dirnames Obsoletename Sha1header __db.001 Group Packages Sigmd5 __db.002 Installtid Providename Triggername
看重建之后的區(qū)別
[root@centos7 ~]#rpm --rebuilddb --dbpath=/tmp/rpm [root@centos7 ~]#ls /tmp/rpm/ Basenames Dirnames Installtid Obsoletename Providename Sha1header Triggername Conflictname Group Name Packages Requirename Sigmd5 [root@centos7 ~]#
rpm命令小結(jié):
rpm命令實(shí)現(xiàn)程序管理: 安裝:-ivh, --nodeps, --replacepkgs 卸載:-e, --nodeps 升級(jí):-Uvh, -Fvh, --nodeps, --oldpackge 查詢(xún):-q, -qa, -qf, -qi, -qd, -qc, -q --scripts, -q --chagelog, -q --provides,-q --requires 校驗(yàn):-V 導(dǎo)入GPG密鑰: --import, -K(檢驗(yàn)來(lái)源合法性與包完整性) --nodeigest(校驗(yàn)時(shí)不檢查完整性) --nosignature(校驗(yàn)時(shí)不檢查來(lái)源合法性)包來(lái)源合法性驗(yàn)正及完整性驗(yàn)正: 完整性驗(yàn)正:SHA256 來(lái)源合法性驗(yàn)正:RSA 查詢(xún)公鑰:0數(shù)據(jù)庫(kù)重建:--initdb, --rebuilddb
YUM
rpm給我們的包管理帶來(lái)的便利,但在安裝包時(shí),卻無(wú)法自動(dòng)解決包之間的依賴(lài)關(guān)系,比如你要安裝一個(gè)包,它可能會(huì)提示你此包依賴(lài)A包,此時(shí)就需要再安裝A包了,但在安裝A包時(shí)又提示你安裝B包與C包,此時(shí)你又不得不再安裝B包與C包,最后再回頭來(lái)安裝你想要安裝的包。如此反復(fù),對(duì)于一個(gè)高效率工作的人來(lái)說(shuō),簡(jiǎn)直苦不堪言?。挥纱?,yum成華麗現(xiàn)身了,yum就是rpm的一個(gè)前面工具,其主要的優(yōu)勢(shì)是可以自動(dòng)地解決包與包之間的依賴(lài)關(guān)系,另外,yum還能一次性安裝一個(gè)包組;由可可見(jiàn),yum是基于rpm的,二者是一個(gè)相輔相成的關(guān)系。
yum的主要知識(shí)點(diǎn):
yum客戶(hù)端的配置文件及變量 使用光盤(pán)當(dāng)作本地yum倉(cāng)庫(kù) 與rpm相近功能的實(shí)現(xiàn) yum的包組管理功能
yum客戶(hù)端的配置文件
/etc/yum.conf:為所有倉(cāng)庫(kù)提供公共配置 /etc/yum.repos.d/*.repo:為倉(cāng)庫(kù)的指向提供配置
什么是yum的倉(cāng)庫(kù)?
我們用rpm安裝rpm包時(shí),rpm包的來(lái)源于光盤(pán),在光盤(pán)的Packets目錄里面有少量的rpm包;那么,對(duì)于yum而言,它也需要指向一個(gè)“倉(cāng)庫(kù)”的東西,不然“巧婦難為無(wú)米之炊”啊,而這個(gè)“倉(cāng)庫(kù)”,既可以是本地的,也可以是網(wǎng)絡(luò)上的。
如何指向yum倉(cāng)庫(kù),這就需要我們來(lái)配置/etc/yum.repos.d/*.repo ,重要的一點(diǎn)是,指向yum倉(cāng)庫(kù)的地址一定是 repodata 這個(gè)rpm包元數(shù)據(jù)文件的父目錄,且該配置文件的命名必須要以.repo為擴(kuò)展名,否則出錯(cuò)!指向yum倉(cāng)庫(kù)的配置文件的定義如下:
[repositoryID] name=Some name for this repository baseurl=url://path/to/repository/enabled={1|0} gpgcheck={1|0} gpgkey=URL enablegroups={1|0} failovermethod={roundrobin|priority} 默認(rèn)為:roundrobin,意為隨機(jī)挑選; cost= 默認(rèn)為1000
參考示例:
1 [base] # 遠(yuǎn)程yum源 2 name=CentOS 7 3 baseurl=http://10.1.0.1/cobbler/ks_mirror/7/ # repodata 的父目錄 4 gpgcheck=1 # 開(kāi)啟完整性與來(lái)源合法性,0則表示關(guān)閉 5 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 6 enabled=0 # 啟用此yum源,0表示禁用 7 8 [base_local] # 本地光盤(pán)yum源 9 name=Mirros-CentOS 7 10 baseurl=file:///media/cdrom # 光盤(pán)的掛載點(diǎn) 11 gpgcheck=1 12 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 13 ecabled=1
顯示倉(cāng)庫(kù)列表
[root@centos7 /etc/yum.repos.d]#yum repolist
此時(shí)我們就可以利用yum實(shí)現(xiàn)rpm的相應(yīng)功能了。
當(dāng)然,天下武功,唯快不破,對(duì)于創(chuàng)建yum倉(cāng)庫(kù),我們還有“快招”!
yum-config-manager命令:
yum-config-manager常用參數(shù): --add-repo="repodata的父目錄或光盤(pán)的掛載點(diǎn)” --disable "倉(cāng)庫(kù)名“ 禁用倉(cāng)庫(kù) --enable "倉(cāng)庫(kù)名” 啟用倉(cāng)庫(kù)
快速創(chuàng)建網(wǎng)絡(luò)yum倉(cāng)庫(kù):
[root@centos7 ~]#yum-config-manager --add-repo= Loaded plugins: fastestmirror, langpacks adding repo from: [10.1.0.1_cobbler_ks_mirror_7_] name=added from: baseurl= enabled=1 [root@centos7 ~]#
快速創(chuàng)建光盤(pán)yum倉(cāng)庫(kù):
[root@centos7 ~]#yum-config-manager --add-repo= Loaded plugins: fastestmirror, langpacks adding repo from: [media_cdrom_] name=added from: baseurl= enabled=1 [root@centos7 ~]#
禁用base倉(cāng)庫(kù):
[root@centos7 ~]#yum-config-manager --disable base
該命令實(shí)際上是修改了.repo文件,重啟之后依然有效。
開(kāi)啟base倉(cāng)庫(kù):
[root@centos7 ~]#yum-config-manager --enable base
禁用所有yum倉(cāng)庫(kù):
[root@centos7 ~]#yum-config-manager --disable *
開(kāi)啟所有yum倉(cāng)庫(kù):
[root@centos7 ~]#yum-config-manager --enable *
另外,yum的repo配置腳本已經(jīng)寫(xiě)好,問(wèn)題來(lái)了,當(dāng)我們?cè)谝粋€(gè)既有CentOS 7, 又有CentOS 6的環(huán)境中需要運(yùn)行yum的repo配置文件時(shí),發(fā)現(xiàn)適用于適用于CentOS 7的不適用于CentOS 6,反之亦然,如此,repo配置文件也有了屬于自己的變量:
yum的repo配置文件中可用的變量: $releasever: 當(dāng)前OS的發(fā)行版的主版本號(hào) $arch: 平臺(tái),i386,i486,i586,x86_64等 $basearch:基礎(chǔ)平臺(tái);i386 $YUM0-$YUM9:自定義變量 實(shí)例: http://server/centos/$releasever/$basearch/ http://server/centos/7/x86_64 http://server/centos/6/i384
制作本地yum源
我們除了用光盤(pán)當(dāng)作本地yum源外,還可以利用第三方的rpm包來(lái)個(gè)性化地制作我們所無(wú)需要的本地yum源。首先,我們要從一個(gè)站點(diǎn)去下載所需的rpm包,然后在下載的rpm包的所在目錄下利用createrepo這個(gè)命令就可以制作本地yum源了。
登錄ftp服務(wù)器下載所需rpm包:
[root@centos7 ~]#lftp 10.1.0.1lftp 10.1.0.1:~> cd pub lftp 10.1.0.1:/pub/Sources/7.x86_64> !mkdir /testdir/zsh # 在本地創(chuàng)建/testdir/zsh目錄,格式為! COMMAND lftp 10.1.0.1:/pub/Sources/7.x86_64> lcd /testdir/zsh # lcd進(jìn)相應(yīng)的目錄 lcd ok, local cwd=/testdir/zsh lftp 10.1.0.1:/pub/Sources/7.x86_64> lpwd # 查看是否成功進(jìn)入相應(yīng)的目錄/testdir/zsh lftp 10.1.0.1:/pub/Sources/7.x86_64> mget zsh-5.0.2-7.el7_1.2.x86_64.rpm # 下載rpm包,引自作為測(cè)試僅下載一個(gè) 2489616 bytes transferred lftp 10.1.0.1:/pub/Sources/7.x86_64> bye [root@centos7 ~]#cd /testdir/zsh [root@centos7 /testdir/zsh]#ls zsh-5.0.2-7.el7_1.2.x86_64.rpm [root@centos7 /testdir/zsh]#
關(guān)于createrepo命令:
createrepo [options] <directory> # 目錄是必選
創(chuàng)建本地yum源:
[root@centos7 /testdir/zsh]#createrepo . # 在當(dāng)前目錄下創(chuàng)建本地yum源
創(chuàng)建配置文件:
[root@centos7 /testdir/zsh]#yum-config-manager --add-repo= Loaded plugins: fastestmirror, langpacks adding repo from: [testdir_zsh] name=added from: baseurl= enabled=1 [root@centos7 /testdir/zsh]#
查看:
驗(yàn)證:安裝zsh
[root@centos7 /testdir/zsh]#yum -y install zsh
此時(shí),我們的本地yum源就可以認(rèn)為創(chuàng)建成功了!
yum常見(jiàn)命令行
顯示倉(cāng)庫(kù)列表:yum repolist [all|enabled|disabled] 顯示程序包:yum list {available|installed|updates} 安裝程序包:yum install package1 [package2] [...] yum reinstall package1 [package2] [...] (重新安裝) 升級(jí)程序包:yum update [package1] [package2] [...] yum downgrade package1 [package2] [...] (降級(jí)) 檢查可用升級(jí):yum check-update 卸載程序包:yum remove | erase package1 [package2] [...] 查看程序包information:yum info [...] 查看指定的特性(可以是某文件)是由哪個(gè)程序包所提供: yum provides | whatprovidesfeature1 [feature2] [...]清理本地緩存: yum clean [ packages | metadata | expire-cache | rpmdb| plugins | all ]構(gòu)建緩存: yum makecache # 緩存元數(shù)據(jù) 搜索:yum search string1 [string2] [...]以指定的關(guān)鍵字搜索程序包名及summary信息 查看指定包所依賴(lài)的capabilities: yum deplist package1 [package2] [...]查看yum事務(wù)歷史: yum history yum history info 6 yum history undo 6 # 執(zhí)行yum命令的撤銷(xiāo)操作 日志:/var/log/yum.log --nogpgcheck:禁止進(jìn)行g(shù)pgcheck -y: 自動(dòng)回答為“yes” -q:靜默模式 --disablerepo=repoidglob:臨時(shí)禁用此處指定的repo --enablerepo=repoidglob:臨時(shí)啟用此處指定的repo --noplugins:禁用所有插件
相關(guān)示例:
[root@centos7 ~]#yum makecache # 緩存元數(shù)據(jù) Loaded plugins: fastestmirror, langpacks testdir_zsh | 2.9 kB 00:00:00 (1/2): testdir_zsh/other_db | 1.5 kB 00:00:00 (2/2): testdir_zsh/filelists_db | 5.7 kB 00:00:00 Loading mirror speeds from cached hostfile Metadata Cache Created [root@centos7 ~]#
[root@centos7 ~]#yum history
[root@centos7 ~]#yum check-update # 檢查可用升級(jí) [root@centos7 ~]#yum -y update zsh
[root@centos7 ~]#yum deplist zsh 查看指定包所依賴(lài)的能力capabilities
[root@centos7 ~]#yum provides zsh # 查看指定的包的特性由哪個(gè)程序提供
yum的包組管理功能
yum groupinstall group1 [group2] [...] yum groupupdate group1 [group2] [...] yum grouplist [hidden] [groupwildcard] [...] yum groupremove group1 [group2] [...] yum groupinfo group1 [...]
包與包組的關(guān)系,在其結(jié)構(gòu)關(guān)系上,類(lèi)似于用戶(hù)與用戶(hù)組的概念,都是為了方便管理。yum的包組管理命令與yum的常規(guī)安裝卸載升級(jí)命令用法相似。
源碼編譯
有了rpm與yum,有時(shí)也不能完全滿(mǎn)足我們的需求,比如我我們要升級(jí)一個(gè)程序,但這個(gè)程序沒(méi)有相應(yīng)的rpm包,或者其rpm包版本過(guò)舊,而我們我們只有源碼包,此時(shí)我們就需要編譯安裝程序了;另外,yum安裝時(shí)是自動(dòng)解決依賴(lài)關(guān)系,有可能安裝了我們好些不需要的東西,而我們不想安裝沒(méi)必要的東西,此時(shí),我們也要考慮編譯安裝。編譯安裝有三大步驟,但有時(shí)我們也需要具體的軟件具體對(duì)待,在編譯前需要閱讀其安裝信息。
C代碼編譯安裝三步驟: 1、./configure: (1) 通過(guò)選項(xiàng)傳遞參數(shù),指定啟用特性、安裝路徑等;執(zhí)行時(shí)會(huì)參考用戶(hù)的指定以及makefile.in文件生成makefile (2) 檢查依賴(lài)到的外部環(huán)境,如依賴(lài)的軟件包 2、make:根據(jù)makefile文件,構(gòu)建應(yīng)用程序 3、make install:復(fù)制文件到相應(yīng)路徑 開(kāi)發(fā)工具: autoconf: 生成configure腳本 automake:生成Makefile.in 注意:安裝前查看INSTALL,README
在編譯前,我們需要準(zhǔn)備好開(kāi)發(fā)環(huán)境與開(kāi)發(fā)工具,開(kāi)發(fā)環(huán)境包括:開(kāi)發(fā)庫(kù),頭文件,glibc, 標(biāo)準(zhǔn)庫(kù);開(kāi)發(fā)工具包括:make, gcc等;這些開(kāi)發(fā)組件往往通過(guò)“包組”提供,所以我們只需安裝相應(yīng)的包組就可以了。
實(shí)現(xiàn):通過(guò)“包組”提供開(kāi)發(fā)組件 CentOS 6: Development Tools Server Platform Development CentOS 7: Development Tools Development and Creative Workstation
在安裝時(shí),./configure --help 可獲取其支持的安裝選項(xiàng),同時(shí),安裝路徑與配置文件的位置都是可以手工指定的,軟件的可選特性當(dāng)選擇性的禁用,依賴(lài)的包當(dāng)然也是可禁用的。這就是個(gè)性化的編譯安裝:
安裝路徑設(shè)定: --prefix=/PATH: 指定默認(rèn)安裝位置,默認(rèn)為/usr/local/ --sysconfdir=/PATH:配置文件安裝位置 System types:支持交叉編譯 Optional Features: 可選特性 --disable-FEATURE --enable-FEATURE[=ARG] Optional Packages: 可選包, --with-PACKAGE[=ARG],依賴(lài)包 --without-PACKAGE,禁用依賴(lài)關(guān)系
下面以安裝http來(lái)簡(jiǎn)要說(shuō)明編譯安裝的大致過(guò)程:
下載 httpd-2.2.29.tar.bz2并解壓,進(jìn)入解壓后的目錄
[root@centos7 ~/httpd-2.2.29]#./configure --prefix=/usr/local/http2 --sysconfdir=/etc/bin/http2
make
[root@centos7 ~/httpd-2.2.29]#make
make install
[root@centos7 ~/httpd-2.2.29]#make install
此時(shí),我們可進(jìn)入安裝目錄看下:
至此,我們的安裝過(guò)程就結(jié)束了,要想更加高效地使用該軟件的功能,我們還有安裝后的配置需要“善后”:
安裝后的配置: (1) 二進(jìn)制程序目錄導(dǎo)入至PATH環(huán)境變量中; 編輯文件/etc/profile.d/NAME.shexport PATH=/PATH/TO/BIN:$PATH(2) 導(dǎo)入庫(kù)文件路徑 編輯/etc/ld.so.conf.d/NAME.conf添加新的庫(kù)文件所在目錄至此文件中 讓系統(tǒng)重新生成緩存: ldconfig[-v] (3) 導(dǎo)入頭文件 基于鏈接的方式實(shí)現(xiàn): ln -sv (4) 導(dǎo)入幫助手冊(cè) 編輯/etc/man.config|man_db.conf文件 添加一個(gè)MANPATH
將二進(jìn)制程序目錄導(dǎo)入至PATH環(huán)境變量中
vim http2.sh export PATH=$PATH:/usr/local/http2
導(dǎo)入庫(kù)文件路徑
vim http2.conf /usr/local/http2/lib [root@centos7 ~]#ldconfig # 重新生成緩存 [root@centos7 ~]#
導(dǎo)入頭文件
[root@centos7 /usr/local/http2/include]#ln -sv /usr/local/http2/include /usr/include/http2.h
導(dǎo)入幫助手冊(cè)
現(xiàn)在我們嘗試使用man幫助:
apachectl - Apache HTTP Server Control Interfacestartstop restart
現(xiàn)在嘗試啟動(dòng)http:
[root@centos7 ~]#apachectl start
查看80端口是否已開(kāi)啟:
[root@centos7 ~]#netstat -ant
OK,我們來(lái)查看一下網(wǎng)頁(yè):
[root@centos7 ~]#links # 此命令沒(méi)有就直接yum安裝
瀏覽器再次查看(此步驟沒(méi)必要)
至此,源碼編譯安裝的試驗(yàn)就結(jié)束了!
我們?cè)诒疚闹兄饕榻B了rpm的常規(guī)命令操作,yum的配置文件及創(chuàng)建網(wǎng)絡(luò)yum源、使用光盤(pán)當(dāng)作yum源、創(chuàng)建本地yum源及其常規(guī)操作,最后簡(jiǎn)要介紹了下源碼編譯安裝的三步驟,其實(shí)make與make install是可以一起執(zhí)行的,即make & make install. 這就是我們程序包管理的主要內(nèi)容了!
止戰(zhàn)
2016.8.26
文章名稱(chēng):Linux程序包管理
文章路徑:http://aaarwkj.com/article12/igjpdc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶(hù)體驗(yàn)、網(wǎng)站設(shè)計(jì)、品牌網(wǎng)站設(shè)計(jì)、域名注冊(cè)、網(wǎng)站營(yíng)銷(xiāo)、定制開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)