更多內容請點擊:前端
Linux學習從入門到打死也不放棄,徹底筆記整理(持續更新,求收藏,求點贊~~~~)
java
https://blog.51cto.com/13683480/2095439node
筆記整理開始時間:2018年4月20日14:07:22數據庫
第10章 程序包管理apache
本章內容windows
軟件運行環境centos
軟件包基礎緩存
rpm包管理bash
yum管理網絡
定製yum倉庫
編譯安裝
軟件運行和編譯:
ABI: Application Binary Interface 應用程序的二進制接口
window: PE,Portable Executable
Linux: ELF,Executable and Linkable Format
彼此互不兼容
庫級別的虛擬化:
Linux:WINE
windows:Cygwin
API: Application Programming Interface
POSIX:Portable OS
程序源代碼--> 預處理 --> 編譯 --> 彙編 —-> 連接
靜態編譯: .a
動態編譯: .so
靜態連接:
把程序對應的依賴庫複製一份到包
libxxx.a
嵌入程序包
升級難,需從新編譯
佔用較多空間,遷移容易
動態連接:
只把依賴加作一個動態連接
libxxx.so
連接指向
佔用較少空間,升級方便
jave程序
源程序.java --jave編譯器--> 字節碼.class --> 類裝載器>字節碼校驗器>解釋器-->操做系統
JVM for unix
windows
other
包管理器
二進制應用程序的組成部分:
二進制文件、庫文件、配置文件、幫助文件
程序包管理器:
debian:deb文件,dpkg包管理器
redhat:rpm文件,rpm包管理器
rpm:Redhat Package Manager
RPM Package Manager
包命名:
源碼:name-VERSION.tar.gz|bz2|xz
rpm包:name-version-release.arch.rpm
realese: ..el7
arch: i686 x86_64 noarch
解決依賴包管理工具:
yum: rpm包管理器的前端工具
apt-get: deb包管理器前端工具
zypper: suse上的rpm前端管理工具
dnf: Fedora 18+ rpm 包管理器前端管理工具
庫文件:
ldd 查看二進制程序所依賴的庫文件
如:ldd /bin/bash ldd/bin/cat
ldconfig 加載庫文件
/sbin/ldconfig -p 顯示本機已經緩存的全部可用庫文件名及文件路徑映射關係
配置文件: /etc/ld.so.conf
/etc/ld.so.conf.d/*.conf
緩存文件: /etc/ld.so.cache
包管理器:
程序包管理器:
功能:將編譯好的應用程序的各組成文件打包一個或幾個程序包文件,
從而方便快捷的實現程序包的安裝,卸載,查詢,升級和校驗等操做
包文件組成(每一個包獨有)
rpm包內的文件
rpm的元數據,如名稱,版本,依賴性,描述等
安裝或卸載時運行的腳本
數據庫(公共):/var/lib/rpm
程序包名稱和版本
依賴關係
功能說明
包安裝後生成的各文件路徑及校驗碼信息
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 覆蓋安裝
--nosingature 不檢查來源合法性
--nodigest 不檢查包完整性
--noscripts 不執行程序包腳本
--nopre 安裝前腳本
--nopost 安裝後腳本
--nopreun 卸載前腳本
--nopostun 卸載後腳本
升級:
rpm {-U|--upgrate}[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 查看指定的文件由哪一個程序包安裝生成
-p rpmpack-file:針對還沒有安裝的程序包文件作查詢操做
--whatprovides CAPABILITY: 查詢指定的CAPABILITY由哪一個包所提供
--whatrequires CAPABILITY: 查詢指定的CAPABILITY被哪一個包所依賴
quety-options
--changelog 查詢rpm包的changelog
-c 查詢程序的配置文件
-d 查詢程序的文檔
-i 查詢information
-l 查看指定的程序包安裝後生成的全部文件
--scripts 程序包自帶的腳本
--provides 列出指定程序包所提供的CAPABILITY
-R 查詢指定的程序包所依賴的CAPABILITY
經常使用查詢用法:
-qi package -qip package-file
-qf file
-qa
-ql pack -qlp pack—file
-qc pack
-qd pack
rpm2cpio pack—file | cpio -itv 預覽包內文件
rpm2cpio pack-file | cpio -id "單個file" 釋放包內文件
包卸載:
rpm {-e|--erase}[--allmatch][--nodeps][--noscripts][--notriggers]
[--test] package.name
如:rpm -e tree
包校驗:
rpm -V|--verify [select-option] [verify-options] package.name
針對已安裝包,查看文件是否有修改如:
如:
[root@sentos7 /data]$rpm -V tree
S.5....T. d /usr/share/doc/tree-1.6.0/LICENSE
S file size differs 大小改變
M mode differs(includes permissions and file type)
權限改變
5 hash值,md5值發生變化,表示文件內容發生改變
D Device major/minor number mismatch 設備主次發生改變
L readlink path mismatch 連接發生改變
U USER ownership differs
T mtime differs(includes
P capability differ
md5sum file file 比較文件hash(md5)值
包來源合法性驗證和 完整性
導入所須要公鑰:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
rpm --import /光盤/RPM-GPG-KEY-CentOS-7
rpm -K|checksig rpmfile 檢查包的完整性的簽名
rpm -qa "gpg-pubkey" 查看gpgkey
數據庫重建
/var/lib/rpm
rpm --initdb|--rebuiddb
initdb: 初始化
若是事先不存在數據庫,則新建之
不然,不執行任何操做
rebuilddb :重建已安裝的包頭的數據庫索引目錄
yum:
客戶端配置:
/etc/yum.conf: 爲全部倉庫提供公共配置
/etc/yum.conf.d/*.repo 爲倉庫的指向提供配置
新建/etc/yum.conf.d/.repo文件
[repositoryID]
name=some name
baseurl=file:///光盤路徑 本地光盤
ftp:// http:// https:// 網絡路徑
enabled=0,1 0關閉,1開啓
gpgcheck=0,1 0關閉,1開啓
gpgkey=URL (file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7)
file:///光盤根目錄/RPM-GPG-KEY-CentOS-7
enablegroups=0;1
failovermethod={roundrobin|priority}
roundrobin 隨機
priority 順序
cost= 默認1000 值越小越優先
yum的repo配置文件中可用的變量
$releasever 當前OS的發行版的主版本號
$arch 平臺,i386,i686,x86_64等
$basearch: 基礎平臺,如x86_64
yum源
阿里雲repo
https://opsx.alibaba.com/mirror
阿里雲centos:
https://mirrors.aliyun.com/centos/
阿里雲epel
https://mirrors.aliyun.com/epel/7/x86_64/
yum-config-manager
yum-config-manager --add-repo=url
自動生成倉庫
yum-config-manager --disable name.repo 禁用倉庫
yum-config-manager --enable name.repo 啓用倉庫
yum命令:
yum 不能多終端同時使用
yum命令的用法
yum [options] [command] [package]..
顯示倉庫列表:
yum repolist [ all | enabled | disabled ]
顯示程序包:
yum list
yum list [ all | glob_exp1 | glob_exp2 ] [..]
yum list { available | installed | updates } [glob_exp1][..]
安裝程序包:
yum install package1 [package2]..
yum reinstall package1.. 從新安裝
升級程序包:
yum update package..
yum downgrade package
檢查可用升級:
yum check-update
卸載程序包:
yum remove | erase package...
查看程序包:
yum info package
查看指定的特性(能夠是某文件)是由哪一個程序包所提供
yum provdes | whatprovides feature1....
清除本地緩存:
清除/var/cache/yum/$basearch/$releasever 緩存
yum clean [packages | metadata | expire-cache | rpmdb | plugins | all ]
構建緩存:
yum makecache
搜索:
yum search string1.
查看指定包所依賴的capabilities
yum deplist package1....
查看yum事務歷史:
yum history info| list | packages-list| packages -info
yum history info 6
yum history undo |redo 6
日誌文件:/var/log/yum.log
安裝或升級本地程序包:
yum localinstall rpmfile
如今通常用(install)
包組管理的相關命令:
yum grouplist [hidden]
yum groupinstall group1
yum groupremove group1...
yum groupinfo group1..
yum groupupdate group1..
yum的命令行選項:
--nogpgcheck 禁止進行gpgcheck
-y 自動回答yes
-q 靜默模式
--disablerepo=repoidglob 臨時禁用此處指定的repo
--enablerepo=repoidglob 臨時啓用此處指定的repo
--noplugins 禁用全部插件
建立yum倉庫:
createrepo dir 製做倉庫 若是添加了安裝包,需從新createrepo
程序包編譯:
Application-VERSION-release.src.rpm --> 安裝後,使用rpmbuild命令製做成
二進制格式的rpm包,然後再安裝
源代碼-->預處理 --> 編譯 --> 彙編 --> 連接 --> 執行
源代碼組織格式:
多文件:文件中代碼只見,很肯能存在跨文件依賴關係
C,C++: make項目管理器
configure腳本 --> Makefile.in --> Makefile
java:maven
C語言源代碼編譯安裝三步驟:
1 ./configure | --prefix=dir
經過選項傳遞參數,指定啓用特性、安裝路徑等;執行時會參考用戶的
指定以及makefile.in文件生成makefile
檢查依賴到的外部環境,如依賴的軟件包
2 make | -j 4 根據Makefile 構建應用程序
3 make insatall 複製文件到相應路徑
開發工具:
autoconf:生成configure腳本
automake 生成Makefile.in
注意:
安裝前查看INSTALL ,README
編譯安裝:
編譯c源代碼:
準備:提供開發工具及開發環境
開發工具:make gcc等
開發環境:開發庫,頭文件
glibc: 標準庫
實現:經過‘包組’提供開發組件
Development Tools
Server Platform Developmet
第一步:./configure腳本
選項:指定安裝位置,指定啓用特性
--help 獲取其支持使用的選項
選項分類
安裝路徑指定:
--prefix=dir :指定安裝路徑, 默認爲/usr/local
--sysconfdir=dir 配置文件安裝位置
System types 支持交叉編譯
Optional Features:可選特性
--disable-FEATURE
--enable-FEATURE[=ARG]
Optional Packages:可選包
--with-Package[=ARG] 依賴包
--without-Package 禁用依賴關係
注意:一般被編譯操做依賴的程序包,須要安裝此程序包的‘開發’組件,
其包名通常相似於name-devel-VERSION
第二步:make 【 -j 4 】
第三部: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 centos6
/etc/mam_db.conf centos7
添加一個manpath
練習:
1.查詢命令java來自於哪一個rpm包
方法1 which java
ll /usr/bin/java
ll /etc/alternatives/java
rpm -qf /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64/jre/bin/java
方法2 rpm -q --whatprovides java
2.yum的配置和使用,包括yum倉庫的建立
實戰做業
3.編寫系統初始化腳本reset.sh,包括別名,提示符顏色,yum倉庫配置文件
安裝tree,ftp,lftp。telnet等包
4.在CentOS7上編譯安裝apache2.4源碼包,並啓動此服務
筆記整理完成時間:2018年4月24日11:02:09