POSIX:Portable Openratin System 跨平台調用 API:兼容,意味開發庫兼容,因此,源代碼可跨平台 ABI:兼容,編譯後的程序可以跨平台 庫為函數,function 庫:可執行程序,本身不能作為程序執行入口,但可以被調用,是編譯好的二進制格式
預編譯、編譯、匯編、鏈接
#靜態鏈接:將庫包含在程序中
#動態鏈接:dll,so(shared object)
#編譯:源代碼翻譯成cpu指令集的過程
*注意:1.os平台:編譯好的應用程序必須為特定平台所支持的版本
2.硬件平台:應用程序為特定的cpu所支持*
二進制程序:/bin,/sbin /usr/sbin,/usr/local.bin,/usr/local/sbin
自身庫文件:/lib /lib64 /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64
開發時調用API,運行時調用ABI
通過調整/etc/ld.so.conf /etc/ld.so.conf.d/*.conf
配置文件:/etc,無須額外配置
幫助文件:
man文件,info文件,README,INSTALL,ChangeLog
man COMMAND
到某路徑下查找與命令名同名的通常以。gz結尾的壓縮文件的名字
/usr/share/man
ldd命令:
查看應用所依賴的共享庫
ldd [options] 二進制文件
root@localhost Desktop]# ldd /bin/cat
linux-vdso.so.1 => (0x00007ffff63ea000)
libc.so.6 => /lib64/libc.so.6 (0x0000003cc4400000)
/lib64/ld-linux-x86-64.so.2 (0x0000003cc3c00000)
1、數據庫:
名稱和版本,
安裝生成的各文件路徑,校驗碼,
依賴關系
提供功能性的說明
2、提供程序組成格式:
文件清單
安裝卸載時運行的腳本
應用程序格式:
源代碼 name(名稱)-major(主版本).minor(次版本).release(修正號).tar.gz
循環依賴: x-->Y
版本依賴: x-->y-->x
Debian:.deb dpkg
RadHat: .rpm(perl編寫),rpm(RadHat Package Manager)
rpm:RPM is Package Manager
SUSE: rpm
打包 安裝 查詢 升級 卸載 校驗 數據庫管理
出現原因:因為依賴關系太麻煩
apt-get yum
rpm包命名格式:
源程序:name-version.tar.{gz|bz2|xz}
命名格式:
version:major.minor.release
rpm包:name-version-release.arch.rpm
release:通常包含rpm的只做發行號,還包含使用的OS(平台)
OS平台
el6:redhat enterprise linux6
el5:redhat enterprise linux5
CentOS5:
suse11
arch:
X86_64
i386,i586,i686
ppc
noarch
來源合法性驗證:
源程序:通過md5或sha1校驗碼驗證;
rpm包:發行商提供的是合法性是可信的
驗證包完整性:校驗碼
驗證來源合法:公鑰加密算法
獲取rpm的途徑:
1、發行商的光盤或站點服務器
CentOS:
http://mirrors.163.com
http://mirrors.sohu.com
2、rpmfind
http://rpmfind.net
3、rpmpbone
http://rpm.pbone.net
**注意:
1、發行商。發行光盤中的包,需要升級時,官方釋放出升級包
2、Fedora EPEL**
安裝程序包
rpm -i --install 安裝
rpm -i /path/to/rpm_package ...
-v:顯示安裝信息
-vv:二級詳細
-vvv:三級詳細
-h:hash 以#的個數顯示安裝進度,一個#表示2%的進度
--test:僅測試,不真正執行安裝過程
如果存在依賴
解決依賴關系:
忽略依賴關系:--nodeps
重新安裝:
-ivh --replacepkgs
原來的配置文件不會被覆蓋,新安裝的配置文件將會重命名為以.rpmnew為後綴的文件
卸載:
rpm -e --erase
rpm -e package_name
如果卸載被其他程序所依賴的包
1、把依賴者一同卸載
2、忽略依賴關系:--nodeps
3、不在卸載
rpm管理:查詢
查詢
rpm -q
查詢所有已安裝的包:
rpm -qa
查詢包的描述信息:
rpm -qi package_name
查詢某單個包是否安裝:
rpm -q 包名
查詢安裝包生曾的列表的位置
rpm -ql package
查詢某文件是那個包安裝生成的:
rpm -qf 文件
查詢包安裝後生成的幫助文檔:
rpm -qd 包名
查詢安裝後生成的配置文件:
rpm -qc 包名
查詢包相關的腳本:
rpm -q --scripts 包名
腳本分四類
preinstall 安裝前腳本
postinstall 安裝後腳本
preuninstall 卸載前腳本
postuninstall 卸載後腳本
查詢尚未安裝的rpm包文件的相關信息:
查詢安裝後會生成的文件列表:
rpm -qpl 包名
查詢其簡單描述信息:
rpm -qpi 包名
rpm管理:升級
rpm -U:升級或安裝
rpm -F:只升級
rpm {-Uvh|-Fvh}/path/to/package_file
--nodeps: 忽略依賴關系
--force:強行安裝
**注意:不要對內核執行升級操作;
多版本內核可以並存,因此,建議執行安裝操作**
rpm管理:校驗:檢查包安裝後生成的文件是否被修改過
rpm -V package_Name S file Size differs 大小 M Mode differs (includes permissions and file type) 頭文件 5 digest (formerly MD5 sum) differs MD5 D Device major/minor number mismatch L readLink(2) path mismatch U User ownership differs 屬主 G Group ownership differs 屬組 T mTime differs 修改時間 P caPabilities differ 能力改變了
rpm管理:校驗來源合法性和軟件完整性
包完整行:通過單向加密機制(MD5|sha1) 來源合法性:通過公鑰加密機制(RSA) 命令:gpg rpm -K /path/to/somefile rpm --checksig /path/to/package_file --nosigeature:不檢查來源合法性 --nodigest:不檢查包完整性
rpm管理:導入密鑰
rpm --import /path/to/gpg-key-file
導入以後再做驗證
rpm包管理:數據庫
位置:/var/lib/rpm
重建:rpm --initdb:初始化
如果事先不存在一個數據庫,則新建之
rpm --rebuilddb 重建
直接新建數據庫,會覆蓋原有庫
解決依賴關系:程序包管理器的前段工具
yum(Yellowdog Update Modifier)依賴於rpm
文件服務器(共享rpm包):
通過yum所支持的文件共享機制將各rpm包通過文件服務共享
repository:倉庫
1.需要的各rpm包
2.依賴關系、程序包安裝後所能夠生成的列表等元數據文件
yum客戶端
1.配置文件:指定各可用的yum倉庫; 2.緩存元數據:yum會到各可用yum倉庫獲取元數據,並緩存至本地 3、分析元數據:根據具體的操作請求完成元數據分析,可能包括依賴關系、文件列表等信息 4.執行具體操作
客戶端配置文件指定對服務器配置文件:
ftp ftp://server/path/to/repo
http http://server/path/to/repo
nfs nfs://servr/nfs_path
file file:///path/to/path
yum操作
格式:yum [install] command
check 檢查在rpmdb中的問題
check-update 檢查可升級的軟件包
clean [all|package|metadata|expire-cache|rpmdb|plugins] 清除緩存
deplist 列出軟件包的依賴
downgrade 降級包
groupinfo “package_group_name” 顯示包組信息
groupinstall "group_name" 安裝包組
grouplist 列出所有包組
groupremove ”group_name“: 卸載組
help 顯示有幫助的用法信息
history 查看yum的命令歷史
info 列出包的描述信息
install 安裝
list [all|installed|available] 把所有可以使用的
provides 查詢某文件是由那個包安裝的
reinstall 重新安裝指定的程序包
repolist[all|enabled|disabled] 顯示各可用的倉庫列表
search 對於給定的字符串搜索包詳細信息
update package_name 升級指定的程序包
updateinfo 在資料庫更新信息的行為
upgrade 更新程序包回吐廢棄考慮
version 顯示機器和/或可用回購一個版本。
要使用yum管理應用程序,首先得配置其可用的yum倉庫,保存在配置文件中
/etc/yum.conf
/etc/yum.repo.d/*.repo
配置文件格式:由兩段組成。類似window的ini配置文件
[main]:主配置段
[repo]:倉庫配置段
配置repo
[repo_ID]
name=String
baseurl=倉庫的訪問路徑
enabled={1|0}1,表示啟用。0表示不啟用
gpgcheck={1|0}1,驗證gpg。0表示不驗證
gpgkey=公鑰地址(可以是本地,也可以是服務器端路徑)
cost=定義此倉庫開銷,默認為1000
安裝本地包
install /path/to/package_file
手動禁止檢查來源及完整性:--nogpgcheck
*如果系統為Centos 5,開發包組為”Development Tools“和”DeveLopment Libraries“
如何系統為centos 6,常用的開發包為”Development tools“和”Server Platform Development”
yum配置文件中可用的宏*
yum配置文件中可用的宏
$releasever:程序的版本,對Yum而言指的是redhat-relrase版本。只替換為主版本號,如Redhat6.5 則替換為6 $arch:系統架構 $basharch:系統基本架構,如i686,i586等的基本架構為i386 $YUM0-9:在系統定義的環境變量,可以在yum中使用
獲取當前系統相應宏替換的辦法
python
import yum,pprint
yb=yum.YumBase() pprint.pprint(yb.conf.yumvar,width=1)
Loaded plugins: product-id, refresh-packagekit
{'arch': 'ia32e',
'basearch': 'x86_64',
'releasever': '6Server',
'uuid': '238c299d-9681-4725-ad7a-c2ae6302e693'}
quit()
yum repository:制作yum倉庫文件
1.yum install createrepo -y 制 作creatrepo 2.createrepo 路徑 3.配置yum源
制作一個遠程的yum倉庫
1.准備文件服務器;使用httpd為例,請事先確保以安裝httpd程序包
2.在/var/www/html目錄。使用一個目錄來保存准備制作稱為yum倉庫的所有rpm包
cd /var/www/html
lftp 172.16.0.1/pub/Sources/6.x86_64
lftp : >mirror openstack
bye
3.創建yum倉庫
rm -rf /var/www/html/openstack/repodata
createrepo /var/www/html/openstack
4.啟動http服務
service httpd start
5.配置實用自建的yum倉庫
[openstack]
name=Openstack Repository
baseurl=http://172.16.100.7/openstack
enabled=1
gpgcheck=0
6.配置好epel的yum源
7.測試使用
yum install openstack-keystone
源碼程序包:
c,c++ perl源碼 python源碼
應用程序:項目組
軟件基金會:FSF,ASF
項目組:主導者,contributor
小項目:一個人維護
商業公司支持:開源版/企業版
開源網站
github.com
code.google.com
源程序:
項目工程:把代碼分散於多個源代碼文件
GNU/make(項目編譯工具)
autoconf:configre腳本,
用來檢查編譯環境是否滿足編譯需求,並定義當前程序編譯時啟用那個特性或功能,已經安裝路徑的定義等等
結果:會根據makefile.in文件生成makefile文件
automake:生成Makefile.in文件
用於結合configure腳本生成makefile文件
makefile文件是make命令的配置文件
編譯安裝的步驟:
1.拿到源代碼,並解壓
tar -xf package-version.tar.{gz|bz2|xz}
注意:展開後的目錄通常為package-version
2.切換至源碼目錄中
cd package-version
3.執行configure腳本
./configure
4.編譯
make
5.安裝
make install
configure腳本的通用功能:
1.指定安裝路徑
--prefix=前綴,用於指定安裝路徑
--prefix=/usr/local/package_name
--sysconfdir=/etc/package_name
2.指定啟動/禁用的特性
--enable-feature:例如--enable-fpm
--disable-fecture;例如 --disable-socket
3.指定所依賴功能、程序或文件
--with-function: 啟用某功能
--without-function: 禁用某功能
不同的程序,其configure不盡相同,應獲取幫助信息
./configure --help
二進制程序的訪問方法
1.vim /etc/profile.d/apache.sh
PATH=/usr/local/apache/bin:/usr/local/apache/sbin:$PATH expore PATH
2.source /etc/profile.d/apache.sh
頭文件輸出給系統
ln -sv /usr/local/apache/include /usr/include/httpd
庫文件輸出
vim /etc/ld.so.conf.d/httpd.conf /usr/local/apache/lib
讓系統重新生成庫文件路徑緩存
ldconfig
輸出man文件
1. vim /etc/man.conf 2. 添加 MANPATH /usr/local/apache/man