示例:html
[root@localhost ~]# vim hello.c #include <stdio.h> int main(void) { printf("hello world\n"); } ``` [root@localhost ~]# gcc -c hello.c #-c 生成".o"頭文件。這裏會生成hello.o頭文件,可是不會生成執行文件 [root@localhost ~]# gcc -o hello hello.c #-o 生成執行文件,並指定執行文件名。這裏生成的hello就是可執行文件 [root@localhost ~]# ./hello hello world #執行hello文件
卸載方便node
軟件包a------------->軟件包b-------------->軟件包cweb
httpd-2.2.15-15.el6.centos.1.i686.rpm
shell
httpd | 軟件包名 |
---|---|
2.2.15 | 軟件版本 |
15 | 軟件發佈的次數 |
el6 | 軟件發行商。el6是Redhat公司發佈,適合RHEL6.x(RedHat Enterprise Linux)和CentOS6.x下使用 |
i686 | 適合的硬件平臺。RPM包能夠在不一樣的硬件平臺安裝,選擇適合不一樣CPU的軟件版本,能夠最大化的發揮CPU性能,因此出現了所謂的i386(386以上計算機均可以安裝)、i586(586以上的計算機均可以安裝)、i686(奔騰II以上計算機均可以安裝,目前全部的CPU都是奔騰II以上,因此這個軟件版本居多)、x86_64(64位CPU能夠安裝)和noarch(沒有硬件限制)等文件名。 |
rpm | rpm包的擴展名。Linux下文件不是靠擴展名區分文件類型,也就是Linux中擴展名沒有任何含義。若是RPM包不用「.rpm」做爲擴展名,系統能夠正確識別沒有問題,但是管理員很難識別這個是什麼樣的軟件。 |
包全名:若是操做的是未安裝軟件包,則使用包全名,並且須要注意絕對路徑數據庫
包名:若是操做的是已經安裝的軟件包,則使用包名便可,系統會生產RPM包的數據庫(/var/lib/rpm/),並且能夠在任意路徑下操做apache
RPM包默認安裝路徑 | 釋義 |
---|---|
/etc/ | 配置文件安裝目錄 |
/usr/bin/ | 可執行的命令安裝目錄 |
/usr/lib | 程序所使用的的函數庫保存位置 |
/usr/share/doc | 基本的軟件使用手冊保存位置 |
/usr/share/man | 幫助文件保存位置 |
安裝命令vim
rpm -ivh 包全名 #注意必定是包全名。若是跟包全名的命令要注意路徑,由於軟件包在光盤當中 選項: -i install安裝(install) -v 顯示更詳細的信息(verbose) -h 打印#顯示安裝進度(hash)
服務啓動centos
[root@localhost ~]#service 服務名 start|stop|restart|status #參數: # start: 啓動服務 # stop: 中止服務 # restart:重啓服務 # status: 查看服務狀態 [root@localhost ~]#systemctl restart httpd #這個命令也行
rpm包升級服務器
[root@localhost ~]#rpm -Uvh 包全名 #選項: #-U(大寫) 升級安裝,若是沒有安裝過,系統直接安裝。若是安裝過的版本較舊,則升級到新版本(upgrade) [root@localhost ~]#rpm -Fvh 包全名 #選項: #-F(大寫) 升級安裝,若是沒有安裝過,則不會安裝。必須安裝有較舊版本,纔會升級(freshen)
卸載網絡
[root@localhost ~]#rpm -e 包名 #選項: # --nodeps 不檢測依賴性 # -e 卸載
查詢
[root@localhost ~]#rpm -q 包名 #選項: # -q 查詢(query)
[root@localhost ~]#rpm -qa #選項: # -a 全部(all) #固然,也能夠用管道符來查看所需的內容,好比: [root@localhost ~]#rpm -qa | grep httpd #你會發現,使用「rpm -q 包名」只能查看這個包是否安裝,可是使用「rpm -qa | grep 包名」會把包含名稱的全部包都列出來。
#1.查詢已安裝軟件包的詳細信息 [root@localhost ~]#rpm -qi 包名 #選項: # -i 查詢軟件信息(information) #2.查詢尚未安裝的軟件包的詳細 [root@localhost ~]#rpm -qip 包全名 選項: # -p 查詢沒有安裝的軟件包(package)
#1.查詢已安裝軟件包中的文件列表和安裝的完整目錄,命令格式以下: [root@localhost ~]#rpm -ql 包全名 #選項: # -l 列出軟件包中全部的文件列表和軟件所安裝的目錄(list) #2.查詢沒有安裝的軟件包中的文件列表和打算安裝的位置 [root@localhost ~]#rpm -qlp 包全名 #選項: # -p 查詢沒有安裝的軟件包信息(package)
既然知道每一個RPM包中的文件安裝位置,那麼也能夠查詢系統文件屬於哪一個RPM包;不過須要注意的是,手工創建的文件是不能查詢的,由於這些文件不是經過RPM包安裝的,固然不能反向查詢它屬於哪一個RPM包。命令格式以下:
[root@localhost ~]#rpm -qf 系統文件名 #選項: # -f 查詢系統文件屬於哪一個軟件包(file)
#1.查詢系統中和已安裝的軟件包所依賴的軟件包,命令格式以下: [root@localhost ~]#rpm -qR 包名 #選項: # -R 查詢軟件包的依賴性(requires) #2.查詢沒有安裝的軟件包依賴性,命令格式以下: [root@localhost ~]#rpm -qRp 包名 #選項: # -p 查詢沒有安裝的軟件包信息(package)
驗證
[root@localhost ~]#rpm -Va #選項: # -Va 校驗本機已經安裝的全部軟件包 [root@localhost ~]#rpm -V 已安裝的包名 #選項: # -V 校驗指定RPM包中的文件(verify) [root@localhost ~]#rpm -Vf 系統文件名 #選項: # -Vf 校驗某個系統文件是否被修改
數字證書
若是RPM包自己被動過,那麼校驗就不能解決問題了。咱們就必須使用數字證書驗證。
數字證書有以下特色:
yum源配置文件保存在/etc/yum.repos.d/目錄中,文件的擴展名必定是「.repo」。也就是說,yum源配置文件只要擴展名是「\.repo」就會生效。
[root@localhost ~]# vim /etc/yum.repos.d/backup/CentOS-Base.repo [base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
在CentOS-Base.repo文件中有5個yum源容器,這裏只列出了base容器,其餘容器和base容器相似。咱們解釋一下base容器
[root@localhost ~]#mkdir /mnt/cdrom #建立cdrom目錄,做爲光盤的掛載點 [root@localhost ~]#mount /dev/cdrom /mnt/cdrom/ mount: block device /dev/sr0 is write-protected mounting read-only #掛載光盤到/mnt/cdrom目錄下
[root@localhost ~]#cd /etc/yum.repos.d/ [root@localhost yum.repos.d]#mv CentOS-Base.repo /backup/CentOS-Base.repo [root@localhost yum.repos.d]#mv CentOS-Debuginfo.repo /backup/CentOS-Debuginfo.repo [root@localhost yum.repos.d]#mv CentOS-Vault.repo /backup/CentOS-Vault.repo
[root@localhost ~]# vim /etc/yum.repos.d/backup/CentOS-Media.repo [c6-media] name=CentOS-$releasever - Media baseurl=file:///media/CentOS_6.6_Final/ file:///media/cdrom/ file:///media/cdrecorder/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
查詢
[root@localhost yum.repos.d]#yum list #查詢全部可用軟件包列表
[root@localhost yum.repos.d]#yum list 包名 #查詢單個軟件包 #例如: [root@localhost yum.repos.d]# yum list httpd Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile Installed Packages httpd.x86_64 2.2.15-39.el6.centos @anaconda-CentOS-201410241409.x86_64/6.6
[root@localhost yum.repos.d]# yum search 關鍵字 #搜索服務器上全部和關鍵字相關的軟件包 #例如: [root@localhost yum.repos.d]# yum search ifconfig Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile ======================================================================== Matched: ifconfig ========================================================================= net-tools.x86_64 : Basic networking tools
yum search搜索能夠用於肯定某個軟件在那個相關包當中。此例子能夠肯定「ifconfig」命令須要安裝「net-tools」包
[root@localhost yum.repos.d]#yum info httpd #查詢samba軟件包的信息 Installed Packages Name : httpd Arch : x86_64 Version : 2.2.15 Release : 39.el6.centos Size : 2.9 M Repo : installed From repo : anaconda-CentOS-201410241409.x86_64 Summary : Apache HTTP Server URL : http://httpd.apache.org/ License : ASL 2.0 Description : The Apache HTTP Server is a powerful, efficient, and extensible : web server.
[root@localhost yum.repos.d]#yum -y install 包名 #選項: # install 安裝 # -y 自動回答yes,若是不加-y,那麼每一個安裝的軟件都須要手工回答yes #例如: [root@localhost yum.repos.d]# yum -y install gcc #使用yum自動安裝gcc
[root@localhost yum.repos.d]# yum -y update 包名 #升級指定的軟件包 #選項: # update 升級 # -y 自動回答yes
注意:在進行升級操做時,yum源服務器中軟件包的版本比本地安裝的軟件包的版本高。
[root@localhost yum.repos.d]# yum -y update #升級本機全部軟件包 #這條命令會升級系統中全部的軟件包,不過咱們的生產服務器是穩定優先的,因此這種全系統升級的狀況並很少見。
除非您肯定卸載的軟件依賴包不會對系統產生影響,不然不要執行yum的卸載,由於頗有可能在卸載軟件包的同時卸載的依賴包也是重要的系統文件,這就有可能致使系統崩潰。卸載命令以下:
[root@localhost yum.repos.d]# yum remove 包名 #卸載指定的軟件包 #例如: [root@localhost yum.repos.d]# yum remove samba #卸載samba軟件包
[root@localhost yum.repos.d]# yum grouplist #列出全部可用的軟件組列表
[root@localhost yum.repos.d]# yum groupinfo 軟件組名 #列出軟件組中包含的軟件 #例如: [root@localhost yum.repos.d]# yum groupinfo "Web Server" #查詢軟件組「WebServer」中包含的軟件
[root@localhost yum.repos.d]# yum groupinstall 軟件組名 #安裝指定軟件組,組名能夠由grouplist查詢出來 #例如: [root@localhost ~]#yum groupinstall "Web Server" #安裝網頁服務軟件組
[root@localhost ~]#yum groupremove 軟件組名 #卸載指定軟件組
1.1 應該選擇哪一種軟件包
1.2 源碼包從哪兒來
rpm包是光盤中直接包含的,因此不須要用戶單獨下載。而源碼包是經過官方網站下載的,若是須要使用,是須要單獨下載的。
1.3 是否能夠在系統中即安裝rpm包的Apache,又安裝源碼包的Apache?
答案是能夠,由於兩種安裝方法安裝的Apache,安裝位置是不同的,例如:
配置文件: /etc/httpd/conf/httpd.conf 網頁位置: /var/www/html/ 日誌文件: /var/log/httpd/ 啓動方法: 1)service httpd restart 2)/etc/rc.d/init.d/httpd restart
配置文件: /usr/local/apache2/conf/httpd.conf 網頁位置: /usr/local/apache2/htdocs/ 日誌文件: /usr/local/apache2/logs/ 啓動方法: /usr/local/apache2/bin/apachectl start
1) 下載軟件包
2) 解壓縮
3) 進入解壓目錄
4) ./configure 編譯前準備
這一步主要有三個做用:
須要注意的是,configure不是系統命令,而是源碼包軟件自帶的一個腳本程序,因此必須採用"./configure"方式執行(「./」表明在當前目錄下)
5). make 編譯
make會調用gcc編譯器,並讀取Makefile文件中的信息進行系統軟件編譯。編譯的目的就是把源碼程序轉變爲能被Linux識別的可執行文件,這些可執行文件保存在當前目錄下。編譯過程較爲耗時,須要有足夠的耐心。
6). make clean 清空編譯內容
若是在「./configure」或「make」編譯中報錯,那麼咱們在從新執行命令前必定要記得執行make clean命令,它會清空Makefile文件或編譯產生的「.o」頭文件。
7). make install 編譯安裝
這纔是真正的安裝過程,通常會寫清楚程序的安裝位置。若是忘記指定安裝目錄,則能夠把命令的執行過程保存下來,以備未來刪除使用。
源碼包沒有刪除命令,若是須要刪除,直接刪除安裝目錄便可。
[root@localhost ~]#diff 選項 old new #比較old和new文件的不一樣 #選項: # -a 將任何文檔當作文本文檔處理 # -b 忽略空格形成的不一樣 # -B 忽略空白行形成的不一樣 # -I 忽略大小寫形成的不一樣 # -N 當比較兩個目錄時,若是某個文件只在一個目錄中,則在另外一個目錄中視做空文件 # -r 當比較目錄時,遞歸比較子目錄 # -u 使用同一的輸出格式
例如:
[root@localhost ~]#mkdir test #創建測試目錄 [root@localhost ~]#cd test #進入測試目錄 [root@localhost test]# vi old.txt our school is atguigu #文件old.txt,爲了一會輸出便於比較,每行分開 [root@localhost test]# vi new.txt our school is atguigu in Beijing #文件new.txt #比較下兩個文件的不一樣,並生成補丁文件「txt.patch」,命令以下: [root@localhost test]# diff -Naur /root/old.txt /root/test/new.txt > txt.patch [root@localhost test]# vi txt.patch --- /root/old.txt 1969-12-31 16:00:00.000000000 +0800 +++ /root/test/new.txt 2019-11-20 13:10:25.539978995 +0800 @@ -2,3 +2,5 @@ our school is atguigu +in +Beijing #後一個文件比前一個文件多兩行(+表示)
[root@localhost test]# patch -pn < 補丁文件 #按照補丁文件進行更新 #選項: # -pn n爲數字。表明按照補丁文件中的路徑,指定更新文件的位置。(在補丁文件目錄中取消n級目錄) #更新「old.txt」文件,命令以下: [root@localhost test]# patch -p3 < txt.patch patching file old.txt [root@localhost test]# cat old.txt our school is atguigu in Beijing #多出來了in Beijing兩行