+++++++rpm/yum/編譯
程序包管理總結
編譯總結
程序包管理總結
rpm (Redhat Package Manager)早期由redhat用perl語言研發,後來用C重寫 (RPM is Package Manager)。前端管理工具是yum,centos 7後支持dnf(EPEL源)
Fedora 22之後,支持dnf工具的使用
Debian系用.deb包,dpt-get前端管理工具
Slackware的二次發行版: 前端管理工具: Zypper,YasT
程序包命名
二進制格式: testapp-1.2.3-1.操作系統平臺.cpu平臺.rpm
源碼格式: testapp-1.2.3-1.操作系統平臺.src.rpm
源碼: testapp-1.2.3.tar.壓縮格式(gzip,bzip2,xz,zip)
拆包: 功能拆分,節約磁盤空間。
操作系統平臺: centos: el6,el7
cpu平臺:
i386,i486,i586,i686 : x86
x86_64,x64,amd64
noarch:java,python,c兼容ELF格式代碼
拆包後,依賴關系:先安裝主包後支包
lddconfig -p 查看裝載進內存中的共享庫,所有程序所依賴所依賴的庫
ldd filepath 查看當前給定程序所依賴的庫
配置文件:/etc/ld.so.conf 或 /etc/ld.so.conf.d/*.conf
ldconfig [-v] 更新內存中的庫映射列表
程序包: 二進制程序、庫、配置文件、幫助手冊
元數據:名稱、版本、依賴關系、功能說明、安裝生成的文件列表和校驗碼
項目管理工具: rpm,yum,dnf
安裝、升級、卸載、查詢程序包
獲取程序包或源碼途徑
程序包途徑:光盤發行商、第三方、自制作、官方站點
http://mirror.tuna.tsinghua.edu.cn
http://mirrors.hust.edu.cn/
mirrors.aliyun.com
mirrors.sohu.com
mirrors.163.com
http://pkgs.org
http://rpmfind.net 查找rpm包
http://rpm.pbone.net
源碼途徑: 托管站點、官方站點
SourceForge
Github.com
code.google.com
rpm,yum命令的使用
yum解決rpm依賴
yum C/S架構
dnf解決yum中斷追蹤
內核只安裝不升級
配置改變,卸載時: .rpmsave,安裝時: .rpmnew
多個rpm/yum/dnf不能同時使用。
事務類操作:
1、原子性: 原子的
2、隔離性:事物間相互隔離
3、持久性: 修改後不能改變
加密類型
單身、對稱、非對稱
算法:
單身:md5、sha1、sha128、sha224、sha256、sha384、sha512、GPG
非對稱: des
對稱: RSA、DSS、GPG
便於記憶:
1、分類
2、語法
忽略
rpm:
安裝時:忽略完整性、忽略合法性、導入忽略完整和合法性、忽略沖突
安裝、卸載:忽略觸發、忽略依賴、忽略腳本執行
yum:
安裝:忽略完整和合法性、忽略交互、僅下載不安裝、忽略插件
安裝時對程序包分析依賴的CAPABILITY和沖突,及內部元數據,安裝時執行觸發器,安裝後執行腳本,由人為的控制每一個步驟是否可路過
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
不檢測相關
rpm --nodigest package .. 不檢查完整性
rpm --nosignature package ... 不檢查來源合法性
rpm --import GPG_FILE 導入後不檢查完整性和來源合法性
yum --nosignature package ... 不檢查完整性和來源合法性
觸發器相關
--notriggers rpm命令中,安裝、卸載
查詢: rpm -q --triggers
依賴相關
rpm
--test 沖突或依賴檢測(安裝、卸載)
--R package ... 需要的依賴 **(從元數據中抽取出)
--provide package ... 提供的依賴
--nodeps 忽略依賴(事務)
--replacefiles 忽略沖突(事務)
--whatprovide CAPABILITY 文件或功能由哪個包提供
-q -f filepath 文件由哪個包提供 **
--whatrequire CAPABILITY 文件或功能被哪個包所依賴
yum
--deplist package 需要的依賴 **(從元數據中抽取出)
--whatprovides CAPABILITY 文件或功能由哪個包提供 **
重新安裝相關
rpm -ivh --replacepkgs package_file
yum reinstall package_file
降級相關
rpm -[UF]vh --downpackage package_file
yum downgrade package_file
包內信息查詢相關
rpm -q { -i | --changelog | --scripts | --triggers | -L | --conflicts } package
yum info package
包內文件列表相關
rpm -q { -l | -c | -d } 。需要給合grep,fgrep,egrep和bash特性管道完成搜索匹配機制
yum list [ all | enabled | available ] [package|glob_expr] ... 支持搜索匹配機制
yum search glob_expr .... 支持搜索匹配機制
腳本相關(安裝、卸載、查詢)
--scripts 所有腳本
--pre 程序包安裝前腳本
--post 程序包安裝後腳本
--preun 程序包卸載前腳本
--postun 程序包卸載後腳本
數據庫相關
rpm --initdb | --rebuildb
緩存相關
yum clean [headers|packages|metadata|dbcache|plugins|expire-cache|all]
yum makecache
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
rpm
通用選項: -v verbose , -h 以#顯示安裝進度
查詢
默認查詢已安裝程序包,-p查詢未安裝程序包
1、rpm -q [select_option] ##查詢程序包
-a 所有程序包 -f filepath 某文件對應的程序包 --whatprovides CAPABILITY 此文件或功能(CAPABILITY)由哪個包所提供 --whatrequires CAPABILITY 哪個包依賴此文件或功能(CAPABILITY) -g GROUP 查詢組內提供的程序包
2、rpm -q [select_option] [query_option] PACKAGE_FILE ... ##程序包內文件列表、內容或包的依賴
-l 程序包內的列表 -d doc列表 -c config列表 -i 程序包內的信息 -L Lisence --changelog 程序包的changlog -R 程序包依賴什麽 --provides 程序包提供的依賴 --conflicts 程序包與哪些包沖突 --scripts 程序包提供的腳本 --triggers 程序包提供的觸發器
安裝 rpm -ivh [OPTIONS...] PACKAGE_FILE ...
--test 測試安裝,查看依賴 --nodeps 忽略依賴 --nodigest 忽略完整性 --nosignature 忽略來源合法性 --ignoreos 忽略平臺 --replacepkgs 重新安裝 --force 強行安裝 --noscripts 不執行腳本 --nopre --nopost --nopreun --nopostun --notriggers 不執行觸發器
升級 rpm -Uvh [OPTIONS...] PACKAGE_FILE ... 安裝或升級
升級 rpm -Fvh [OPTIONS...] PACKAGE_FILE ... 只升級
--oldpackage 降級 --force 強行升級或降級
卸載 rpm -e [ --nodeps | --noscripts | --notriggers | --test ] PACKAGE_FILE ...
校驗 rpm -V [selection-option] [verify-options] [PACKAGE_FILE...]
rpm --import RPM-GPG-KEY-CentOS-7 (安裝對應倉庫中的程序包無需校驗)
安裝後的文件列表與程序包中的文件列表存儲的校驗碼對比
S:size 5: md5 T: Modify time D: device:major.minor L: link U: user G: Group c: configure file d: doc file
數據庫維護 rpm { --initdb | --rebuildb }
--initdb: 只要存在數據庫,無論是否完整,不初始化。數據庫不存在時,才初始化。 --rebuildb: 無論數據庫何種狀態,都要進行重建數據庫
yum
Yellow Dog 研發,redhat二次發行版使用:YUM(Yellowdog Update MOdifier)
原理:主機有緩存,請求元數據校驗碼.比對,完整用本地緩存.不完整,進行一次新的請求
請求元數據,下載至緩存,分析元數據,找出依賴未安裝的程序包列表.
請求程序包,下載至緩存,安裝.
刪除程序包,保留元數據.
變量: 便於用於配置倉庫
事務: yum命令執行發行修改的操作(安裝/升級/卸載)
鏡像: 同類倉庫有多個.Aliyun鏡像,SOHU鏡像.163鏡像
配置文件: yum配置:所有倉庫共有的配置, 倉庫配置:每個倉庫獨有的配置,範圍越小,越是最終生效
元數據存儲方式:壓縮存儲,sqllite接口存儲
yum [OPTONS...] [SUB_CMD] PACKAGE_FILE ...
OPTIONS
-q 靜默 -y 不交互,自動回答為yes --assumeno 不交互,自動回答為NO --nogpgcheck 來源合法性和完整性 . rpm分開使用: --nodigest,--nosignature --nodisablerepo=REPO 支持glob,本次安裝禁止哪些倉庫 --noenablerepo=REPO 支持glob,本次安裝啟用哪些倉庫 --noplugins 本次安裝不使用插件 --loaddownonly 本次安裝或升級只下載程序包 --loaddowndir=DIR 下載的位置
獲取幫助 yum help SUB_CMD
SUB_CMD
查詢list
1、查詢倉庫信息
repolist [all|enabled|disabled] ## 默認為enabled
repoid reponame status
2、查詢結果為程序包
顯示程序包
list [all|available|installed|extras|obsoletes|recent] [glob_expr1] ... ##glob與文本字符的組合
包名.cpu平臺 1.2.3-1.操作系統平臺 repoid >>> obsoletes 廢棄 >> rpm -q -a | fgrep 實現
搜索程序包
search string1 [string2] [...] ##glob與文本字符的組合成string
包名 與 簡要描述信息 rpm -q -a | grep 實現
哪個程序包提供CAPABILITY(文件或功能)
whatprovides filepath
# rpm -q -f # rpm -q --whatprovides
3、查詢包內信息
依賴關系
deplist package1 [package2] [...]
# rpm -q -R package1 ... # rpm --test # rpm -q --provides package1 ...
包的信息
info package ...
# rpm -q -i package ...
安裝 install , localinstall
install package ...
localinstall rpmfile .... (centos5)
# rpm -ivh
卸載 remove
remove package ...
升級 update check-update
update [package ...]
check-update
緩存
clean
makecache
組命令
grouplist [list|info|summary|install|upgrade|remove|mark] [GROUP]
createrepo命令
創建: createrepo --update DIR ## 自動在DIR所有子目錄中搜尋rpm,元數據放在DIR一級子目錄中。
編譯
autoconf 生成configure腳本
automake生成Makefile.in模板
configure腳本結合Makefile.in模板生成Makefile配置文件
make結合Makefile編譯 (c/c+所寫的程序)
make install 調用install命令完成復制文件(cp、install、dd)
C/C++代碼編譯步驟
1、提供開發環境
方法一: CentOS 6 yum groupinstall "Development Tools" "Server Platform Development" CentOS 7 yum groupinstall "Development Tools" 方法二: yum install autoconf automake make gcc glibc
2、展開源代碼、查看INSTALL文件
1)只需要make
2)只需要make install
3)直接可用
3、./configure
生成Makefile
4、make
結合Makefile完成編譯
5、make install
調用install命令完成復制文件(cp、install、dd)
安裝後步驟:
1、導出二進制程序至PATH環境變量
環境變量: profile類
全局: /etc/profile 、 /etc/profile.d/*.sh
個人: ~/.bash_profile
2、導出庫文件路徑
查看庫: ldconfig -p
配置庫: /etc/ld.so.conf 、 /etc/ld.so.conf.d/*.conf
重新生成緩存: ldconfig [-v]
3、導出頭文件
ln -sv /path/to/include /usr/include/NAME
4、導出幫助手冊
1、不導出時:
man -M /PATH/TO/man COMMAND
2、導出時:
/etc/man.config
MANPATH /PATH/TO/man
本文出自 “Reading” 博客,請務必保留此出處http://sonlich.blog.51cto.com/12825953/1957212
+++++++rpm/yum/編譯