一、rpm包管理
用法: rpm [選項…]
查詢/驗證軟件包選項:
-a, –all 查詢/驗證所有軟件包
-f, –file 查詢/驗證文件屬于的軟件包
-g, –group 查詢/驗證組中的軟件包
-p, –package 查詢/驗證一個軟件包
–pkgid query/verify package(s) with package identifier
–hdrid query/verify package(s) with header identifier
–triggeredby query the package(s) triggered by the package
–whatrequires query/verify the package(s) which require a dependency
–whatprovides 查詢/驗證提供相關依賴的軟件包
–nomanifest 不把非軟件包文件作為清單處理
查詢選項(用 -q 或 –query):
-c, –configfiles 列出所有配置文件
-d, –docfiles 列出所有程序文檔
-L, –licensefiles list all license files
–dump 轉儲基本文件信息
-l, –list 列出軟件包中的文件
–queryformat=QUERYFORMAT 使用這種格式打印信息
-s, –state 顯示列出文件的狀態
驗證選項(用 -V 或 –verify):
–nofiledigest 不驗證文件摘要
–nofiles 不驗證軟件包中文件
–nodeps 不驗證包依賴
–noscript 不執行驗證腳本
安裝/升級/擦除選項:
–allfiles 安裝全部文件,包含配置文件,否則配置文件會被跳過。
–allmatches 移除所有符合 <package> 的軟件包(如果 <package>
被指定未多個軟件包,常常會導致錯誤出現)
–badreloc 對不可重定位的軟件包重新分配文件位置
-e, –erase=<package>+ 清除 (卸載) 軟件包
–excludedocs 不安裝程序文檔
–excludepath=<path> 略過以 <path> 開頭的文件
–force –replacepkgs –replacefiles 的縮寫
-F, –freshen=<packagefile>+ 如果軟件包已經安裝,升級軟件包
-h, –hash (和 -v 一起使用效果更好),以#顯示程序包管理
執行進度;每個#表示2%的進度
–ignorearch 不驗證軟件包架構
–ignoreos 不驗證軟件包操作系統
–ignoresize 在安裝前不檢查磁盤空間
-i, –install 安裝軟件包
–justdb 更新數據庫,但不修改文件系統
–nodeps 不驗證軟件包依賴
–nofiledigest 不驗證文件摘要
–nocontexts 不安裝文件的安全上下文
–noorder 不對軟件包安裝重新排序以滿足依賴關系
–noscripts 不執行軟件包腳本
–notriggers 不執行本軟件包觸發的任何腳本
–nocollections 請不要執行任何動作集
–oldpackage 更新到軟件包的舊版本(帶 –force
自動完成這一功能)
–percent 安裝軟件包時打印百分比
–prefix=<dir> 如果可重定位,便把軟件包重定位到 <dir>
–relocate=<old>=<new> 將文件從 <old> 重定位到 <new>
–replacefiles 忽略軟件包之間的沖突的文件
–replacepkgs 如果軟件包已經有了,重新安裝軟件包
–test 不真正安裝,只是判斷下是否能安裝
-U, –upgrade=<packagefile>+ 升級軟件包
所有 rpm 模式和可執行文件的通用選項:
-D, –define=“MACRO EXPR” 定義值為 EXPR 的 MACRO
–undefine=MACRO undefine MACRO
-E, –eval=“EXPR” 打印 EXPR 的宏展開
–macros=<FILE:…> 從文件 <FILE:…> 讀取宏,不使用默認文件
–nodigest 不校驗軟件包的摘要
–nosignature 不驗證軟件包簽名
–rcfile=<FILE:…> 從文件 <FILE:…> 讀取宏,不使用默認文件
-r, –root=ROOT 使用 ROOT 作為頂級目錄 (default: "/")
–dbpath=DIRECTORY 使用 DIRECTORY 目錄中的數據庫
–querytags 顯示已知的查詢標簽
–showrc 顯示最終的 rpmrc 和宏配置
–quiet 提供更少的詳細信息輸出
-v, –verbose 提供更多的詳細信息輸出
–version 打印使用的 rpm 版本號
最常用到的選項是:rpm -ivh PACKAGE_FILE
最常見rpm包的地方就是我們的centos安裝光盤,這里我掛載一個安裝光盤并進入到其中
其中的Packages文件夾中就存放這非常多的rpm包
我們先導入光盤中的公鑰,這樣可以保證rpm包的合法性
再新建數據庫,方便rpm包的安裝
安裝一個rmp包試試
因為包與包之間存在依賴性,所以必須手動解決依賴性或忽略依賴性,這是rpm工具的弱點,所以有了yum作為rpm的補充,后面會降到yum,這里我們忽略依賴性安裝
將剛才安裝的包卸載掉,選項為-e
二、yum源管理
yum是對rpm的補充,因為rpm工具無法自動解決安裝包的依賴問題,而yum很好的解決了這個問題
yum源的配置文件:
/etc/yum.conf:為所有倉庫提供公共配置
/etc/yum.repos.d/*.repo:為倉庫的指向提供配置
/etc/yum.repos.d/*.repo倉庫指向的定義:
[repositoryID]
name=Some name for this repository
baseurl=url://path/to/repository/
enabled={1|0}
gpgcheck={1|0}
gpgkey=URL
enablegroups={1|0}
failovermethod={roundrobin|priority}
默認為:roundrobin,意為隨機挑選;
cost=
默認為1000
yum的repo配置文件中可用的變量:
$releasever: 當前OS的發行版的主版本號;
$arch: 平臺;
$basearch:基礎平臺;
$YUM0-$YUM9
國內常用yum源url:
yum的命令行選項:
–nogpgcheck:禁止進行gpg check;
-y: 自動回答為“yes”;
-q:靜默模式;
–disablerepo=repoidglob:臨時禁用此處指定的repo;
–enablerepo=repoidglob:臨時啟用此處指定的repo;
–noplugins:禁用所有插件;
yum的子命令:
顯示倉庫列表:
repolist [all|enabled|disabled]
顯示程序包:
list
# yum list [all | glob_exp1] [glob_exp2] […]
# yum list {available|installed|updates} [glob_exp1] […]
安裝、重新安裝程序包:
install package1 [package2] […]
reinstall package1 [package2] […] (重新安裝)
升級、降級程序包:
update [package1] [package2] […]
downgrade package1 [package2] […] (降級)
檢查可用升級:
check-update
卸載程序包:
remove | erase package1 [package2] […]
查看程序包information:
info […]
查看指定的特性(可以是某文件)是由哪個程序包所提供:
provides | whatprovides feature1 [feature2] […]
清理本地緩存:
clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
構建緩存:
makecache
搜索:
search string1 [string2] […]
以指定的關鍵字搜索程序包名及summary信息;
查看指定包所依賴的capabilities:
deplist package1 [package2] […]
查看yum事務歷史:
history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
安裝及升級本地程序包:
* localinstall rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use install)
* localupdate rpmfile1 [rpmfile2] […]
(maintained for legacy reasons only – use update)
包組管理的相關命令:
* groupinstall group1 [group2] […]
* groupupdate group1 [group2] […]
* grouplist [hidden] [groupwildcard] […]
* groupremove group1 [group2] […]
* groupinfo group1 […]
1、配置本地yum源
進入/etc/yum.repos.d中
將系統自帶的網絡yum重命名以免使用,用mv重命名
mv CentOS-Base.repo CentOS-Base.repo.bak
將系統光盤掛載到/media/cdrom中
打開CentOS-Media.repo,在baseurl中加入/media/cdrom
enabled=1表示啟用
用yum install安裝一個沒安裝過的軟件試試
2、配置阿里云yum源
在/etc/yum.repos.d中創建一個repo文件,這里我創建的是aliyun.repo
文件中的內容是
[Centos7-ailiyun.com]
name=Centos-$releasever-$basearch
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch
enabled=1
gpgcheck=0
[updates-ailiyun.com]
name=Centos-$releasever-$basearch-updates
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch
enabled=1
gpgcheck=0
其中變量$releasever獲取的是版本號,$basearch獲取的是系統架構(如x86_64)
enabled=1表示啟用,gpgcheck=0表示不進行校驗
創建完之后構建本地緩存數據庫,yum makecache
安裝一個未安裝的軟件試試,比如centos7系統中沒有ifconfig,我們yum install net-tools.x86_64
這里可以很明顯的看到yum會自動幫你解決依賴關系
3、配置epel源
直接在上面的aliyun.repo中添加一個epel倉庫
添加完成之后記得構建緩存
三、程序包的編譯安裝
1、開源源碼獲取站點
2、編譯C源代碼
前提:提供開發工具及開發環境
開發工具:make, gcc等
開發環境:開發庫,頭文件
glibc:標準庫
通過“包組”提供開發組件
CentOS 6: "Development Tools", "Server Platform Development",
第一步:configure腳本
選項:指定安裝位置、指定啟用的特性
–help: 獲取其支持使用的選項
選項分類:
安裝路徑設定:
–prefix=/PATH/TO/SOMEWHERE: 指定默認安裝位置;默認為/usr/local/
–sysconfdir=/PATH/TO/SOMEWHERE:配置文件安裝位置;
System types:
Optional Features: 可選特性
–disable-FEATURE
–enable-FEATURE[=ARG]
Optional Packages: 可選包
–with-PACKAGE[=ARG]
–without-PACKAGE
第二步:make
第三步:make install
3、安裝并編譯httpd-2.4
安裝包組提供開發組件
通過wget下載一個httpd-2.4的源碼至本地并解壓
指定安裝位置和配置文件路徑
報錯因為為沒找到APR包,那么我們去官網下一個編譯安裝
make
make install
安裝完APR后我們回到httpd下繼續剛才的編譯安裝
再次報錯,缺少APR-util包,按照剛才安裝APR包的方法安裝
這里需要指明之前APR安裝的位置
安裝完APR-util之后,再次安裝httpd
編譯時注意指明apr或者apr-util的安裝位置
再次出錯缺少pcre-config,還是按照前面的方法安裝編譯pcre-config
安裝完pcre-config后編譯httpd還是提示錯誤,需要安裝pcre-devel
這里我們就用yum源安裝了
再次編譯httpd
這次成功了,繼續執行make和make install
完成后打開httpd服務試試
這里需要注意的是,如果網頁打不開請關閉selinux.
原創文章,作者:N17_信風,如若轉載,請注明出處:http://www.www58058.com/12900
知道寫標簽的同學都是注重細節的同學。贊,能有代碼格式化就更好了