Linux下的軟件安裝

一、概述php

    linux中的軟件安裝一共有三種,相對於Windows的簡易操做,對於linux的使用者來講,軟件安裝也是一門學問。linux中的軟件包一共有這麼幾種:
html

        1)、RPM:即RedHat Package Manager(RPM軟件包管理器)的簡寫,執行二進制文件的安裝,一個完整的RPM包應該包括可執行文件,man手冊,庫文件,頭文件。RPM軟件包的存儲格式以下:前端

wKioL1Wo9Pjgo0rCAAB6dpwPFOI661.jpg

    其中應用平臺包括32位系統的i386,i586,i686,64位系統的x86-64。
mysql

                

                2)、tar:這是一種壓縮後的歸檔包,常見的有gzip和bzip2壓縮的包,格式以下:linux

wKioL1Wo8sKAM8PHAAA9lIrlqnY765.jpg

wKioL1Wo8y_y1DIVAABWBR_Een0564.jpg


二、linux中的軟件安裝方式web

    1)、RPM:使用RPM軟件管理工具安裝應用軟件,優勢是簡單易操做,能夠快速的安裝需求的軟件,而且可以進行軟件包的相關查詢。可是缺點也很明顯,就是沒法自主解決軟件包的依賴關係,對於一些較複雜的軟件安裝,使用這種方式無疑會增長管理員的負擔,並且顯得繁瑣。
sql

    2)、yum全稱爲 (Yellow dog Updater, Modified),是一個在Fedora和RedHat以及CentOS中的Shell前端軟件包管理器。基於RPM包管理,可以從指定的服務器自動下載RPM包而且安裝,能夠自動處理依賴性關係,而且一次安裝全部依賴的軟件包,無須繁瑣地一次次下載、安裝。shell

        3)、源代碼:一般在安裝linux操做系統的光盤上都有集成一些基礎的軟件包,不過光盤上的軟件包的版本一般都比較低,企業環境或者一些大型服務站須要最新的能夠控制管理的軟件程序,只能去下載最新的軟件包,這個時候就只能使用源碼安裝了。源碼安裝的優勢是使用的軟件包通常都是最新的版本,而且在安裝過程當中能夠自定義設置,方便管理。
apache


三、案例實施centos

            系統環境:CentOS6.5-32bit

        1)、rpm安裝的基本操做

                 安裝前檢測軟件包是否已被安裝過:

[root@fcy Packages]# rpm -qa httpd         #-q表示查詢   -a表示全部

        若是安裝過則會這樣顯示:

[root@fcy Packages]# rpm -qa man
man-1.6f-32.el6.i686

                若是安裝前想知道即將安裝的軟件包都包含什麼內容,能夠以下查詢:

[root@fcy Packages]# rpm -qlp httpd-tools-2.2.15-29.el6.centos.i686.rpm    #-p表示提供的服務       -l表示list列表
/usr/bin/ab
/usr/bin/htdbm
/usr/bin/htdigest
/usr/bin/htpasswd
/usr/bin/logresolve
/usr/share/doc/httpd-tools-2.2.15
/usr/share/doc/httpd-tools-2.2.15/LICENSE
/usr/share/man/man1/ab.1.gz
/usr/share/man/man1/htdbm.1.gz
/usr/share/man/man1/htdigest.1.gz
/usr/share/man/man1/htpasswd.1.gz
/usr/share/man/man1/logresolve.1.gz

         安裝rpm包(-i表示install,-v表示詳細信息,-h表示顯示進度條):

[root@fcy Packages]# rpm -ivh setup-2.8.14-20.el6_4.1.noarch.rpm 
Preparing...                ########################################### [100%]
	package setup-2.8.14-20.el6_4.1.noarch is already installe

        若是想查詢安裝過的軟件包都提供哪些服務,能夠這樣查詢(注意與沒安裝過的包的查詢方式不一樣,安裝過的包想要查詢只須要填上軟件名稱,而沒有安裝過的軟件查詢則須要輸入完整的軟件包名稱):

[root@fcy Packages]# rpm -ql man
/etc/cron.daily/makewhatis.cron
/etc/man.config
/usr/bin/apropos
/usr/bin/man
/usr/bin/man2html
/usr/bin/manpath
/usr/bin/whatis
/usr/libexec/man-cmp.sh
/usr/sbin/makewhatis
/usr/share/doc/man-1.6f
/usr/share/doc/man-1.6f/COPYING
/usr/share/doc/man-1.6f/README
/usr/share/locale/bg/LC_MESSAGES/man
/usr/share/locale/cs/LC_MESSAGES/man
......(省略若干)

        卸載軟件包:

[root@fcy Packages]# rpm -e man           #-e表示卸載軟件

        升級軟件:

rpm   -Uvh   軟件包名稱    #-U表示update
        #這種方式能夠執行兩種功能,即升級和安裝,若是你的系統沒有安裝這個包,則先執行安裝
[root@fcy Packages]# rpm -Uvh man-pages-3.22-20.el6.noarch.rpm 
Preparing...                ########################################### [100%]
   1:man-pages              ########################################### [100%]
rpm   -Fvh    軟件包名稱    #-F表示fresh
        #這種方式只執行升級功能

        若是兩個軟件包在安裝時因爲文件名稱產生衝突,能夠用以下命令:

rpm -ivh --replacefiles  軟件包名稱

        若是兩個軟件包產生衝突,可使用以下命令:

rpm -ivh --replacepkgs  軟件包名稱

        若是想查詢軟件包是否改變,能夠啓用校驗功能:

[root@fcy Packages]# rpm -V httpd   #-V表示啓用校驗  當沒有輸出信息時說明軟件包無變化

        當修改過httpd的配置文件內容後,再校驗:

[root@fcy Packages]# echo "#test" >>/etc/httpd/conf/httpd.conf
[root@fcy Packages]# rpm -V httpd
S.5....T.  c /etc/httpd/conf/httpd.conf

        能夠看到,校驗結果立刻不一樣了,其中常見的值分別表明以下:

            c-->表示config文件發生改變;

            d-->表示doc文件發生改變;

            S-->表示文件大小發生變化;

            5-->表示MD5檢驗值發生變化;

            U-->表示所屬用戶發生變化;

            T-->表示時間發生變化;

            G-->表示所屬組發生變化。


    2)、yum安裝的基本操做

        (1)本地yum源安裝

            掛載光盤並查看

[root@fcy ~]# mount /dev/cdrom /media/cdrom           #掛載光盤到/media/cdrom
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@fcy ~]# df -h                            #以易讀的方式顯示掛載信息
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        15G  1.1G   13G   8% /
tmpfs           122M     0  122M   0% /dev/shm
/dev/sda1       194M   25M  160M  14% /boot
/dev/sr0        3.6G  3.6G     0 100% /media/cdrom    #光盤掛載信息

           查看yum配置文件/etc/yum.conf

[root@fcy ~]# cat /etc/yum.conf    
[main]
cachedir=/var/cache/yum/$basearch/$releasever    #表示yum安裝時下載的安裝包的緩存目錄
keepcache=0                          #表示緩存文件存留的時間,等於0即爲安裝完成後就刪除
debuglevel=2                         #調試的等級
logfile=/var/log/yum.log             #日誌文件的存放位置
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

         查看yum源配置文件/etc/yum.repos.d/

[root@fcy ~]# ll /etc/yum.repos.d/
total 16
-rw-r--r--. 1 root root 1926 Nov 27  2013 CentOS-Base.repo    #通常用做網絡源
-rw-r--r--. 1 root root  638 Nov 27  2013 CentOS-Debuginfo.repo  
-rw-r--r--. 1 root root  630 Nov 27  2013 CentOS-Media.repo    #通常用做本地源
-rw-r--r--. 1 root root 3664 Nov 27  2013 CentOS-Vault.repo

         配置yum本地源配置文件/etc/yum.repos.d/CentOS-Media.repo(先移除網絡源文件

[c6-media]          #repo ID  即源名稱
name=CentOS-$releasever - Media            #對repo ID的描述
baseurl=/   
        file:///media/cdrom/               #yum源路徑,填入光盤的掛載點 
        file:///media/cdrecorder/
gpgcheck=1                                  #gpg校驗,等於1是開啓狀態
enabled=1                                  #yum源啓用狀態,等於1是啓用狀態
gpgkey=   #gpg校驗的文件位置

         其中對於配置文件中的baseurl,有以下幾種路徑:

        file表示本地文件,http表示web文件,ftp表示ftp服務器


          配置好本地yum源後,須要使用命令清除yum緩存:

[root@fcy ~]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: base c6-media extras updates
Cleaning up Everything
Cleaning up list of fastest mirrors

          查看啓用的yum源及可用文件:

[root@fcy yum.repos.d]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * c6-media: 
repo id                              repo name                                     status
c6-media                             CentOS-6 - Media                              4802
repolist: 4802

          查看安裝包信息:

[root@fcy ~]# yum info httpd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * c6-media: 
Installed Packages      #installed表示已安裝,未安裝顯示爲available
Name        : httpd
Arch        : i686
Version     : 2.2.15
Release     : 29.el6.centos
Size        : 2.8 M
Repo        : installed
From repo   : c6-media
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.

          查看全部的和已安裝的包:

    yum list all            #因爲信息過多,不展現
    
 [root@fcy ~]# yum list installed
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * c6-media: 
Installed Packages
ConsoleKit.i686            0.4.1-3.el6             @anaconda-CentOS-201311271240.i386/6.5
ConsoleKit-libs.i686       0.4.1-3.el6             @anaconda-CentOS-201311271240.i386/6.5
ConsoleKit-x11.i686        0.4.1-3.el6             @anaconda-CentOS-201311271240.i386/6.5
GConf2.i686                2.28.0-6.el6            @anaconda-CentOS-201311271240.i386/6.5
MAKEDEV.i686               3.24-6.el6              @anaconda-CentOS-201311271240.i386/6.5
ORBit2.i686                2.14.17-3.2.el6_3       @anaconda-CentOS-201311271240.i386/6.5
acl.i686                   2.2.49-6.el6            @anaconda-CentOS-201311271240.i386/6.5
aic94xx-firmware.noarch    30-2.el6                @anaconda-CentOS-201311271240.i386/6.5
alsa-lib.i686              1.0.22-3.el6            @anaconda-CentOS-201311271240.i386/6.5
......(省略)

         查看可用的組安裝:

[root@fcy ~]# yum grouplist
Loaded plugins: fastestmirror
Setting up Group Process
Loading mirror speeds from cached hostfile
 * c6-media: 
Installed Groups:
   E-mail server
   Fonts
   General Purpose Desktop
   Graphical Administration Tools
   Input Methods
   Legacy X Window System compatibility
   Perl Support
   Security Tools
   Web Server
Installed Language Groups:
   Chinese Support [zh]
Available Groups:
   Additional Development
   Backup Client
   Backup Server
   ......(省略)

            安裝組軟件:

[root@fcy ~]# yum groupinstall "Desktop Platform Development" -y  #-y表示不顯示交互信息
......(過程略)

            安裝軟件包:

[root@fcy yum.repos.d]# yum install mysql            #安裝mysql
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * c6-media:                                       #從repo ID爲c6-media的源上查找軟件包
Setting up Install Process
Resolving Dependencies                            #自動處理依賴關係
--> Running transaction check
---> Package mysql.i686 0:5.1.71-1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=========================================================================================
 Package           Arch             Version                   Repository            Size
=========================================================================================
Installing:
 mysql             i686             5.1.71-1.el6              c6-media             903 k

Transaction Summary
=========================================================================================
Install       1 Package(s)

Total download size: 903 k
Installed size: 2.3 M
......(過程略)

            軟件包卸載:

[root@fcy yum.repos.d]# yum remove man         #卸載軟件包man
Loaded plugins: fastestmirror
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package man.i686 0:1.6f-32.el6 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

=========================================================================================
 Package         Arch             Version                    Repository             Size
=========================================================================================
Removing:
 man             i686             1.6f-32.el6                @c6-media             377 k

Transaction Summary
=========================================================================================
Remove        1 Package(s)

            組軟件包卸載:

        yum   groupremove    組名稱

            本地軟件包安裝:

[root@fcy Packages]# yum localinstall man-1.6f-32.el6.i686.rpm --nogpgcheck -y
    #localhostinstall表示本地文件安裝   --nogpgcheck表示不進行軟件包校驗
Loaded plugins: fastestmirror
Setting up Local Package Process
Examining man-1.6f-32.el6.i686.rpm: man-1.6f-32.el6.i686
Marking man-1.6f-32.el6.i686.rpm to be installed
Loading mirror speeds from cached hostfile
 * c6-media: 
Resolving Dependencies
--> Running transaction check
---> Package man.i686 0:1.6f-32.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=========================================================================================
 Package      Arch          Version                 Repository                      Size
       ......(過程略)
Installed:
  man.i686 0:1.6f-32.el6                                                                 

Complete!


    3)、源代碼安裝(apache服務)

        拷貝所需的源代碼到/root/apache/

[root@fcy ~]# ll /root/apache/
total 6652
-rw-r--r--. 1 root root  982243 Jul 18 03:44 apr-1.4.6.tar.gz   #加強Apache可移植性的工具
-rw-r--r--. 1 root root  829779 Jul 18 03:44 apr-util-1.5.1.tar.gz  #apr的工具包
-rw-r--r--. 1 root root 4994460 Jul 18 03:44 httpd-2.4.9.tar.bz2    #Apache的源代碼

        將源代碼解壓縮到/usr/local/src

[root@fcy apache]# tar -zxvf apr-1.4.6.tar.gz -C /usr/local/src/  #-C表示指定解壓目錄
apr-1.4.6/
apr-1.4.6/shmem/
apr-1.4.6/shmem/win32/
apr-1.4.6/shmem/win32/shm.c
......(過程略)
[root@fcy apache]# tar -zxvf apr-util-1.5.1.tar.gz -C /usr/local/src/
apr-util-1.5.1/
apr-util-1.5.1/crypto/
apr-util-1.5.1/crypto/apr_passwd.c
apr-util-1.5.1/crypto/crypt_blowfish.h
apr-util-1.5.1/crypto/apr_crypto_nss.dsp
......(過程略)
[root@fcy apache]# tar -jxvf httpd-2.4.9.tar.bz2 -C /usr/local/src/
httpd-2.4.9/
httpd-2.4.9/.deps
httpd-2.4.9/.gdbinit
httpd-2.4.9/ABOUT_APACHE
httpd-2.4.9/acinclude.m4
httpd-2.4.9/ap.d
httpd-2.4.9/Apache-apr2.dsw
......(過程略)

        安裝源代碼所須要的開發環境(包括「Development tools」,「Additional Development」,

「Desktop Platform Development」):

[root@fcy apache]# yum groupinstall "Development tools" -y
......(過程略)

        因爲httpd要依賴於apr和apr-util,因此先裝apr:

[root@fcy apr-1.4.6]# ./configure --prefix=/usr/local/apr
        #生成配置文件,並指定安裝目錄爲/usr/local/apr
      ......(過程略)
[root@fcy apr-1.4.6]# make && make install    #編譯並安裝apr
......(過程略)

        源碼安裝apr-util:

[root@fcy apr-util-1.5.1]# ./configure --prefix=/usr/local/apr-util/ --with-apr=/usr/local/apr/bin/apr-1-config
     #生成配置文件,並指定安裝目錄爲/usr/local/apr-util,而且依賴於apr安裝目錄下的apr-1-config文件
[root@fcy apr-util-1.5.1]# make && make install   #編譯並安裝

        源碼安裝httpd:

[root@fcy httpd-2.4.9]# ./configure --prefix=/usr/local/apache/ --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr-util

  #到這裏會報錯,說缺乏pcre工具,用yum安裝pcre-devel便可
[root@fcy httpd-2.4.9]#make && make install    #編譯並安裝

        啓動apache服務

[root@fcy httpd-2.4.9]# find / -name httpd     #搜索apache的啓動文件
/usr/local/src/httpd-2.4.9/httpd
/usr/local/apache/bin/httpd
[root@fcy httpd-2.4.9]# /usr/local/apache/bin/httpd -k start
AH00557: httpd: apr_sockaddr_info_get() failed for fcy.com.cn
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message

        添加apache環境變量(/etc/profile)

wKiom1WqGQji_BLrAACL2f-ACSM011.jpg        刷新環境變量,並測試:

[root@fcy httpd-2.4.9]# source /etc/profile          #執行腳本
[root@fcy httpd-2.4.9]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/apache/bin                                                  #已經添加到環境變量中

        再啓動Apache服務,此時因爲變量路徑已被添加到系統變量中,能夠直接執行

[root@fcy httpd-2.4.9]# httpd -k start            #不用再輸入絕對路徑也能夠執行
AH00557: httpd: apr_sockaddr_info_get() failed for fcy.com.cn
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message
httpd (pid 30667) already running

        編寫apache控制腳本(/etc/init.d/httpd):

#!/bin/bash                                        #指定腳本語言類型爲shell
prog=/usr/local/apache/bin/apachectl               #定義變量prog指向apache啓動程序
lockfile=/var/lock/subsys/httpd                    #指定鎖文件目錄

start(){                                           #定義函數start
	if [ -e $lockfile ]; then                  #判斷鎖文件是否存在
	    echo "the apache server is started"    #若是存在則提示服務已啓動
	else
	echo -n  "the apache server is starting......"  #不然提示啓動過程
	                                                #echo的-n參數表示顯示信息不換行
	   sleep 1                                       #進程等待一秒
	$prog -k start   &>/dev/null         #將啓動時的警告信息放進垃圾桶(/dev/null)
	  [ $? -eq 0 ] && echo -e [ "\033[32m OK \033[0m" ] && touch $lockfile || echo -e [ "\033[31m fail \033[0m" ]
   #若是啓動成功則顯示OK並建立鎖文件,不然輸出fail
   #echo的-e參數表示指定輸出文本的顏色,引號內爲顏色顯示的格式,顏色數值在/etc/DIR_color
	fi                                                #函數結尾
}
stop(){
	if [ ! -e $lockfile ]; then
	   echo "the apache server is stoped"
	else
	   echo "the apache server is stoping......"
	   sleep 1
	   $prog -k stop   &>/dev/null
	   [ $? -eq 0 ] && echo -e [ "\033[32m OK \033[0m" ] && rm -rf $lockfile || echo -e [ "\033[31m fail \033[0m" ]
	fi
}
restart(){
	stop
	start
}
case "$1" in                                             #表示啓動命令的參數個數
	start)                                            #若是參數爲start則調用start函數
	start
	;;                                                #調用結束

	stop)                                            #若是參數爲stop則調用stop函數
	stop
	;;                                                #調用結束

	restart)                           #若是參數爲restart則先調用stop再調用start
	stop
	start
	;;                                #調用結束

	*)                     #若是輸入的參數不在定義的函數中,則顯示可調用的函數名稱
	echo "USAGE:{start|stop|restart}"
esac                                        #腳本結束提示符

        測試apache服務控制腳本

wKioL1WqQoeyeLkOAAGkKJ3GOG4699.jpg

        查看apache進程和端口號:

[root@fcy init.d]# netstat -tupln |grep httpd
    #-t表示tcp -u表示udp  -p表示給予協議  -l表示列表顯示  -n表示已數字形式顯示 
tcp        0      0 :::80                       :::*                        LISTEN      30952/httpd
相關文章
相關標籤/搜索