您好,登錄后才能下訂單哦!
!命令:執(zhí)行其他系統(tǒng)下的linux命令:如:#!pwd:查看路徑
lftp命令下:(子命令:單文件下載:get;目錄下載:mirror;多文件下載:mget;退出:bye)
一、軟件包組成:
軟件包組成:(二進(jìn)制程序、庫文件、配置文件、幫助文件)
二進(jìn)制程序文件:
存放路徑:/bin;/sbin;/usr/bin;/usr/sbin;/usr/local/bin;/usr/local/sbin;
/bin;/sbin:系統(tǒng)自身啟動需要的二進(jìn)制文件;
/usr/sbin;/usr/local/bin:系統(tǒng)啟動后完成基本管理需要的二進(jìn)制文件;
/usr/local/bin;/usr/local/sbin:第三方管理需要的二進(jìn)制文件;
庫文件:(也是可執(zhí)行文件,但不能獨立執(zhí)行,需要調(diào)用執(zhí)行)在程序中通常稱為函數(shù);
存放路徑:/lib;/usr/lib;/usr/local/lib;
庫文件分類:靜態(tài)庫(以.a結(jié)尾的文件)、動態(tài)庫(以.so結(jié)尾的文件)
庫文件配置路徑:/etc/ld.so.conf;/etc/ld.so.conf.d/*.conf
配置文件:
存放路徑:/etc
幫助文件:
幫助文件分類:手冊(/usr/share/man);README;INSTALL;通常后兩個都放在/usr/share/doc,
man的配置文件在/etc/man_db.conf(定義man去×××幫助文件)
二、linux程序包管理工具:
包管理工具應(yīng)包含:文件清單、文件存放位置、軟件功能說明、依賴關(guān)系(依賴其他程序包)
程序包管理工具數(shù)據(jù)庫:追蹤軟件安裝位置,便于卸載操作,大多數(shù)存于/var/lib/rpm下
軟件包前端管理工具會自動查找、解決軟件包之間的依賴關(guān)系,然后安裝需要的軟件包。
Debian :dpt;apt-get(軟件包前端管理工具)
Redhat:rpm;yum(軟件包前端管理工具)
suse:rpm
軟件包安裝方法:包管理工具安裝、源代碼編譯安裝、軟件包管理器前端工具、通用二進(jìn)制格式;
包管理工具安裝:rpm實現(xiàn)的功能:打包、安裝、查詢、升級、校驗、卸載等;
編譯安裝:將源代碼編譯成二進(jìn)制格式文件;需提供環(huán)境(如:編譯器:gcc,g++;庫文件),
由于編譯安裝只能手動進(jìn)行安裝,為了方便管理(卸載、升級),一般安裝到特定的文中,帶來的問題:如找不到二進(jìn)制文件執(zhí)行(因為在環(huán)境變量中沒有定義)、找不到庫文件、找不到幫助手冊(可以通過修改配置文件或使用命令:man -M /path來指定幫助文件路徑)、頭文件路徑(/usr/include)。
三、軟件包及源程序命名:
1、源程序命名:
name-version.tar.{gz | bz2 | xz} (包名-版本號.后綴名)
其中的版本號組成:major.minor.release (主版本號.次版本號.發(fā)行號);主版本號一般是程序的重大改變,次版本號一般是程序部分功能發(fā)生改變,發(fā)型號一般是是bug修復(fù),一次升級時要查看相應(yīng)版本號。
如:bash-4.3.1.tar.xz
2、rpm包命名:
name-version-release.arch.rpm (包名-源程序版本號-打包版本號.平臺.rpm;平臺指主機架構(gòu)如:i686,x86_64,amd64,ppc,noarch(表示與平臺無關(guān))) 此處的release是發(fā)行者打包的管理號,可能還包括所適用的操作系統(tǒng)(如:centos6);
而version也包含major.minor.release (主版本號.次版本號.發(fā)行號),解釋同源程序的release;
如:bash-4.3.2-5.e16.x86_64.rpm 包名.源程序版本號.打包版本號及適用操作系統(tǒng).平臺.rpm
3、rpm分包命名:將某些功能做成獨立的包,需要此功能才安裝。
主包包名-分包包名--version-release.arch.rpm 一般分包會依賴于主包,也就是說安裝分包必須安裝主包;
主包:核心包;bind
分包:支包;bind-chroot
如:bind-chroot
4、程序包位置:
一般放在packet下
四、軟件包獲取及驗證軟件包:
紅帽軟件包第三方平臺:epel,現(xiàn)在由fedora來維護(hù);因此又叫fedroa-epel:
http://mirrors.sohu.com;這里的軟件一般是系統(tǒng)光盤不帶的;
http://rpmfind.net;用來搜rpm包的
http://rpm.pbone.net;用來搜rpm包的
rpm包驗證機制:來源合法性、包的完整性;
gpg pgp:
redhat系列官方公鑰存放位置:
[root@promote ~]# ls /etc/pki/rpm-gpg/ //顯示公鑰文件
RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Debug-7 RPM-GPG-KEY-CentOS-Testing-7
[root@promote ~]#
[root@promote ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 //導(dǎo)入公鑰
[root@promote ~]# rpm -K zziplib-utils-0.13.62-5.el7.x86_64.rpm //驗證包來源合法
zziplib-utils-0.13.62-5.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
[root@promote ~]#
五、rpm包安裝、卸載、查詢、升級、校驗;
1、rpm包安裝: 要指定安裝文件的路徑(從哪個文件安裝) rpm {-i|--install} [install-options] PACKAGE_FILE ... install-options: -v:顯示詳細(xì)信息; -vv:顯示更詳細(xì)信息; -h:以#號顯示安裝進(jìn)度,一個#表示2%的進(jìn)度 --nodeps:忽略依賴關(guān)系;注意:忽略依賴關(guān)系可能能安裝軟件包,但安裝后不一定能正常使用; --test:僅測試安裝,但不安裝 --replacepkgs:重新安裝軟件包,替換已安裝包的所有文件; 常用組合:-ivh 如: [root@promote ~]# rpm -ivh /cdrom/Packages/zsh-5.0.2-14.el7.x86_64.rpm [root@promote ~]# rpm -ivh zziplib-utils-0.13.62-5.el7.x86_64.rpm error: Failed dependencies: libzzip-0.so.13()(64bit) is needed by zziplib-utils-0.13.62-5.el7.x86_64 libzzipfseeko-0.so.13()(64bit) is needed by zziplib-utils-0.13.62-5.el7.x86_64 libzzipmmapped-0.so.13()(64bit) is needed by zziplib-utils-0.13.62-5.el7.x86_64 zziplib(x86-64) = 0.13.62-5.el7 is needed by zziplib-utils-0.13.62-5.el7.x86_64 [root@promote ~]# rpm -ivh /cdrom/Packages/ 注意:rpm安裝包不會自動安裝依賴的包; [root@promote ~]# rpm -ivh --replacepkgs /cdrom/Packages/zsh-5.0.2-14.el7.x86_64.rpm |
2、rpm包卸載:卸載只需要指包名; rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] --nodeps:忽略依賴關(guān)系; --test:測試卸載 如: [root@promote ~]# rpm -e zsh [root@promote ~]# 注意:在安裝或卸載的時候,如果有寫文件做了改動,rpm會將修改的文件cp一份作為備份,可以在警告信息中看到;waring。。。。。 |
3、rpm包查詢: rpm {-q|--query} [select-options] [query-options] 3.1查詢已安裝的軟件包信息 rpm -qa:查詢所有的包 //不支持golbing rpm -qa | grep ‘包名’ :查詢特定的包 rpm -qi ‘包名’:查詢軟件包的摘要信息; rpm -ql ‘包名’ :查詢軟件包安裝后產(chǎn)生的文件清單; rpm -qf ‘文件的具體路徑’ :查詢某文件是由哪個rpm包安裝生成的; rpm -qc ‘包名’: 查詢軟件包安裝后的配置文件清單; rpm -qd ‘包名’:查詢軟件包安裝后產(chǎn)生的幫助文檔信息清單; rpm -q --scripts ‘包名’ :查詢軟件包執(zhí)行的相關(guān)腳本; 相關(guān)腳本分類: preinstall:安裝前腳本; postinstall:安裝后腳本; preuninstall:卸載前腳本; postuninstall:卸載后腳本; 如: [root@promote ~]# rpm -q zsh package zsh is not installed [root@promote ~]# rpm -qa | grep zsh zsh-5.0.2-14.el7.x86_64 [root@promote ~]# rpm -qi zsh //查詢軟件包的相關(guān)摘要信息 [root@promote ~]# rpm -ql zsh | less//查詢zsh安裝產(chǎn)生的文件清單,并分頁顯示; [root@promote ~]# rpm -qf /usr/share/zsh/site-functions/ //查詢site-functions是由哪個rpm包安裝 systemd-219-19.el7.x86_64 pulseaudio-6.0-7.el7.x86_64 zsh-5.0.2-14.el7.x86_64 [root@promote ~]# [root@promote ~]# rpm -qf /etc/passwd //查詢/etc/passwd由哪個rpm包安裝產(chǎn)生的; setup-2.8.71-6.el7.noarch [root@promote ~]# 3.2、查詢未安裝軟件包的若安裝后生成的相關(guān)信息 在q選項后加上p, rpm -qpi ‘rpm安裝包路徑’:查詢軟件包如果安裝將會產(chǎn)生的的摘要信息; rpm -qpl ‘rpm安裝包路徑’ :查詢軟件包如果安裝將會產(chǎn)生的文件清單; rpm -qpc ‘rpm安裝包路徑’: 查詢軟件包如果安裝將會產(chǎn)生的的配置文件清單; rpm -qpd ‘rpm安裝包路徑’:查詢軟件包如果安裝將會產(chǎn)生的幫助文檔信息清單; rpm -qp --scripts ‘包名’ :查詢軟件包如果安裝將會執(zhí)行的相關(guān)腳本; 如: [root@promote ~]# rpm -qpi zziplib-utils-0.13.62-5.el7.x86_64.rpm //注意此處是包路徑,不是包名 [root@promote cdrom]# rpm -qi zziplib-utils-0.13.62-5.el7.x86_64.rpm //直接查會提示軟件未安裝 package zziplib-utils-0.13.62-5.el7.x86_64.rpm is not installed
|
4、rpm包升級; rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... rpm {-F|--freshen} [install-options] PACKAGE_FILE ... --force:新舊版本沖突時,強行升級; --nodeps:忽略依賴關(guān)系 -U和-F都可以升級,不同的是:-U可以升級也可以全新安裝;-F只升級,如果老版本未安裝,此命令不生效;因此建議使用-U; 常用組合命令:-Uvh;-Fvh; 升級時需要注意的是:可能帶來依賴關(guān)系沖突,如x依賴y1.0,升級后x依賴于y2.0; 注意:內(nèi)核不應(yīng)該升級,應(yīng)該安裝,他允許許多版本并存; |
5、rpm包校驗: rpm {-V|--verify} [select-options] [verify-options] 一般軟件包安裝后,用rpm -V ‘包名’進(jìn)行校驗,如果安裝后的文件被改動過,則會輸出信息; 如: [root@promote ~]# rpm -V zsh S.5....T. c /etc/zshrc 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包的數(shù)據(jù)庫:
在linux系統(tǒng)中的大多數(shù)數(shù)據(jù)庫文件存放于:/var/lib目錄下;
rpm包數(shù)據(jù)庫:/var/lib/rpm;
[root@promote ~]# ls /var/lib/rpm -l
total 106552
-rw-r--r--. 1 root root 7254016 Dec 19 11:05 Basenames
-rw-r--r--. 1 root root 16384 Nov 29 20:31 Conflictname
-rw-r--r--. 1 root root 270336 Dec 19 11:34 __db.001 //__表示鎖文件
-rw-r--r--. 1 root root 81920 Dec 19 11:34 __db.002
-rw-r--r--. 1 root root 1318912 Dec 19 11:34 __db.003
-rw-r--r--. 1 root root 2154496 Dec 19 11:05 Dirnames
-rw-r--r--. 1 root root 36864 Dec 19 11:05 Group
-rw-r--r--. 1 root root 24576 Dec 19 11:05 Installtid
-rw-r--r--. 1 root root 106496 Dec 19 11:05 Name
-rw-r--r--. 1 root root 45056 Dec 6 22:17 Obsoletename
-rw-r--r--. 1 root root 94273536 Dec 19 11:05 Packages
-rw-r--r--. 1 root root 2596864 Dec 19 11:05 Providename
-rw-r--r--. 1 root root 724992 Dec 19 11:05 Requirename
-rw-r--r--. 1 root root 176128 Dec 19 11:05 Sha1header
-rw-r--r--. 1 root root 118784 Dec 19 11:05 Sigmd5
-rw-r--r--. 1 root root 8192 Nov 29 20:30 Triggername
[root@promote ~]#
如果rpm包的數(shù)據(jù)庫損壞,將導(dǎo)致rpm不能進(jìn)行查詢、卸載、升級、校驗等操作;
rpm [--initdb | --rebuilddb]
--initdb:新建數(shù)據(jù)庫;不會覆蓋原文件;
--rebuilddb;重建數(shù)據(jù)庫;會覆蓋原文件;用的比較多;
七、源碼格式的rpm包:一般含有.src字符串的文件名;
如:tcl-tclreadline-2.1.0-3.el7.src.rpm
打包:rpm的包制作過程式根據(jù)spec文件來制作完成的,
制作rpmbuild:
八、yum介紹:自動查找、下載并解決rpm包的依賴關(guān)系(前端管理工具)
1、yum服務(wù)端: yum倉庫(yum repository)的實現(xiàn)方式:遠(yuǎn)程方式( ftp://,http:// )、本地方式( file:///etc/ ); 一般rpm包都放在這些路徑下,用#createrepo 來創(chuàng)建源數(shù)據(jù); repodata存放的路徑就是yum倉庫的路徑; yum安裝實現(xiàn)需要的步驟: yum倉庫制作:(一般網(wǎng)上會有提供(如:http://mirrors.aliyun.com/centos/7/updates/x86_64/),但是如要要自己創(chuàng)建,可以按照如下流程:)
如:創(chuàng)建一個新倉庫: [root@promote Packages]# cp a* /yum //復(fù)制以a開頭的所有文件到/yum下,作為rpm包倉庫; [root@promote Packages]# createrepo /yum //制作/yum下軟件包的源數(shù)據(jù)生成repodata; |
2、yum客戶端: yum install | reinstall | remove yum安裝依賴于yum倉庫, yum配置文件定義了yum倉庫(到哪里去找軟件包) yum主配置文件:/etc/yum.conf //核心配置文件 yum倉庫的子配置文件:/etc/yum.repos.d/*.repo //可以自定定義yum倉庫源,放在此目錄下; |
2.1、yum客戶端主配置文件事例: [main] //定義哪個倉庫,倉庫的名字,為子倉庫提供默認(rèn)配置 cachedir=/var/cache/yum/$basearch/$releasever //緩存目錄,在哪個目錄下緩存; keepcache=0 //緩存保留時間 debuglevel=2 //debug級別,數(shù)字越大,級別越高 logfile=/var/log/yum.log //日志文件 exactarch=1 //匹配本地平臺(32\64位),1表示是,0表示不是; obsoletes=1 gpgcheck=1 //檢查rpm包簽名,檢查來源合法性,1表示是,0表示不是; plugins=1 installonly_limit=5 bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum distroverpkg=centos-release 2.2、yum客戶端子倉庫自定義:(需要注意:“=”前后不能有空格) [repository_ID] //隨便起名,只要不沖突 name= //倉庫名字描述信息,必不可少 baseurl= //倉庫的路徑,ftp、http、file等 enables= //倉庫是否啟用,1表示啟用,0表示不啟用; gpgcheck= //檢查軟件包合法性,1表示啟用,0表示不啟用; gpgkey= //如果啟用了合法性檢查,需定義秘鑰路徑;無論放哪里,只要能訪問到就可以 cost= //定義訪問需要的代價,數(shù)字越小代價越低也就越優(yōu)先, 如: [base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra baseurl=http://mirrors.aliyun.com/centos/7/updates/x86_64/ //repodata在x86_64目錄下; gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 注意:yum倉庫路徑可以使用yum內(nèi)置變量來匹配平臺($basearch)和版本($releasever): 如:cachedir=/var/cache/yum/$basearch/centos/$releasever //$releasever只匹配發(fā)行主版本號;$basearch匹配平臺; 如:匹配/var/cache/yum/i386/centos/7,var/cache/yum/x86_64/centos/6, |
九、yum命令工具使用:
1、yum顯示相關(guān)信息 yum [options] [command] [package ...] command: list [all | installed | available |updates | extras | recent]: 顯示所有程序包 | 已安裝的包 | 可安裝的包 | 可更新的包 | 無法歸類到y(tǒng)um倉庫的包,額外的包 | 新增加yum倉庫的包; repolist [all | enabled | disabled:查看所有倉庫 | 啟用的倉庫 | 禁用的倉庫; info [包名]:相當(dāng)于rpm -qi,顯示摘要信息; grouplist :顯示有哪些包組信息; groupinfo "組名" :顯示具體包組信息; clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]:清空相關(guān)緩存 makecache [fast] :手動建立本地緩存; provides | whatprovides feature1 [feature2] [...] //查詢文件有哪個程序包安裝的; search string1 [string2] [...] //查詢包中有相應(yīng)字符串的包;模糊匹配; 注意:yum list 支持同時查看安裝和未安裝的軟件包,rpm只能支持一種;yum支持globing,rpm不支持, 如: [root@promote yum.repos.d]# yum list | less Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: ftp.sjtu.edu.cn * extras: ftp.sjtu.edu.cn * updates: ftp.sjtu.edu.cn Installed Packages 389-ds-base.x86_64 1.3.4.0-19.el7 @anaconda zziplib-utils.x86_64 0.13.62-5.el7 base zsh.x86_64 5.0.2-14.el7 installed //依次為:軟件包.平臺 源文件版本號-發(fā)行版本號 已安裝 ;@表示已經(jīng)安裝,@后面是通過哪個倉庫安裝;前面沒有@表示沒有安裝;installed表示已安裝, [root@promote yum.repos.d]# yum repolist Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: ftp.sjtu.edu.cn * extras: ftp.sjtu.edu.cn * updates: ftp.sjtu.edu.cn repo id repo name status aliyum centos7 393 base/7/x86_64 CentOS-7 - Base 9,363 extras/7/x86_64 CentOS-7 - Extras 435 updates/7/x86_64 CentOS-7 - Updates 393 repolist: 10,584 [root@promote yum.repos.d]# [root@promote ~]# yum provides /etc/passwd Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirrors.cn99.com * extras: ftp.sjtu.edu.cn * updates: mirrors.cn99.com setup-2.8.71-7.el7.noarch : A set of system configuration and setup files Repo : base Matched from: Filename : /etc/passwd setup-2.8.71-6.el7.noarch : A set of system configuration and setup files Repo : @anaconda Matched from: Filename : /etc/passwd [root@promote ~]# [root@promote ~]# yum search zsh //搜索含有字符串的軟件包, Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: mirrors.cn99.com * extras: ftp.sjtu.edu.cn * updates: mirrors.cn99.com ======================================== N/S matched: zsh ========================================= zsh-html.x86_64 : Zsh shell manual in html format zsh.x86_64 : Powerful interactive shell Name and summary matches only, use "search all" for everything. [root@promote ~]# |
2、yum安裝: yum [options] [command] [package ...] command: install package1 [package2] [...] :安裝軟件包;yum安裝只需要指定安裝包名,不要指定路徑,因為他會去yum倉庫中自動搜索,但是rpm必須指定安裝文件的路徑;這里安裝的話需要手動確認(rèn),可以用-y來自動確認(rèn); reinstall package1 [package2] [...]:重新安裝軟件包; localinstall rpmfile1 [rpmfile2] [...]: 安裝本地rpm包,同時解決本地rpm包依賴關(guān)系,廢棄命令,但會檢查包合法性,可以使用--nogpgcheck關(guān)閉合法性檢查; (maintained for legacy reasons only - use install) localupdate rpmfile1 [rpmfile2] [...]:升級本地rpm包;廢棄命令 (maintained for legacy reasons only - use update) yum安裝需要使用yum倉庫,yum也可以不用yum倉庫直接安裝rpm包:如: [root@promote Packages]# yum install zsh-html-5.0.2-14.el7.x86_64.rpm //需指定包路徑 [root@promote ~]# yum localinstall zziplib-utils-0.13.62-5.el7.x86_64.rpm //yum安裝本地rpm包 |
3、yum升級、降級: yum [options] [command] [package ...] command: update [package1] [package2] [...] //升級 update-to [package1] [package2] [...] //指定版本升級(包名后跟版本號) check-update:檢查軟件包是否有升級包; upgrade [package1] [package2] [...] //也是升級,現(xiàn)在不用了 upgrade-to [package1] [package2] [...] //升級到指定版本,也不用了現(xiàn)在 downgrade package1 [package2] [...] //向下降級 如: [root@promote ~]# yum update-to python2-pyasn1.noarch |
4、yum卸載:yum卸載軟件時會自動卸載依賴它的包; yum [options] [command] [package ...] command: remove | erase package1 [package2] [...] //卸載軟件包; 如: [root@promote ~]# yum remove bind [root@promote ~]# yum erase zsh |
5、yum包組查詢、安裝:如果組名之間有空格,需要用“”(引號)引起來; yum [options] [command] [package ...] command: groups [install | list | update| remove]: 包組安裝、查詢、升級、卸載; 如: [root@promote ~]# yum groups list //查詢有哪些包組; [root@promote yum.repos.d]# yum groups install "Development Tools" //安裝包組; 一般說到的開發(fā)環(huán)境包組有: "Development"、"Server Platform Development"、"Desktop Platform Development"。 |
6、yum操作歷史查詢: yum [options] [command] [package ...] command: history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|roll‐ back|new|sync|stats] 如: [root@promote ~]# yum history Loaded plugins: fastestmirror, langpacks ID | Login user | Date and time | Action(s) | Altered ------------------------------------------------------------------------------- 8 | root <root> | 2016-12-19 19:40 | Erase | 2 7 | root <root> | 2016-12-19 19:40 | Erase | 1 EE 6 | root <root> | 2016-12-19 19:34 | Obsoleting | 2 5 | root <root> | 2016-12-19 17:40 | Reinstall | 1 4 | root <root> | 2016-12-19 17:37 | Update | 1 3 | root <root> | 2016-12-19 17:31 | I, U | 7 < 2 | root <root> | 2016-12-06 22:17 | Update | 2 > 1 | System <unset> | 2016-11-29 20:14 | Install | 1949 Warning: RPMDB altered outside of yum. history list [root@promote ~]# |
7、yum yum [options] [command] [package ...] command: version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ] |
十、源碼文件編譯安裝:
更新系統(tǒng)時間:#ntpdata x.x.x.x //指向時間服務(wù)器;
1、下載一個源碼格式文件:如Apache源文件:
[root@promote ~]# wget http://mirrors.sohu.com/apache/httpd-2.4.25.tar.gz
2、文件解壓縮
tar [OPTION...] [FILE]...
OPTION
-xf:解壓縮所有文件:
[root@promote ~]# tar -xf httpd-2.4.25.tar.gz //解壓縮,會出現(xiàn)一個一個不帶壓縮后綴的文件;
[root@promote ~]# ls
abc.txt first.sh httpd-2.4.25.tar.gz zziplib-utils-0.13.62-5.el7.x86_64.rpm
anaconda-ks.cfg httpd-2.4.25 ion
[root@promote ~]#
3、編譯、安裝:
(編譯文件用gcc或g++,可是他不能解決文件之間的調(diào)用關(guān)系,make命令可以自動解決,但是他還是需要調(diào)用gcc或g++;);
make編譯一組文件,并解決調(diào)用關(guān)系;make編譯依賴于makefile文件,makefile文件制定了編譯的文件次序、參數(shù)等;makefile文件是用configure腳本加上makefile.in生成的;configure腳本是由開發(fā)工具autoconf生成的;makefile.in是由automake生成的;
makefile=configure腳本+makefile.in
make [ -f makefile ] [ options ] ... [ targets ] ...
make install //安裝;
總結(jié):
編譯步驟:
1、在源代碼程序目錄里執(zhí)行命令# ./configure //檢查編譯環(huán)境是否完備;讓用戶定制編譯配置(通過腳本選項實現(xiàn))
2、執(zhí)行命令 # make 編譯
3、安裝二進(jìn)制文件: #make install
當(dāng)編譯安裝指定路徑時,程序在運行時可能找不到相應(yīng)的路徑,只能帶路徑執(zhí)行,如果不帶路徑運行相關(guān)命令,需要修改PATH文件包含相應(yīng)/bin,或/sbin;修改庫文件路徑包含相應(yīng)庫:/etc/ld.so.conf,/etc/ld.so.conf.d/*.conf;配置文件不需導(dǎo)出;修改幫助文件路徑/etc/man.conf,加上MANPATH=;
修改環(huán)境變量:
可以在/etc/profile.d在這個目錄下創(chuàng)建一個以.sh結(jié)尾文件,在里面加上:如:
export PATH=/usr/local/apr/bin:$PATH
導(dǎo)出庫文件:
[root@promote bin]# vim /etc/ld.so.conf.d/apr.conf
輸入內(nèi)容:
/usr/local/apr/lib
然后保存退出;
執(zhí)行命令#ldconfig -v重新搜索庫文件;
導(dǎo)出幫助文件:
[root@promote bin]# vim /etc/man_db.conf
在里面加上路徑:
MANPATH /usr/local/apr/man
然后保存退出;
鏈接頭文件:
#[root@promote httpd-2.4.25]# ln -sv /usr/local/apr/include /usr/include
查看程序運行依賴的庫:#ldd 程序
如:#ldd /bin/ls
ldconfig -v:重新搜索當(dāng)前系統(tǒng)上所有庫文件搜索路徑下庫文件,并生成緩存/etc/ld.so.cache
十一、源碼格式rpm安裝:
源碼格式的rpm安裝后不能直接使用;需編譯制作成rpm包才可以;
步驟:
1、下載源碼rpm包:
[root@promote ~]# wget
http://mirrors.aliyun.com/epel/7/SRPMS/n/nginx-1.10.2-1.el7.src.rpm
2、查看安裝nginx-1.10.2-1.el7.src.rpm后生成的文件列表:
[root@promote ~]# rpm -qpl nginx-1.10.2-1.el7.src.rpm
warning: nginx-1.10.2-1.el7.src.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
404.html
50x.html
README.dynamic
UPGRADE-NOTES-1.6-to-1.10
index.html
nginx-1.10.2.tar.gz
nginx-1.10.2.tar.gz.asc
nginx-auto-cc-gcc.patch
nginx-logo.png
nginx-upgrade
nginx-upgrade.8
nginx.conf
nginx.logrotate
nginx.service
nginx.spec //rpm依賴.spec文件生成rpm包;
poweredby.png
3、安裝nginx-1.10.2-1.el7.src.rpm包:
[root@promote ~]# useradd mockbuild //安裝文件需要mockbuild用戶和mockbuild組;
[root@promote ~]# rpm -ivh nginx-1.10.2-1.el7.src.rpm
warning: nginx-1.10.2-1.el7.src.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
Updating / installing...
1:nginx-1:1.10.2-1.el7 ################################# [100%]
[root@promote ~]#
一般會安裝到當(dāng)前文件夾:
[root@promote ~]# ls
abc.txt axel-2.4.tar.gz nginx-1.10.2-1.el7.src.rpm
anaconda-ks.cfg first.sh rpmbuild
apr-1.5.2 httpd-2.4.25 wps-office_10.1.0.5672~a21_x86_64.tar.xz
apr-1.5.2.tar.bz2 httpd-2.4.25.tar.gz zziplib-utils-0.13.62-5.el7.x86_64.rpm
axel-2.4 ion
[root@promote ~]# cd rpmbuild/
[root@promote rpmbuild]# ls
SOURCES SPECS //SOURCES下是源程序、補丁、腳本等文件;SPECS下的.sepc制作rpm包;
[root@promote rpmbuild]#
4、制作rpm包,
[root@promote SPECS]# rpmbuild -ba nginx.spec
[root@promote SPECS]# cd ..
[root@promote rpmbuild]# ls
BUILD BUILDROOT RPMS SOURCES SPECS SRPMS
[root@promote rpmbuild]#
[root@promote rpmbuild]# ls RPMS/
noarch x86_64
[root@promote rpmbuild]# cd RPMS/ 此目錄下是制作號的rpm包;可以直接安裝
[root@promote RPMS]# cd x86_64/
[root@promote x86_64]# ls //查看制作好的rpm包;
nginx-1.10.2-1.el7.centos.x86_64.rpm
nginx-debuginfo-1.10.2-1.el7.centos.x86_64.rpm
nginx-mod-http-geoip-1.10.2-1.el7.centos.x86_64.rpm
nginx-mod-http-p_w_picpath-filter-1.10.2-1.el7.centos.x86_64.rpm
nginx-mod-http-perl-1.10.2-1.el7.centos.x86_64.rpm
nginx-mod-http-xslt-filter-1.10.2-1.el7.centos.x86_64.rpm
nginx-mod-mail-1.10.2-1.el7.centos.x86_64.rpm
nginx-mod-stream-1.10.2-1.el7.centos.x86_64.rpm
[root@promote x86_64]#
[root@promote x86_64]# cd ..
[root@promote RPMS]# ls
noarch x86_64
[root@promote RPMS]# cd ..
[root@promote rpmbuild]# ls
BUILD BUILDROOT RPMS SOURCES SPECS SRPMS
[root@promote rpmbuild]# ls SRPMS/ //此目錄下是源碼格式rpm包;
nginx-1.10.2-1.el7.centos.src.rpm
[root@promote rpmbuild]#
5、安裝rpm包;
[root@promote x86_64]# rpm -ivh nginx-1.10.2-1.el7.centos.x86_64.rpm
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。