您好,登錄后才能下訂單哦!
=
程序包管理器rpm,yum用法及apache httpd服務的自動化部署
通常來說在windows中將需要安裝的程序,程序名.exe下載下來然后點擊setup的安裝程序或直接點擊程序包,下一步下一步即可.而Linux中程序包不是exe,不同的主流發行版有著不同的程序包管理機制.比較主流的主要是rpm程序包管理器和deb程序包管理.
這里要區別:
包名(PACKAGEFILE): rpm包程序文件的全名
程序名(PACKAGENAME): rpm包不帶版本號的程序名,比如QQ而不是QQ-8.0.1.exe
rpm:RPM Package Manager
-q <程序名> 查看程序是否安裝,一般配合其他選項來查詢 -p <包名> 一般用于查看未安裝程序的信息,配合其他選項使用可用于預覽程序 -V <包名> 驗證包的來源及安全性 -K 驗證數字簽名(沒有檢測工具,默認not ok) -v 顯示詳細信息 -vv 顯示的更為詳細 -U | -F 升級程序包,會刪除舊程序包(慎用) -R 檢查包依賴關系 -ivh 安裝rpm程序包 -e 卸載程序包 -qi 查看程序包的相關信息 -ql 安裝時生成的文件 -qf 查看某個文件來自于哪個程序 -qc 查看程序生成的配置文件 --replacepkgs 覆蓋安裝,已有的保留 --replacefiles 覆蓋某個已有的文件 --ql --script 查看安裝腳本 --script 查看包中的腳本文件 --whatprovides "function" 查看某功能由那個軟件提供 --import 導入密鑰key
rpm2cpio x.rpm | cpio -tv 預覽 rpm2cpio x.rpm | cpio -d 解包
rpm管理器會將程序,安裝時建立數據庫文件用來記錄程序的信息: /var/lib/rpm, 利用rpm 命令查詢已安裝的程序時的查找依據.
程序的官方網站獲得.
官方認證的rpm源倉庫
第三方組織:fedora-epel源
幾個常用rpm包網站:http://rpm.pbone.net/
https://www.rpmfind.net自己制作,FPM:制作rpm包工具
RPM 包管理器十分強大,但是當遇到包之間存在調用,依賴關系,有時安裝一個包依賴很多包
不得不一個一個安裝,此類包的安裝效率存在缺陷,為了解決依賴性,產生了yum管理器, 并不意味著取代rpm命令,二者互為重要,yum依賴于rpm程序.
yum管理器基于c/s架構,服務端主要存rpm包及描述rpm包屬性的元數據(metadata).
客戶端配置:
/etc/yum.conf:為所有倉庫提供公共配置 /etc/yum.repos.d/*.repo:為倉庫指向服務端地址提供配置
國內的yum源:
1.阿里云yum源:http://mirrors.aliyun.com/repo/
2.網易yum源:http://mirrors.163.com/
3.搜狐yum源:http://mirrors.sohu.com/
yum- config-manager --add-repo=http://mirrors.sohu.com/centos/6.9/os/x86_64/ yum- config- manager -- disable “倉庫名 " 禁用倉庫 yum- config- manager -- enable “倉庫名 ” 啟用倉庫
yum [options] [command] [package ...] yum repolist all 顯示yum倉庫中有哪些軟件 yum list 顯示程序名 yum search 查找程序是否存在 yum install 安裝程序,同時將所依賴程序安裝 yum history 查看yum的操作歷史 yum reinstall 重新安裝,有些軟件安裝途中意外終止再安裝提示已安裝卸載提示未安裝可用此選項 yum Update 升級程序包 yum check-update 檢查可用升級 yum remove|erase 卸載軟件,不會卸載安裝時安裝的依賴包 yum provide 某個功能由哪個包提供 yum clean all 清除本地緩存,每次更改客戶端的配置文件指向地址,建議清除 yum makecache 建立本地緩存
幾個常用選項:
-- nogpgcheck: 禁止進行gpg check -y 自動回答"y" -q 靜默模式
yum操作的日志文件歷史依據: /var/log/yum.log
$arch $basearch $releasever
第三種管理軟件包的方式:源碼編譯編譯安裝,優點還可以根據平臺特性進行安裝,發揮最佳性能.
一般安裝步驟(僅僅是安裝):源代碼-- >預處理-- >編譯-- >匯編-- >鏈接-- >執行
1.解壓源碼xxx.tar.bz2 或者其他類型
2. cd 進入源碼編譯的目錄
3. ./configure --prefix=/PATH/INSTALL/ 生成MakeFile模板文件(預處理)
4. make 編譯
5. make install 編譯安裝
下面來做一下實戰,熟悉一下上面的知識.
1.分析httpd-2.2.32源碼編譯所依賴的程序(版本可能不同),將其先安裝.
(1).apr-1.5.2
(2).apr-util-1.5.4
(3).apr-iconv-1.2.1
(4).pcre-8.40 :通過測試安裝此依賴包,需要gcc,gcc-c++編譯器,前一步先安裝
2.分析完主要的依賴包,我這里是centos6版本,視情況而定可能有的不缺,先安裝依賴包.
第一個依賴包還要被第二三個依賴包所依賴所以先安裝第一個依賴包.
1.apr-1.5.2的安裝.
wget http://www-eu.apache.org/dist/apr/apr-1.5.2.tar.bz2 tar jxf apr-1.5.2.tar.bz2 #解壓依賴包 cd
apr-1.5.2.tar.bz2
./configure --prefix=/home/apache/apr
make #編譯
make instal #編譯安裝
2. apr-util的安裝
wget http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.5.4.tar.bz2
tar jxf apr-util-1.5.4.tar.bz2 #解壓依賴包
cd apr-util-1.5.4
./configure --with-apr=/home/apache/apr/ --prefix=/home/apache/apr-util
make #編譯安裝依賴包
make install
3.apr-iconv的安裝
wget
http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-iconv-1.2.1.tar.bz2
tar jxf apr-iconv-1.2.1.tar.bz2 #編譯安裝依賴包
cdapr-iconv-1.2.1
./configure --prefix=/home/apache/apr-iconv
make
make install
4.pcre-8.40的編譯安裝
在安裝他之前先將gcc和gcc-c++裝好,需要他們來編譯,我這里直接用yum來裝gcc和gcc-c++了, 如果真的沒有rpm程序,就要考慮源碼安裝這兩個編譯器了.
wget -c https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.bz2 tar jxf pcre-8.40.tar.bz2 #編譯安裝依賴包 cd pcre-8.40 ./configure --prefix=/home/apache/pcre &>/dev/null make &>/dev/null make install
3.安裝完成依賴包后開始安裝主程序httpd.
wget -c https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/httpd-2.2.32.tar.bz2 tar jxf httpd-2.2.32.tar.bz2 cd httpd-2.2.32 ./configure --prefix=/home/apache/httpd --with-apr=/home/apache/apr --sysconfdir=/etc/apache #我這里指明了安裝路徑和配置文件的路徑便于查找 make &>/dev/null #編譯安裝httpd程序 make install
4.安裝完成,激動人心的時刻啟動Apache httpd程序.
/home/apache/httpd/bin/apachectl start #httpd程序的啟動命令
5.開放Linux防火墻的80端口或者臨時直接關掉(我這里先臨時關掉).
iptables -F
6.在瀏覽器中輸入我的Linux主機ip地址,看到It works! 的字樣證明,大功告成,成功擁有了自己的網站!
#!/bin/bash # #version 0.9 # OLDPWD=$(pwd) #保存當前程序的所在路徑 echo -e "\033[31mWARNING:The operation is will be uninstall old httpd!\033[0minstalling apache site on centos6 , wating please..." echo -e "[## ]10%" rpm -qa| grep apr-util &>/dev/null && yum -y remove apr-util &>/dev/null #清除以前安裝的apr-util程序 rpm -qa| grep apr-icon &>/dev/null && yum -y remove apr-icon &>/dev/null #清除以前安裝的apr-icon程序 rpm -qa| grep apr &>/dev/null && yum -y remove apr &>/dev/null #清除以前安裝的apr程序 rpm -qa| grep httpd &>/dev/null && yum -y remove httpd &>/dev/null #清除以前安裝的httpd程序 if [ ! -e ./apr-1.5.2.tar.bz2 ];then #判斷安裝包是否存在 wget -c http://www-eu.apache.org/dist/apr/apr-1.5.2.tar.bz2 &>/dev/null fi tar jxf apr-1.5.2.tar.bz2 cd apr-1.5.2 ./configure --prefix=/home/apache/apr &>/dev/null #編譯安裝apr依賴包 make &>/dev/null make install &>/dev/null cd "$OLDPWD" echo -e "[#### ]20%" if [ ! -e ./apr-util-1.5.4.tar.bz2 ];then #判斷安裝包是否存在 wget -c http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.5.4.tar.bz2 &>/dev/null fi tar jxf apr-util-1.5.4.tar.bz2 #解壓依賴包 cd apr-util-1.5.4 #編譯安裝依賴包 ./configure --with-apr=/home/apache/apr/ --prefix=/home/apache/apr-util &>/dev/null make &>/dev/null make install &>/dev/null cd "$OLDPWD" echo -e "[###### ]30%" if [ ! -e ./apr-iconv-1.2.1.tar.bz2 ];then #編譯安裝依賴包 wget -c http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-iconv-1.2.1.tar.bz2 &>/dev/null fi tar jxf apr-iconv-1.2.1.tar.bz2 cd apr-iconv-1.2.1 ./configure --with-apr=/home/apache/apr --prefix=/home/apache/apr-iconv &>/dev/null make &>/dev/null make install &>/dev/null cd "$OLDPWD" echo -e "[######## ]40%" yum install -y gcc gcc-c++ &>/dev/null #依賴包pcre編譯安裝需要gcc和gcc-c++ if [ ! -e ./pcre-8.40.tar.bz2 ];then wget -c https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.bz2 &>/dev/null fi tar jxf pcre-8.40.tar.bz2 #編譯安裝依賴包 cd pcre-8.40 ./configure --prefix=/home/apache/pcre &>/dev/null make &>/dev/null make install &>/dev/null cd "$OLDPWD" echo -e "[############ ]60%" if [ ! -e ./httpd-2.2.32.tar.bz2 ];then wget -c https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/httpd-2.2.32.tar.bz2 &>/dev/null fi tar jxf httpd-2.2.32.tar.bz2 cd httpd-2.2.32 ./configure --prefix=/home/apache/httpd --with-apr=/app/apache/apr --sysconfdir=/etc/apache \ --with-apr-util=/app/apache/apr-util --with-pcre=/app/apache/pcre &>/dev/null make &>/dev/null #編譯安裝httpd程序 make install &>/dev/null echo -e "[####################]100% install complete" echo -e "staring site...\nEnter your IP address in browser." /home/apache/httpd/bin/apachectl start &>/dev/null #啟動apache程序 echo "apache server is installed at `date +%F-%T`,you can see /home/apache/install.log" echo -e "Install_Package: apr-1.5.2.tar.bz2 Install_Path: /home/apache/apr \n Install_Package: apr-util-1.5.4.tar.bz2 Install_Path: /home/apache/apr-util \n Install_Package: apr-iconv-1.2.1.tar.bz2 Install_Path: /home/apache/apr-iconv \n Install_Package: pcre-8.40.tar.bz2 Install_Path: /home/apache/pcre \n Install_Package: httpd-2.2.32.tar.bz2 Install_Path: /home/apache/httpd Configfile_dir: /etc/apache">>/home/apache/install.log #生成一段日志便于得知程序的安裝情況
上面的腳本程序我在 centos6 Everthing上面實現的,其他發行版未曾經過測試.近期通過miniinstall測試出現了一些問題,并做了改動.也可根據自己的情況修改安裝的路徑 及版本,這里只完成了主體功能,可能還有部分功能體驗沒有優化,可根據您的情況進行優化調整.這種方式實現的Apache server不受service httpd start的統一管理,在后面的學習中,我會繼續編寫用service命令的管理腳本.如果您是apache配置小白直接復制上面shell 代碼運行完畢就可以訪問頁面了!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。