軟件包常見的安裝方式主要分爲:1,使用make等工具對源碼進行編譯安裝.2使用rpm管理工具安裝下載好的軟件包.3使用yum工具傻瓜是安裝.
軟件包的組成部分:
系統默認二進制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin #假如:安裝nginx二進制程序, /usr/local/nginx/ 庫文件:系統共享庫文件/lib, /usr/lib, /lib64, /usr/lib64, /usr/local/lib, /usr/local/lib64 #假如:安裝nginx軟件單獨使用的庫, /usr/local/nginx/ #開發用頭文件,運行用運行庫 #/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf 修改系統查找庫文件的路徑 #ldd命令 ldd `which cat` 查看cat命令所依賴的共享庫 配置文件:/etc 幫助文件: man文件, info文件, README, INSTALL, ChangeLog #需要注意的是COMMAND --help是寫在程序本身輸出的,程序的組成部分,
一,編譯安裝:通過下載開發者的源碼包對源碼進行定製功能的安裝方式.這種安裝方式優點可以避免安裝一些不需要的功能,以及根據自己的需求對軟件進行一些個性化設置.缺點也很明顯,不能自動解決依賴關係,對初學Linux者難度較高,下面就以安裝nginx和httpd爲例來複習一下安裝中遇到的一些問題:
(一)nginx的編譯安裝:
1,首先安裝編譯安裝中必須使用到的自動編譯工具autoconf,automake,gcc等;
autoconf: 檢查編譯環境是否編譯需求,並定義當前程序編譯時啓用哪個特性或功能,以及安裝路徑的定義等等;會根據Makefile.in文件生成makefile文件
automake: Makefile.in文件, 用於結合configure腳本生成makefile文件 makefile文件是make命令的配置文件
gcc:c語言程序編譯器
2,安裝nginx所依賴的軟件,通過yum安裝在系統中生成了信息可以解決安裝時nginx所需要的依賴關係;
3,創建nginx用戶和組,使用系統用戶和組
4,找到nginx官網下載源碼包,我這裏使用的是國內鏡像站
5,解壓源碼包,運行安裝腳本,在這裏可以根據自己的需求進行定製,爲了演示效果這裏使用了--prefix指定軟件路徑 --user屬主 --group屬組 --error錯誤日誌 --ssl模塊ssl等,詳細參考官方的說明文檔可以定製更加個性化功能的nginx
6,創建error.log等文件
7,找到nginx執行文件並啓動
到這裏安裝文件就基本完成了,需要總結的是在編譯安裝中要留意輸出的信息提示,最好截圖備份以免時間久了以後忘記安裝信息造成配置錯誤
(二)axel和httpd的編譯安裝
1,axel是一個非常強大,被稱爲Linux版"迅雷",所以先安裝了一個axel.因爲是做實驗,所以就默認安裝了.其中遇到一個問題:wget去獲取https網站的時候被拒絕,因爲今天不是討論wget.所以簡單記住加上--no-check-certificae --http-user=username --http-password=password這幾個選項參數就可以解決!
3,官方網站有httpd安裝環境的說明,安裝httpd之前由於需要apr和apr-util支持,這裏提供apr的下載鏈接,比較坑的是我使用yum安裝的apr-1.3.9在安裝過程中仍然提示缺少apr;
4,下載了apr1.5.1安裝
5,apr-util需要注意的必須要手動指定apr的安裝位置,不然會提示安裝不成功,
6,又是好大一個坑,在安裝完apr和apr-util以後編譯httpd有提示"libtoolT"的錯誤,通過搜索得知要修改apr安裝腳本configure裏的代碼,刪除重裝一次apr和apr-util
7,終於可以成功執行了,還是需要手動指定--with-apr=/usr/local/apr/bin/apr-1-config,不然還是會提示找不到apr
二,Rpm主要是對已經編譯過的安裝包進行安裝和管理,主要功能有:安裝,卸載,查詢,升級,校驗,數據庫管理.
1,安裝
rpm -i /path/to/rpm_package ... #安裝指定路徑下的包,也可以用--install -v #顯示詳細信息,也可以加-vv和-vvv -h #顯示安裝進度 --test #僅測試,不執行安裝. --nodeps #忽略依賴關係 -ivh #也可以用--replacepkgs 原來的配置文件不會被覆蓋,新安裝的配置文件將會重命名爲以.rpmnew爲後綴的文件;
2,卸載
rpm -e package_name #如果卸載被其它程序所依賴的包: --nodeps #忽略依賴關係
3,查詢
rpm -qa #查詢所有已經安裝的包 rpm -qi package_name #查詢包的描述信息 rpm -q package_name #查詢某單個包是否安裝 rpm -ql package_name #查詢包安裝之後在當前系統生成文件列表 rpm -qf /path/to/somefile #查詢某文件是哪個包安裝生成的 rpm -qd package_name #查詢包安裝後生成的幫助文檔 rpm -qc package_name #查詢包安裝後生成的配置文件 rpm -qpl /path/to/package_file #查詢安裝後會生成的文件列表 rpm -qpi /path/to/package_file #查詢其簡單描述信息 rpm -q --scripts package_name #查詢包相關的腳本, 腳本有四類:preinstall #安裝前腳本 postinstall #安裝後腳本 preuninstall #卸載前腳本 postuninstall #卸載後腳本
4,升級
rpm -U #安裝並升級 rpm -F #如果未安裝軟件包則不升級 rpm {-Uvh|-Fvh} /path/to/package_file #常用的組合方式 --force #強行安裝 --nodeps #忽略依賴關係
5,校驗:檢查包安裝後生成的文件是否被修改過;
rpm -V package_name
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 #提供的能力
6,檢驗來源合法性和軟件包完整性
rpm --import /path/to/gpg-key-file #導入製作者的gpg公鑰 rpm -K /path/to/package_file #檢查gpg公鑰 --nosignature #不檢查來源合法性 --nodigest #不檢查完整性
7,rpm數據庫
rpm --initdb #初始化,如果事先不存在一個數據庫,則新建 rpm --rebuilddb #重建,直接重建數據庫,會覆蓋原有的庫
三,程序包管理器的前端工具:yum.通過已知的文件服務器共享rpm包,自動解決軟件包之間依賴關係進行安裝的軟件包管理工具.ftp, http, nfs, file四種支持的文件服務器.要使用yum管理應用程序,首先得配置其可用的y軟件包倉庫,保存在配置文件中 /etc/yum.conf主配置文件和 /etc/yum.repos.d/*.repo各不同倉庫配置文件.
倉庫配置文件格式
[repo_ID] name= #以String字段顯示倉庫名稱 baseurl= #倉庫的訪問路徑 enabled={1|0} #倉庫是否啓用啓用爲1,禁用爲2 gpgcheck={1|0} #是否啓動gpg檢查 gpgkey= #公鑰文件(可以在本地,也可是服務器端路徑) cost= #定義此倉庫開銷,默認爲1000
yum子命令
yum repolist [all|enabled|disabled] #列出所有可用yum repo yum clean [all|packages|metadata|expire-cache|rpmdb|plugins] #清理緩存 yum list [all|installed|available] #列出rpm包 yum info package_name #列出包的描述信息 yum grouplist #列出所有包組 yum groupinfo "package_group_name" #顯示包組信息 yum install package_name ... #安裝指定的程序包 yum reinstall package_name ... #重新安裝指定的程序包 yum check-update #檢查可升級的包 yum update package_name ... #升級指定的程序包 要升級到指定版本:yum downgrade package_name #降級 yum erase|remove package_name ... #卸載某個包,依賴於這個包的軟件也會被卸載 yum whatprovides|provides /path/to/somefile #查詢某文件是由哪個包安裝生成的 yum groupinstall "group_name" #安裝指定的包組 yum groupremove "group_name" #卸載指定的包組 yum install /path/to/package_file #安裝本地包,不指定路徑則到配置文件的倉庫中去尋找對應軟件包 --nogpgcheck #手動禁止檢查來源及完整性 yum install /tmp/zsh-2.3.1-2.el6.x86_64.rpm --nogpgcheck
提示:跟開發相關的包組使用
CentOS 5,常用的開發包組爲“Development Tools”和“Development Libraries”
CentOS 6,常用的開發包組爲“Development Tools”和“Server Platform Development”
Desktop Platform Development:有圖形程序時需安裝此組;
Development Tools