軟件包管理、自建yum源與LAMP架構的自動編譯安裝

  • 軟件包管理

    CentOS采用RedHat開發的rpm包管理器管理應用程序包。rpm包是由二進制可執行程序、庫、配置文件、幫助文件等組成,支持安裝、卸載、查詢、升級、降級、校驗等操作。

    從組成結構上,rpm包由文件清單、安裝和卸載時運行的腳本構成。

    包管理器有其自帶的公共數據庫。其數據包括:程序包的名稱、版本、依賴關系,功能說明,及各個文件的路徑及校驗碼信息等。存放于/var/lib/rpm路徑下,由多個庫組成。

  • 包管理命令RPM

    命令范式: rpm [options] [package_file]

    安裝: rpm {-i|–install} [install-options]  package_file

    通用選項:

    -v 詳細信息

    -vv 更詳細輸出(非常詳細,執行了哪些腳本都有)

     [install-options]:

    -h hash marks輸出進度條; 每個#表示2%的進度.

    –test 測試安裝,并不安裝.可以用于檢測沖突, 依賴關系等.

    –nodeps 忽略依賴關系. 不建議.

    –replacepkgs 重裝.可覆蓋配置文件重裝包, 用于反悔配置文件改錯的情況.

   注意:rpm包會自帶腳本(制作包用),共四類(–noscripts跳過):

     1)preinstall 安裝前腳本, %pre來標記, –nopre跳過

     2)postinstall 安裝后腳本, %post來標記 –nopost跳過

     3)preunistall 卸載過程真正開始執行之前運行的腳本, %preun –nopreun

     4)postuninstall卸載過程后運行腳本, %postun –nopostun

      –nosignature 不做簽名檢查, 不做來源合法性

      –nodigest 不檢查包完整信息

  升級:

    rpm {-U|–install} [install-options]  package_file 可理解為安裝的ixx替換為Uxx.

    rpm {-F|–install} [install-options]  package_file -Fvh

     -U 升級或安裝

     -F 只升級.無老包不執行安裝.

    –oldpackage 降級操作

    –force 強制升級.忽略依賴關系等產生的問題.

  注意:

    1) 不要對內核做升級操作,因為可能需要重啟, 還會帶來軟件版本不兼容問題;而Linux支持多內核版本共存, 故可直接安裝新版本內核

    2) 如果原包的配置文件安裝后改過, 升級時, 新版本的同配置文件不會覆蓋原有的,而是把新的配置文件重命名后給出.一般是filename.rpmnew.

  卸載:

rpm {-e | –erase} [–allmatches] [–nodeps] [–test] package_name

 –allmatches 卸載所有匹配指定名稱的程序包各版本.

 –nodeps 忽略依賴關系

 –test 測試模式

  查詢:

rpm {-q| –query} [select-options] [query-options]

   [select-options]

    package_name 查詢指定的程序包是否已經安裝, 及版本.

    -a, –all 查詢所有已經安裝的包

    -f file 查詢指定的文件由哪個程序安裝生成的. 如rpm -qf /etc/fstab

    -p, –package packagefile 用于實現對未安裝的程序包執行查詢操作

    -whatprovides capability 查詢指定的capaility(命令,功能?)由哪個程序包提供

    -whatrequires capability 查詢指定的capaility被哪個包所依賴

   [query-options]

    –changelog 查詢rpm包的changelog(非源碼包的).

    -l,–list 程序安裝生成的所有文件列表.

    -i,–info 程序包相關的信息, 版本號, 大小,所述包組等.

    -c, –coufigfiles查詢程序提供的配置文件 如rpm -qc xxx 可以看到所有配置文件

    -d,–docfiles 查詢程序包提供的文檔

    –provides 列出程序包提供的所有CAPABILITY

    -R, –requires 查詢程序包的依賴關系

    –scripts 查看程序包自帶的腳本片段

   常用用法:

    -qi package, -qf file, -qc package, -ql package, -qd package

    -qpi -qpl -qpf….

  校驗:

    rpm {-V|–verify} [select-options] [verify-options]

     rpm -V 文件校驗可查看包安裝后, 哪些文件改過.如rpm -V dnsmasq可看到dnsmasq.conf改動了, 有用! 其提示信息:

     S 文件大小改變

     M 權限發生改變

     5digest校驗碼改變, 文件內容改變

     U 屬主改變

     G 屬組改變

     T 時間戳改變

     P capabilities改變

  包來源合法性驗證和完整性驗證:

來源合法性驗證: 獲得公鑰其實很難.這要通過CA認證.記得導入光盤根目錄下的類似:

    RPM-GPG-KEY-CentOS-Testing-7的Key就可用于驗證數據包, 不會提示NOKEY了:

     rpm –import /media/cdrom/ RPM-GPG-KEY-CentOS-Testing-7

    這樣可以在安裝時自動驗證,手動驗證: rpm -K xxx.rpm.

  數據庫重建:

    rpm管理器數據庫路徑: /var/lib/rpm/

    查詢操作: 通過此處的數據庫進行

    rpm {–initdb | –rebuilddb} [–dbpath DIRECTORY] [–root DIRECTORY]

     –initdb: 初始化數據庫, 當前無任何數據庫可初始化創建一個新的; 當前有時不執行任何操作.

     –rebuilddb: 重新構建, 通過讀取當前系統上所有已經安裝過的程序包重新創建;

  • 自建YUM源

    YUM程序支持多種渠道獲取軟件包。如本地光盤,硬盤,HTTP方式,FTP方式等,非常靈活。且支持多倉庫共存,在安裝軟件時,會下載各倉庫中版本最新的軟件。以下是三種自建YUM源的方式范例:

    本地光盤方式

   1)首先,掛載光盤/光盤鏡像到本地某目錄如/media:

   mount -r /dev/cdrom /media

   2)創建repo配置文件

    ~]#cd /etc/yum.repos.d/

   ~]#touch Local.repo

     添加如下行:

     [base]

     name=CentOS 7 Release 7.1

     baseurl=file:///media/cdrom

     enabled=1

     gpgcheck=0       

   3)之后,就可以像網絡YUM源一樣使用本地光盤源了。

  HTTP方式

   1)首先,要有從上游YUM源或光盤等渠道獲得的,完整的包目錄,將其復制到服務器本地,如/opt/yum

   2)然后,建立WEB服務器,如httpd,并配置/etc/httpd/conf/httpd.conf

    修改DocumentRoot為 "/opt/yum"

    修改ServerName為0.0.0.0    #因測試無域名,故只用IP,服務器監聽本地所有IP的80端口

   3)創建YUM倉庫

    ~]#cd /opt/yum

     ~]#createrepo ./

    命令完成后,倉庫目錄即可生成,新建了幾個bz2文件和repo.xml文件。

   4)添加倉庫

    修改Local.repo文件,添加如下行:

     [base]

     name=CentOS 7 Release 7.1

     baseurl=http://192.168.100.100/yum

     enabled=1

     gpgcheck=0  

  FTP方式

   1)首先,獲得完整的包目錄及其文件,復制到服務器本地,同上如/opt/yum

   2)新建FTP服務器,并修改配置文件,添加虛擬目錄

   3)創建YUM倉庫,細節同上

   4)添加倉庫

    修改Local.repo文件,添加如下行:

     [base]

     name=CentOS 7 Release 7.1

     baseurl=ftp://192.168.100.100/yum

     enabled=1

     gpgcheck=0  

  • LAMP網站架構的編譯安裝

 yum安裝必要工具

1、安裝編譯工具gcc gcc-c++make automake autoconf kernel-devel

2、安裝PHP所需依賴,如libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel等

yum -y install gcc gcc-c++ make cmake automake autoconf kernel-devel ncurses-devel libxml2-devel openssl-devel curl-devel libjpeg-devel libpng-devel pcre-devel libtool-libs freetype-devel gd zlib-devel file bison patch mlocate flex diffutils readline-devel glibc-devel glib2-devel bzip2-devel gettext-devel libcap-devel libmcrypt-devel

到以下網站下載所需源碼

apache:http://httpd.apache.org/

mysql:http://mysql.com/downloads/mysql/

php:http://php.net/downloads.php

phpmyadmin:http://www.phpmyadmin.net/home_page/downloads.php

  安裝 apache-2.4.9

    解壓源碼

    tar zxvf httpd-2.4.9.tar.gz

    cd /lamp/httpd-2.4.9

    編譯并安裝

    ./configure –prefix=/usr/local/apache –enable-so –with-included-apr –enable-deflate=shared –enable-expires=shared –enable-headers=shared –enable-rewrite=shared –enable-static-support

    make

    make install

    設置啟動腳本及服務

    cp build/rpm/httpd.init /etc/init.d/httpd

    chmod 755 /etc/init.d/httpd

    chkconfig –add httpd

    chkconfig httpd on

    

 安裝 mysql-5.6.12

    cd /lamp/mysql-5.6.12

    

   編譯并安裝

    cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=all -DWITH_EXTRA_CHARSETS=all -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/var/mysql/data

    

    make

    make install

   設置啟動腳本及服務cd /usr/local/mysql

    cp support-files/mysql.server /etc/init.d/mysqld

    chmod 755 /etc/init.d/mysqld

    chmod 755 scripts/mysql_install_db

    chkconfig –add mysqld

    chkconfig –level 345 mysqld on

   初始化數據庫

    scripts/mysql_install_db –user=mysql –basedir=/usr/local/mysql –datadir=/var/mysql/data

    

  安裝 php-5.5.0

    cd /lamp/php-5.5.0

    ./configure –prefix=/usr/local/php –with-apxs2=/usr/local/apache/bin/apxs –with-config-file-path=/usr/local/php/etc –with-config-file-scan-dir=/usr/local/php/etc/conf.d –with-mysql=/usr/local/mysql –with-bz2 –with-curl –with-freetype-dir –with-gd –with-gettext –with-iconv-dir –with-jpeg-dir –with-mcrypt –with-mhash –with-mysql –with-mysqli –with-openssl –with-pdo-mysql –with-pear –with-png-dir –with-zlib –enable-bcmath –enable-calendar –enable-exif –enable-fpm –with-fpm-user=www –with-fpm-group=www –enable-ftp –enable-gd-native-ttf –enable-mbstring –enable-soap –enable-sysvmsg –enable-sysvsem –enable-sysvshm –enable-zip

   配置文件修正:

    rm -rf /etc/php.ini

    ln -s /usr/local/php/etc/php.ini /etc/php.ini

   設置php-fpm服務

    cp /lamp/php-5.5.0/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

    chmod 755 /etc/init.d/php-fpm

    chkconfig –add php-fpm

    chkconfig php-fpm on

    service php-fpm start

原創文章,作者:laoluotuo,如若轉載,請注明出處:http://www.www58058.com/49129

(0)
laoluotuolaoluotuo
上一篇 2016-12-05
下一篇 2016-12-05

相關推薦

  • 高級文件系統的管理

    一、遷移分區 分區 /dev/sda6 注意同步問題  創建分區,把原先家目錄下的文件拷貝到新掛載的文件中 mkfs.ext4 /dev/sda6  mkdir /mnt/home mount /dev/sda6 /mnt/home cp -a /home/*  /mnt/home   init 1 切換單用戶模式,把…

    Linux干貨 2016-11-27
  • 關于 建立私有CA和申請證書

                               建立私有CA和申請證書            …

    系統運維 2016-09-23
  • N25_第一周博客作業

    一、計算機組成及其功能      1、CPU:          運算器:計算功能,對數據進行加工處理的部件。          控制器:負責從存儲器讀取指令,控制計算器之間的運行狀態和結果;     &nbs…

    Linux干貨 2016-12-04
  • 馬哥教育網絡班21期-第十周課程練習

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情)  a,post:加電自檢,通電搜索并檢查物理設備的狀態  b,bootsequeence(BIOS):選擇啟動順序  c,bootloader(MBR):加載主引導程序 bootloader,硬盤分區表到內存  d,加載內核kernel &nb…

    Linux干貨 2016-10-24
  • 文件查找:find命令、locate命令;Linux文件系統上的權限

    文件查找:find、locate locate:依賴事先構建的索引,是在系統空閑周期性自動進行;手動更新(updatedb);極其消耗資源;   find [option]… [查找路徑] [查找條件] [處理動作] 查找條件: 根據文件名查找: -name “文件名稱”:支持使用通配符glob(*,?,[],[…

    Linux干貨 2017-12-14
  • OpenStack之keystone

    一、什么是OpenStack    OpenStack是一種云操作系統,它控制著一個數據中心里大量的計算、存儲和網絡資源。管理員在一個web界面內通過儀表盤方便地管理,控制,授權用戶,以提供各種資源。 二、云服務分類 可分為IAAS, PAAS, SAAS等 IAAS:Infrastructure as a Service (操作系統級別…

    Linux干貨 2017-01-19
欧美性久久久久