軟件包管理
CentOS系統上使用rpm命令管理程序包
安裝、卸載、升級、查詢、檢驗、數據庫維護
rpm安裝:
rpm {-i|–install} [安裝-選項] 打包;包
-h 以#符號表示安裝進度
-v 顯示安裝過程中的詳細信息
-vv
-vvv
經常使用組合:-ivh,ivvh
例如 rpm -ivh 包文件
安裝時的選項:
–test 測試安裝,但不真正執行安裝,僅報告依賴關系以及沖突信息等
–nodeps 忽略依關系,副作用是能安裝成功,但未必能運行成功
–replacepkgs 覆蓋安裝–重新安裝并覆蓋原有的文件
–nosignature 不被監測來源合法性
–nodigest 不檢查包完整性
–noscipts 不執行程序包腳本的片斷
–foree 強制安裝
rpm包升級:
rpm {-U|–upgrade} [安裝-選項] 打包;包
-U 升級或安裝
upgrade:安裝有舊版程序包,則“升級” 如果不存在舊版程序包,則“升級”
rpm {-F|–freshen} [安裝-選項] 打包;包
-F 升級
freshen:安裝有舊版程序包,則“升級” 如果不存在舊版程序包,則不執行升級操作
常用組合:-Uvh,Fvh
例如 rpm -Uvh 包文件
升級選項:
–oldpackage 降級
–force 強制升級
升級時需要注意事項:
1 不要對內核執行升級,Linux 支持多個內核共存,可以對此直接安裝新版本內核或不同版本的內核
2 如果程序包的配置文件安裝后被修改,升級時,新版本的文件不會覆蓋老版本的配置文件。而是把新版本的文件重命名加上后綴(.rpmnew) 之后保留
rpm包查詢:
rpm {-q|–query}[選擇-選項][查詢選項]
安裝選項 ~]# rpm -q tree 后面準確查找包名
-a 所有包、 ~]# rpm -qa 查詢當前系統安裝的所有包 ~]# rpm -qa |grep "^tr" 管道給關鍵字查找,以tr開頭的包名
-f 查看指定的文件由哪個程序安裝生成 ~]# rpm -qf /etc/issue 查詢文件是哪個包生成
-p rpmfuile 針對尚未安裝程序包文件做查詢操作; ~]# rpm -qp tree-1.6.0-10.el7.x86_64.rpm
–whatprovides 性能進程 查詢指定的性能進程有哪個包所提供 ~]# rpm -q tree –whatprovides 查詢這個功能是由哪個包所提供
–whatrequires 性能進程 查詢指定的性能進程被哪個包所依賴 ~]# rpm -q bash –whatrequires 查詢這個功能是被哪個包所依賴
rpm2cpio 包文件|cpio -itv 預覽包內的文件 ~]# rpm2cpio tree-1.6.0-10.el7.x86_64.rpm |cpio -itv
rpm2cpio 包文件|cpio -id "*.conf" 釋放包內文件
查詢選項:
–changelog 查詢rpm包的變動日志 ~]# rpm -qc tree –changelog
-c 查詢程序的配置文件
-d 查詢程序的文檔 ~]# rpm -qd tree
-i 信息 ~]# rpm -qi tree
-l 查看指定的程序包安裝后生成的所有文件 ~]# rpm -ql tree
–scripts 程序包自帶的腳本片斷 ~]# rpm -q bash –scripts
-R 查詢指定的程序包所依賴的 性能進程 ~]# rpm -qR bash
–provides ;列出指定程序包所提供的 性能進程 ~]# rpm -q bash –provides
rpm卸載:
rpm {-e|–erase}
–allmatches 移除所有符合 <package> 的軟件包(如果<package> 被指定未多個軟件包,常常會導致錯誤出現)
–nodeps 不驗證軟件包依賴
–noscripts 不執行軟件包腳本
–notriggers 不執行本軟件包觸發的任何腳本
–test 不真正安裝,只是判斷下是否能安裝
包檢驗:rpm {-V|–verify}
–nofiledigest 不驗證文件摘要
–nofiles 不驗證軟件包中文件
–nodeps 不驗證包依賴
–noscript 不執行驗證腳本
導入所需要公鑰:
~]# rpm -K tree-1.6.0-10.el7.x86_64.rpm 檢查包的完整性和簽名
rpm數據庫:
數據庫重建: /var/lib/rpm
rpm {–initdb|–rebuilddb}
initdb 初始化
如果時間不存在數據庫,則新建之,否則 不執行任何操作
rebuilddb 重建數據庫 無論當前存在與否,直接重新創建數據庫
rpm命令實現程序管理 主要核心命令
安裝:-vih,–nodeps,–replacepkgs
卸載:-e,–nodeps
升級:-Uvh,-Fvh,–nodeps,–oldpackage
查詢:-q,-qa,-qf,-qi,-qc,-q –scripts, -q –chanlog, -q –provides,-q–requires
校驗:-V
導入GPG密鑰:–import,-K,–nodigest,–nosignature
數據庫重建:–initdb,–rebuilddb
===========================================================
yum
yum是rpm的前端程序,用來解決軟件包相關依賴性,可以在多個庫之間定位軟件包,
資源庫: 存儲了眾多rpm包,以及包的相關的元數據文件(放置于特定目錄repodata下)
文件服務器:ftp:
http://
file:///
yum配置文件:
/etc/yum.conf 主配置文件為所有倉庫提供數據
/etc/yum.repos.d/*.repo 為倉庫的指向提供配置
創庫指向的定義:
文件以.repo 結尾;
root@Compro ~]# cat /etc/yum.repos.d/base.repo
[base] 提供配置信息
name=CentOS 7 當前倉庫的名稱
baseurl=http://10.1.0.1/cobbler/ks_mirror/CentOS-7-x86_64/ 教室里的yum源
enabled=1 此倉庫是否為可用
gpgcheck=0 是否對程序包做校驗
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 指明訪問密鑰路徑的路徑
[倉庫ID] 對于當前系統的yum來將,此倉庫ID用于唯一標識此倉庫指向,因此,必須唯一
name=name 當前倉庫描述信息名稱
baseurl=url://path/to/repository/
enabled={1|0} 此倉庫是否可被使用 1是 禁用0是可以 不寫是默認
gpgcheck={1|0} 是否對程序包做校驗
gpgkey= 指明gpgkey文件路徑
cost= 默認為1000
如果使用光盤當作本地yum倉庫:
掛載光盤至某目錄,例如/media/cdrom
#mount /dev/cdrom /media/cdrom
創建配置文件:
[CentOS7]
name=自定義 當前倉庫描述信息
baseurl=指明資源庫的訪問路徑,通常為一個文件服務器上輸出的某資源庫,支持的類型:ftp://;http://;file:///
gpgcheck={1|10} 是否對程序包做校驗
enabled={1|10} 此倉庫上是否可用,默認為可用
yum命令的語法: yum [選項] [命令] [包]
yum顯示倉庫列表:
yum repolist [all|enabled|disabled]
顯示程序包:
yum list
yum list [all | glob_ exp1 ] [glob_exp2] …
yum list {available|installed|updates}[glob_exp1]…
安裝程序包:
yum install 包1 [包2] …
yum reinstall 包1 [包2]… 重新安裝
升級程序包:
yum update [包1][包2]…
yum downgrade 包1 [包2]… 降級
卸載程序包:
yum remove | erase 包1 [包2] …
查看程序包的信息:
yum info name
查看指定的特性(可以是某文件)是由那個程序包所提供
yum provides | whatprovides 特性1 [特性2] …
清理本地緩存:
yum clean [包|元數據|expire-cache|rpmdf|plugins|all]
構建緩存:
yum makecache
搜索:
yum search 字符串1 [字符串2]
以指定的關鍵字搜索程序包名及summary信息
查看指定包所依賴的capabilities
yum deplist 包1 [包2] …
查看 yum事務歷史
yum history
日志:
/var/log/yum.log
安裝及升級本地程序包
yum install rpmfile1 [rpmfile2] …
yum update rpmfile1 [rpmfile2] …
包組管理的相關命令:
yum groupinstall group1
yum groupupdate group1
yum grouplist [hidden][groupwildcard]
yum groupremove group1
yum groupinfo group1
如何使用光盤當作本地yum倉庫
掛載光盤至某目錄
例如 /media/crom # mount /dev/cdrom /media/crom
創建配置文件
[CentOS7]
name=name
baseurl=file:///
gpgcheck=0
enabled=1
yum 的命令行選項
yum [選項] 包
–nogpgcheck 禁止進行gpg check
-y 自動回答為"yes"
-q 靜默模式
–disablerepo=repoidglob 臨時禁用此處指定的repo
–enablerepo=repoidglob 臨時啟動此處指定的repo
–noplugins 禁用所有插件
=================================================================
源碼編譯
程序包編譯安裝:
Application-VERSION-release.src.rpm–>
安裝后,使用rpmbuild命令制作成二進制格式的rpm包,而后再安裝
源代碼–>預處理–>編譯–>匯編–>鏈接–>執行
源代碼組織格式:
多文件:文件中的代碼之間,很可能存在跨文件依賴關系
C、C++:make (項目管理器,configure –>
Makefile.in –> makefile)
java: maven
C代碼編譯安裝三步驟:
./configure
通過選項傳遞參數,指定啟動特性、安裝路徑等;
執行時會參考用戶的指定以及makefile.in文件生成makefile
檢查依賴到的外部環境,如依賴的軟件包
[cdrom]
name=centos 7 cdrom
baseurl=file:///mnt/cdrom
gpgcheck=0
enabled=0
make 根據makefile文件,構建應用程序
make install 復制文件到相應路徑
開發工具:
autoconf: 生成configure腳本
automake:生成Makefile.in
注意:安裝前查看 安裝自帶文檔
開源程序源代碼的獲?。?/p>
官方自建站點:
apache.org (ASF:Apache Software Foundation)
mariadb.org
…
代碼托管:
SourceForge.net
Github.com
code.google.com
c/c++編譯器: gcc(GNU C Complier)
編譯C源代碼:
準備:提供開發工具及開發環境
開發工具:make,gcc等
開發環境:開發庫,頭文件
glibc:標準庫
實現:通過“包組”提供開發組件
CentOS 6:
Development Tools
Server Platform Development
CentOS 7:
Development Tools
Development and Creative Workstation
編譯安裝:
第一步:configure 腳本
選項:指定安裝位置、指定啟用的特性
安裝路徑設定:./configure –prefix=/usr/local/http2 –sysconfdir=/etc/http2/
可選特性:
–disable-FEATURE
–enable-FEATURE[=ARG]
可選包:
–with-PACKAGE[=ARG],依賴包
–without-PACKAGE,禁用依賴關系
安裝后的配置:
二進制程序目錄導入至PATH環境變量中;
編輯文件:
[root@Compro ~]# vim /etc/profile.d/http2.sh
PATH=$PATH:/usr/local/http2/bin
導入庫文件路徑:
編輯/etc/ld.so.conf.d/NAME.conf
添加新的庫文件所在目錄至此文件中
讓系統重新生成緩存:
ldconfig[-v]
導入頭文件
基于鏈接的方式實現:
ln -sv
導入幫助手冊
編輯/etc/man.config|man_db.conf文件
添加一個MANPATH
[root@Compro ~]# vim /etc/man_db.conf
MANDATORY_MANPATH /usr/local/http2/ma
原創文章,作者:小馬哥,如若轉載,請注明出處:http://www.www58058.com/42119