庫文件
查看二進制程序所依賴的庫文件:
ldd /PATH/TO/BINARY_FILE
[root@localhost ~]# ldd /bin/bash
管理及查看本機裝載的庫文件:
ldconfig
/sbin/ldconfig -p: 顯示本機已經緩存的所有可用庫文件
名及文件路徑映射關系
配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
緩存文件:/etc/ld.so.cache
程序包管理器:
功能:將編譯好的應用程序的各組成文件打包一個或幾個
程序包文件,從而方便快捷地實現程序包的安裝、卸載、查詢、升級和校驗等管理操作
1.包文件組成 ( 每個包獨有)
RPM 包內的文件
RPM 的元數據,如名稱,版本,依賴性,描述等
安裝 或卸載時運行的腳本
2.數據庫( 公共)
程序包名稱及版本
依賴關系
功能說明
包安裝后生成的各文件路徑及校驗碼信息
搜索引擎:
http://pkgs.org
http://rpmfind.net
rpm包管理
CentOS 系統上使用rpm 命令管理程序包:
安裝、卸載、升級、查詢、校驗、數據庫維護
安裝:
rpm {-i|–install} [install-options] PACKAGE_FILE…
-v: verbose
-vv:
-h: 以# 顯示程序包管理執行進度
rpm -ivh PACKAGE_FILE …
[install-options]
–test: 測試安裝,但不真正執行安裝;dry run 模式
–nodeps :忽略依賴關系
–replacepkgs | replacefiles
–nosignature: 不檢查來源合法性
–nodigest :不檢查包完整性
–noscipts :不執行程序包腳本片斷
%pre: ; 安裝前腳本; –nopre
%post: ; 安裝后腳本; –nopost
%preun: ; 卸載前腳本; –nopreun
%postun: 卸載后腳本; –nopostun
升級:
rpm {-U|–upgrade} [install-options] PACKAGE_FILE …
rpm {-F|–freshen} [install-options] PACKAGE_FILE …
upgrade :安裝有舊版程序包,則“升級”
如果不存在舊版程序包,則“安裝”
freshen :安裝有舊版程序包,則“升級”
如果不存在舊版程序包,則不執行升級操作
rpm -Uvh PACKAGE_FILE …
rpm -Fvh PACKAGE_FILE …
–oldpackage :降級
–force:
升級注意項:
(1)不要對內核做升級操作;Linux 支持多內核版本并存,因此對直接安裝新版本內核
(2)如果原程序包的配置文件安裝后曾被修改,升級時,新版本的提供的同一個配置文件并不會直接覆蓋老版 本的配置文件,而 把新版本的文件重命名
(FILENAME.rpmnew)
包查詢
rpm {-q|–query} [select-options] [query-options]
[select-options]
-a: 所有包
-f: 查看指定的文件由哪個程序包安裝生成
[root@localhost ~]# rpm -qf /etc/issue
centos-release-7-2.1511.el7.centos.2.10.x86_64
應用場景:文件丟失,可通過相同系統機器查詢來源于哪個rpm包
-p rpmfile :針對尚未安裝的程序包文件做查詢操作;
[root@localhost ~]# rpm -qpl nginx-1.8.0-1.el6.ngx.x86_64.rpm
–whatprovides CAPABILITY :查詢指定的 CAPABILITY 由哪個包所提供
[root@localhost ~]# rpm -q –whatprovides bash //誰提供了bash這個能力
bash-4.2.46-19.el7.x86_64
–whatrequires CAPABILITY :查詢指定的 CAPABILITY 被哪個包所依賴
[root@localhost ~]# rpm -q –whatrequires bash //誰依賴于bash
rpm2cpio 包文件|cpio –itv 預覽包內文件
[root@localhost ~]# rpm2cpio nginx-1.8.0-1.el6.ngx.x86_64.rpm |cpio -tv
rpm2cpio 包文件|cpio –id “*.conf”釋放包內文件
[root@localhost ~]# rpm2cpio nginx-1.8.0-1.el6.ngx.x86_64.rpm |cpio -idv
./usr/share/nginx/html/index.html //釋放需要的某個文件
./usr/share/nginx/html/index.html
[query-options]
–changelog :查詢rpm 包的changelog
[root@localhost ~]# rpm -q –changelog tree
-c:查詢程序的配置文件 configuration
[root@localhost ~]# rpm -qlc bash
-d:查詢程序的文檔 document
[root@localhost ~]# rpm -qd tree
-i: information
[root@localhost ~]# rpm -qi tree
-l:查看指定的程序包安裝后生成的所有文件;
[root@localhost ~]# rpm -ql bash
–scripts :程序包自帶的腳本片斷
[root@localhost ~]# rpm -q –scripts bash
-R:查詢指定的程序包所依賴的CAPABILITY;
[root@localhost ~]# rpm -qR tree
–provides: 列出指定程序包所提供的CAPABILITY;
[root@localhost ~]# rpm -q –provides bash
卸載
rpm {-e|–erase} [–allmatches] [–nodeps] [– noscripts] [–notriggers] [–test] PACKAGE_NAME .
包來源合法性驗正及完整性驗正:
完整性驗正:SHA256
來源合法性驗正:RSA
公鑰加密:
對稱加密:加密、解密使用同一密鑰;
非對稱加密:密鑰是成對兒的
public key: 公鑰,公開所有人
secret key: 私鑰,不能公開
導入所需要公鑰:
rpm -K rpmfile 檢查包的完整性和簽名
[root@localhost ~]# rpm -K nginx-1.8.0-1.el6.ngx.x86_64.rpm
nginx-1.8.0-1.el6.ngx.x86_64.rpm: RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS:
(MD5) PGP#7bd9bf62)
rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
CentOS 7 發行版光盤提供: RPM-GPG-KEY-CentOS-7
rpm數據庫
數據庫重建: /var/lib/rpm
rpm {–initdb|–rebuilddb}
initdb: 初始化
如果事先不存在數據庫,則新建之
否則,不執行任何操作
rebuilddb :重建
無論當前存在與否,直接重新創建數據庫
yum 客戶端配置文件:
/etc/yum.conf :為所有倉庫提供公共配置
/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
[base]
name=CentOS-$releasever – Base
baseurl=http://10.1.0.1/cobbler/ks_mirror/7/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1
生成庫
yum-config-manager –add-repo= http://172.16.0.1/cobbler/ks_mirror/CentOS-X- x86_64/
yum-config-manager –disable “ 倉庫名" 禁用倉庫
yum-config-manager –enable “ 倉庫名”
顯示倉庫列表:
repolist [all|enabled|disabled]
顯示程序包:
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 | dbcache | expire-cache | rpmdb | plugins | all ]
du -sh /var/cache/yum 137M
yum clean 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]
yum history
yum history info 2 //查看某步的信息
yum history undo 2 //重新執行某步
yum history new // 清空history記錄
日志:/var/log/yum.log
安裝及升級本地程序包:
* localinstall rpmfile1 [rpmfile2] […]
( 用install 替代)
* localupdate rpmfile1 [rpmfile2] […]
( 用update 替代)
包組管理的相關命令:
groupinstall group1 [group2] […]
groupupdate group1 [group2] […]
grouplist [hidden] [groupwildcard] […]
groupremove group1 [group2] […]
groupinfo group1 […]
如何使用光盤當作本地yum 倉庫:
(1)掛載光盤至某目錄,例如/media/cdrom
# mount /dev/cdrom /media/cdrom
(2)創建配置文件
[CentOS7]
name=
baseurl=
gpgcheck=
enabled=
yum 的命令行選項:
–nogpgcheck :禁止進行gpg check
-y: 自動回答為“yes”
-q :靜默模式
–disablerepo=repoidglob :臨時禁用此處指定的repo
–enablerepo=repoidglob :臨時啟用此處指定的repo
–noplugins
yum倉庫
yum 的repo 配置文件中可用的變量:
$releasever: 當前OS 的發行版的主版本號
$arch: 平臺,i386,i486,i586,x86_64等 等
$basearch :基礎平臺;i386
$YUM0-$YUM9: 自定義變量
實例:
http://server/centos/$releasever/$basearch/
http://server/centos/7/x86_64
http://server/centos/6/i384
創建yum 倉庫:
createrepo [options] <directory>
baseurl=ftp://mirrors.magedu.com/repos/$releaserver/$basearch //根據系統版本自適應
centos6 中
cd /misc
cd cd
epel文件中添加
[cdrom]
baseurl=file:///misc/cd 自動掛載
gpgcheck=0
lftp 10.1.0.1
cd pub/Sources/7.x64
mget *
mv *.rpm /root/repodb
cd /root/repodb
createrepo . 創建倉庫
epel文件中添加
[lftp]
baseurl=file:///root/repodb
gpgcheck=0
誤刪rpm命令的恢復方法
光盤啟動,進入救援模式,開shell
centos6
bash-4.1#
mdkir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
centos7
rpm -ivh Packages/rpm-r4.11.3.rpm –root=/mnt/sysimage
程序包編譯
源代碼–> 預處理–> 編譯(gcc)–> 匯編–> 鏈接–>
C 代碼編譯安裝三步驟:
1./configure: :
(1)通過選項傳遞參數,指定啟用特性、安裝路徑等;執 行時會參考用戶的指定以及makefile.in 文件生成makefile
(2)檢查依賴到的外部環境
2.make :根據makefile 文件,構建應用程序
3.make install: 復制文件到相應路徑
開發工具:
autoconf: 生成configure 腳本
automake :生成Makefile.in
編譯C 源代碼:
前提:提供開發工具及開發環境
開發工具:make, gcc等 等
開發環境:開發庫,頭文件
glibc :標準庫
yum groupinstall "Development Tools"
第一步:configure 腳本
選項:指定安裝位置、指定啟用的特性
–help: 獲取其支持使用的選項
選項分類:
安裝路徑設定:
–prefix=/PATH: 指定默認安裝位置, 默認為/usr/local/
–sysconfdir=/PATH :配置文件安裝位置
Optional Features: 可選特性
–disable-FEATURE
–enable-FEATURE[=ARG]
Optional Packages: 可選包,
–with-PACKAGE[=ARG], 依賴包
–without-PACKAGE,
第二步:make
第三步:make install
安裝后的配置:
(1)二進制程序目錄導入至PATH 環境變量中;
編輯文件/etc/profile.d/NAME.sh
export PATH=/PATH/TO/BIN:$PATH
(2)導入庫文件路徑
編輯/etc/ld.so.conf.d/NAME.conf
添加新的庫文件所在目錄至此文件中;
讓系統重新生成緩存:
ldconfig [-v]
(3)導入頭文件
基于鏈接的方式實現: ln -sv
(4)導入幫助手冊
編輯/etc/man.config|man_db.conf 文件 ,添加一個MANPATH
實戰
編譯安裝apache 2.2, 并啟動此服務
(1)bunzip2 httpd-2.2.29.tar.bz2
tar xf httpd-2.2.29.tar
(2)./configure –prefix=/usr/local/http2 –sysconfdir=/etc/http2
(3)make && make install
(4)vim /etc/man_db.conf 添加
MANDATORY_MANPATH /usr/local/http2/man
此時可以用man幫助
(5)/usr/local/http2/bin/apachectl start
(6)netstat -tnlp|grep 80 查看80端口是否在線
(7)telnet localhost 80 試是否能夠連接
如果不行,iptables -F 清空防火墻鏈路規則
(8)links 訪問apache服務
原創文章,作者:victorycommander,如若轉載,請注明出處:http://www.www58058.com/41560