直接由編程語言寫成,沒通過編譯。相似於java的 .calss 文件,c的 .c文件。java
[root@love2 ~]# vim hello.c #include <stdio.h> int main (void) { printf ("hello world\n"); } [root@love2 ~]# gcc -c hello.c # - c 生成「 .o 」頭文件。這裏會生成 hello.o 頭文件,可是不會生成執行文件 [root@love2 ~]# gcc -o hello hello.o # - o 生成執行文件,並制定執行文件名。這裏生成的 hello 就是可執行文件 [root@love2 ~]# ./hello hello world # 執行 hello 文件
源碼包的優勢:node
源碼包有缺點:數據庫
DPKG 包:是由 Debian Linux 所開發出來的包管理機制,經過 DPKG 包,Debian Linux 就能夠進行軟件包管理。主要應用在 Debian 和 unbuntu 中。
RPM 包:是由 Red Hat 公司所開發的包管理系統。功能強大,安裝、升級、查詢和卸載 都很是簡單和方便。目前不少 Linux 都在使用這種包管理方式,包括 Fedora、CentOS、 SuSE 等。apache
RPM 包的優勢:編程
缺點:vim
1)樹形依賴 a---->b---->c
2)環形依賴 a---->b---->c---->a
以上兩種狀況,咱們能夠用命令一次將所須要的軟件包所有安裝,就不須要考慮依賴性問題。
3)函數庫依賴 :a軟件包依賴與另外軟件包中的函數庫或者模塊,咱們須要找到該模塊或者該函數庫對應的軟件包。可經過該網站查詢www.rpmfind.net 。centos
httpd-2.2.15-15.el6.centos.1.i686.rpm #httpd 軟件包名 #2.2.15 軟件版本 #15 軟件發佈的次數 #el6 軟件發行商。el6 是 RedHat 公司發佈,適合 RHEL6.x(Red Hat Enterprise Linux)和 CentOS6.x 下使用 i686 適合的硬件平臺。 RPM 包能夠在不一樣的硬件平臺安裝,選擇適合不一樣 CPU 的軟件版本,能夠最大化的發揮 CPU 性能,因此出現了所謂的 i386(386 以上計算機均可以安裝)、 i586(586 以上的計算機均可以安裝)、i686(奔騰 II 以上計算機均可以安裝,目前全部的 CPU 都是 奔騰 II 以上,因此這個軟件版本居多)、 x86_64(64 位 CPU 能夠安裝)和 noarch(沒有硬 件限制)等文件名了。 #rpm 包的擴展名 Linux 下文件不是靠擴展名區分文件類型,也就是 Linux 中擴展 名沒有任何含義。但是這裏怎麼又出現了擴展名呢? 緣由很簡單,若是我不把 RPM 的擴展名 叫作「.rpm」,管理員很難知道這是一個 RPM 包,固然也就沒法正確安裝了。 也就是說若是 RPM 包不用「.rpm」做爲擴展名,系統能夠正確識別沒有問題,但是管理員很難識別這是個什麼樣的軟件。
包全名:若是操做的是未安裝軟件包,則使用包全名,並且須要注意絕對路徑
包名:若是操做的是已經安裝的軟件包,則使用包名便可,系統會生產 RPM 包的數據庫(/var/lib/rpm/)。緩存
目錄 | 做用 |
---|---|
/etc/ | 配置文件目錄 |
/usr/bin/ | 可執行命令目錄 |
/usr/lib/ | 程序使用的函數庫保存位置 |
/usr/share/doc/ | 軟件基本使用手冊保存位置 |
/usr/lib/ | 幫助文檔保存位置 |
1)安裝命令服務器
rpm –ivh 包全名 # 注意必定是包全名。若是跟包全名的命令 要注意路徑,由於軟件包在光盤當中。 選項: -i install 安裝(install) -v 顯示更詳細的信息(verbose) -h 打印#顯示安裝進度(hash) --nodeps 不檢測依賴性安裝。軟件時會檢測依賴性,肯定所需的底層軟件是否安裝。 若是沒有安裝則會報錯。無論依賴性,強行安裝。這樣不檢測依賴性安裝的軟件基本是不能使用的,因此不建議這樣作。 --replacefiles 替換文件安裝。若是安裝軟件包,但是包中部分文件已經存在,那麼 正常安裝時候,會報錯「某個文件已經存在」從而致使軟件沒法安裝,使用這個選項可 以忽視這個報錯,而覆蓋安裝。 --replacepkgs 替換軟件包安裝。若是軟件包已經安裝,此選項能夠把軟件包重複安裝一遍。 --force 強制安裝。不論是否已經安裝,都從新安裝。就是—replacefiles 和 —replacepkgs 的綜合。 --test 測試安裝。不會實際安裝,只是檢測一下依賴性。 --prefix 指定安裝路徑。爲安裝軟件指定安裝路徑,而不使用默認安裝路徑。注意: 若是指定了安裝路徑,軟件沒有安裝到系統默認路徑中的話,系統會找不到這些安裝的軟件,須要進行手工配置才能被系統識別。因此 rpm 包咱們通常都採用默認路徑安裝。
2)服務啓動編程語言
[root@localhost ~]# service 服務名 start|stop|restart|status 參數: start: 啓動服務 stop: 中止服務 restart: 重啓服務 status: 服務狀態
[root@localhost ~]# rpm –Uvh 包全名 選項: -U(大寫) 升級安裝,若是沒有安裝過,系統直接安裝。若是安裝過的版本較舊,則升級到新版本(upgrade) [root@localhost ~]# rpm –Fvh 包全名 選項: -F(大寫) 升級安裝,若是沒有安裝過,則不會安裝。必須安裝有較舊版本,才能升級(freshen)
[root@localhost ~]# rpm -e 包名 選項: --nodeps 不檢查依賴性 -e 卸載
1)查詢軟件包是否安裝
能夠查詢軟件包是否安裝
[root@localhost ~]# rpm –q 包名 選項: -q: 查詢(query)
2)查詢系統中的全部安裝軟件包
能夠查詢 Linux 系統中全部已經安裝的軟件包
[root@localhost ~]# rpm -qa 選項: -a:全部(all)
3)查詢軟件包的詳細信息
能夠查詢已經安裝的某個軟件包的詳細信息
[root@localhost ~]# rpm –qi 包名 選項: -i: 查詢軟件信息(information)
查詢尚未安裝的軟件包的詳細信
[root@localhost ~]# rpm –qip 包全名 選項: -p: 查詢沒有安裝的軟件包(package)
4)查詢軟件包中的文件列表
能夠查詢已經安裝的軟件包中的文件列表和安裝的完整目錄
[root@localhost ~]# rpm –ql 包名 選項: -l: 列出軟件包中全部的文件列表和軟件所安裝的目錄(list)
查詢尚未安裝的軟件包中的文件列表和打算安裝的位置
[root@localhost ~]# rpm –qlp 包全名 選項: -p: 查詢沒有安裝的軟件包信息(package)
5)查詢系統文件屬於哪一個 RPM 包
[root@localhost ~]# rpm –qf 系統文件名 選項: -f: 查詢系統文件屬於哪一個軟件包(file)
6)查詢軟件包所依賴的軟件包
查詢系統中和已經安裝的軟件包有依賴關係的軟件包
[root@localhost ~]# rpm –qR 包名 選項: -R: 查詢軟件包的依賴性(requires) 能夠查詢沒有安裝的軟件包的依賴性嗎?加「-p」選項便可。例如,查看一下尚未安裝的 httpd 軟件包的依賴包,能夠執行以下命令: [root@localhost ~]# rpm -qpR /mnt/cdrom/Packages/httpd-2.2.15-53.el6.centos.x86_64
1)基本命令
[root@localhost ~]# rpm –Va 選項: -Va 校驗本機已經安裝的全部軟件包 [root@localhost ~]# rpm –V 已安裝的包名 選項: -V 校驗指定 RPM 包中的文件(verify) [root@localhost ~]# rpm –Vf 系統文件名 選項: -Vf 校驗某個系統文件是否被修改
2)驗證舉例
[root@localhost ~]# rpm -V httpd S.5....T. c /etc/httpd/conf/httpd.conf 驗證內容 文件類型 最後是文件名。 那麼驗證內容中的 8 個信息的具體內容 以下: S 文件大小是否改變 M 文件的類型或文件的權限(rwx)是否被改變 5 文件 MD5 校驗和是否改變(能夠當作文件內容是否改變) D 設備的主從代碼是否改變 L 文件路徑是否改變 U 文件的屬主(全部者)是否改變 G 文件的屬組是否改變 T 文件的修改時間是否改變 apache 配置文件的文件類型是 c,那麼還有哪些文件類型呢? c 配置文件(config file) d 普通文檔(documentation) g 「鬼」文件(ghost file),不多見,就是該文件不該該被這個 RPM 包 l 受權文件(license file) r 描述文件(read me)
上面的校驗方法只能對已經安裝的 RPM 包中的文件進行校驗,可是若是 RPM 包自己就被動過手腳, 那麼校驗就不能解決問題了。
咱們就必須使用數字證書驗證了。首先必須找到原廠的公鑰文件,而後進行安裝 ,再安裝 RPM 包是。
用rpm命令安裝軟件時會去提取 RPM 包中的證書信息,而後和本機安裝的原廠證書進行驗證,若是驗證經過,則容許安裝;若是驗證不經過,則不容許安裝並警告。
1)數字證書位置
[root@love2 yum.repos.d]# ll /mnt/cdrom/RPM-GPG-KEY-CentOS-6 -r--r--r-- 2 root root 1706 11月 27 2013 /mnt/cdrom/RPM-GPG-KEY-CentOS-6
2)數字證書導入
[root@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 選項: --import 導入數字證書 #查詢已經安裝的證書 [root@love2 yum.repos.d]# rpm -qa | grep gpg-pubkey gpg-pubkey-c105b9de-4e0fd3a3
有時候咱們會將某些軟件的文件誤刪,因此咱們能夠經過命令提取特定文件。
1)使用命令 rpm2cpio+ cpio
[root@localhost ~]# rpm2cpio 包全名 | cpio -iduv .文件絕對路徑 rpm2cpio 將 rpm 包轉換爲 cpio 格式的命令 cpio 是一個標準工具,它用於建立軟件檔案文件和從檔案文件中提取文件 cpio還原時,命令解釋。 -i:copy-in 模式,還原 -v:顯示還原過程 -c:使用較新的 portable format 存儲方式 -d:還原時自動新建目錄 -u:自動使用較新的文件覆蓋較舊的文件
2)示例、假如咱們不當心 將位於 /bin/find 刪掉了。咱們能夠經過如下步驟恢復
一、先查出該命令對應的軟件包名 [root@love2 ~]# rpm -qf /bin/find findutils-4.4.2-9.el6.x86_64 二、提取文件到當前文件下 [root@love2 ~]# rpm2cpio /mnt/cdrom/Packages/findutils-4.4.2-9.el6.x86_64.rpm | cpio -iduv ./bin/find 三、將find命令移動到/bin目錄下 [root@love2 ~]# mv bin/find /bin/
yum 源配置文件保存在/etc/yum.repos.d/目錄中,文件的擴展名必定是「.repo」。也就是說, yum 源配置文件只要擴展名是「.repo」就會生效。
[root@love2 ~]# ls /etc/yum.repos.d/ bak CentOS-Media.repo #因爲我配置了光盤yum源,因此將其餘 .repo 文件移動了一下。
配置文件詳情以下
[base]:容器名稱,必定要放在[]中 name:容器說明,能夠本身隨便寫。 mirrorlist:鏡像站點,這個能夠註釋掉。 baseurl:咱們的 yum 源服務器的地址。默認是 CentOS 官方的 yum 源服務器,是可使用的。 若是你以爲慢,則能夠改爲你喜歡的 yum 源地址。 enabled:此容器是否生效,若是不寫或寫成 enabled=1 則表示此容器生效,寫成 enabled=0 則表示此容器不生效。 gpgcheck:若是爲 1 則表示 RPM 的數字證書生效;若是爲 0 則表示 RPM 的數字證書不生效 gpgkey:數字證書的公鑰文件保存位置。不用修改。
第一步:放入 CentOS 安裝光盤,並掛載光盤到指定位置
[root@love2 ~]# mkdir /mnt/cdrom # 建立 cdrom 目錄,做爲光盤的掛載點 [root@localhost ~]# mount /dev/sr0 /mnt/cdrom/ #掛載
第二步:修改其餘幾個 yum 源配置文件的擴展名,讓它們失效,由於只有擴展名是「*.repo」的 文件才能做爲 yum 源配置文件。固然你也能夠將不須要的移動到另外的目錄。
第三步:修改光盤 yum 源配置文件 CentOS-Media.repo,參照如下方法修改:
[c6-media] name=CentOS-$releasever - Media baseurl=file:///mnt/cdrom/ # file:///media/cdrom/ # file:///media/cdrecorder/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
第四步 清除原先yum緩存,而且創建新的緩存
yum clean all && yum makecache
1)查詢
查詢 yum 源服務器上全部可安裝的軟件包列表 [root@love2 bak]# yum list 查詢 yum 源服務器中是否包含某個軟件包。 [root@love2 bak]# yum list bind 已加載插件:fastestmirror, security Loading mirror speeds from cached hostfile 可安裝的軟件包 bind.x86_64 32:9.8.2-0.47.rc1.el6 c6-media 搜索 yum 源服務器上全部和關鍵字相關的軟件包 [root@love2 bak]# yum search apache #搜索包含有apache關鍵字軟件包 已加載插件:fastestmirror, security Loading mirror speeds from cached hostfile ======================================================== N/S Matched: apache ======================================================== ant-apache-bcel.x86_64 : Optional apache bcel tasks for ant ant-apache-bsf.x86_64 : Optional apache bsf tasks for ant 查詢指定軟件包的信息 [root@love2 bak]# yum info bind 已加載插件:fastestmirror, security Loading mirror speeds from cached hostfile 可安裝的軟件包 Name : bind Arch : x86_64 Epoch : 32 Version : 9.8.2 Release : 0.47.rc1.el6 Size : 4.0 M Repo : c6-media ...
2)安裝
[root@love2 yum.repos.d]# yum -y install 包名 選項: install 安裝 -y 自動回答 yes。若是不加-y,那麼每一個安裝的軟件都須要手工回答 yes
3)升級
[root@love2 yum.repos.d]# yum -y update 包名 # 升級指定的軟件包 選項: update: 升級 -y: 自動回答 yes [root@love2 yum.repos.d]# yum -y update # 升級本機全部軟件包
4)卸載
[root@love2 yum.repos.d]# yum remove 包名 # 卸載指定的軟件包
1)查詢能夠安裝的軟件組
[root@love2 ~]# yum grouplist # 列出全部可用的軟件組列表
2)查詢軟件組內包含的軟件
[root@love2 ~]# yum groupinfo 軟件組名 # 列出軟件組中包含的軟件 例: [root@love2 bak]# yum groupinfo Emacs 已加載插件:fastestmirror, security 設置組進程 Loading mirror speeds from cached hostfile 組:Emacs 描述:GNU Emacs 可擴展、可自定義的文本編輯器。 必要的軟件包: emacs 可選的軟件包: ctags-etags emacs-auctex emacs-gnuplot emacs-nox
3)安裝軟件組
[root@love2 ~]# yum groupinstall 軟件組名 # 安裝指定軟件組,組名能夠由 grouplist 查詢出來
4)移除軟件組
[root@love2 ~]# yum groupremove 軟件組名 # 卸載指定軟件組