本章Blog相關Linux知識點前端
程序:預編譯,編譯(源代碼——>cpu指令),彙編,鏈接node
API:application programing interface 應用程序接口;兼容,意味開發庫接口兼容,所以源代碼可跨平臺python
ABI:application binary interface 應用二進制接口;兼容,編譯後的程序可跨平臺mysql
庫:可執行的程序,自己不能做爲程序執行入口,但能夠被調用;編譯好的二進制格式nginx
頭文件(/usr/include):c++
# which cat 查看一個可執行程序的具體路徑,即外部命令位置git
# ldd /bin/cat 查看可執行程序依賴的共享庫
github
# man -M /usr/locla/nginx/man nginx 調用安裝路徑man 幫助文件,查看命令功能sql
兩臺操做系統相同的平臺,在A主機上編譯的程序,手動遷移到B主機,沒法保證其正常運行,須要保證程序依賴的庫在B主機上存在 。
數據庫
軟件包的組成部分:
二進制程序:默認安裝目錄/bin , /sbin ,/usr/bin ,/usr/sbin ,/usr/local/bin ,/usr/local/sbin
庫文件: 默認安裝目錄/lib ,/usr/lib ,/lib64 , /usr/lib64
頭文件:默認安裝目錄 /usr/include
配置文件:使用純文本文件保存配置信息 ,默認安裝目錄爲/etc
幫助文件:默認安裝目錄爲/usr/share/man ,配置文件/etc/man.conf 包含man 文件 ,info文件 ,readme 等 文件
# man command 到某路徑下查找與命令相同的一般以.gz結尾的壓縮文件的文件名.
例: 編譯安裝的mysql 程序,包括
二進制程序文件:/usr/local/mysql-5.5.54/bin
庫文件:/usr/local/mysql-5.5.54/lib
頭文件:/usr/local/mysql-5.5.54/include
配置文件:/usr/local/mysql-5.5.54/support_files/*.cnf
幫助文件:/usr/local/mysql-5.5.54/man , /usr/local/mysql-5.5.54/README
例: 編譯安裝的httpd 程序,包括
二進制程序文件:/usr/local/httpd-2.2.34/bin
頭文件:/usr/local/httpd-2.2.34/include
配置文件:/usr/local/httpd-2.2.34/conf/
幫助文件:/usr/local/httpd-2.2.34/man , /usr/local/mysql-5.5.54/README
應用程序管理器:
debian:.deb使用dpkg應用程序管理軟件
Redhat:.rpm 使用RPM(RPM is package manager)應用程序管理器
包管理器的基本功能:打包,安裝,查詢 ,升級,卸載,校驗,數據庫管理
應用程序的安裝:
包管理rpm 安裝
使用源碼編譯安裝
通用二進制格式安裝
使用前端管理器工具(yum)安裝
程序包格式:
源程序包格式:name-major.minor.release.tar.{gz|bz2|xz} 例:mysql-5.5.54.tar.gz
rpm 包格式:name-version-release.arch.rpm 例:MySQL-client-5.5.54-1.el6.x86_64.rpm ,一般release中包含版本發行號及適用的os版本
源碼包格式:源碼包擁有10個功能,大多數用戶只用其中的6個功能,餘下的4個分別爲:大包,核心主包,支包,分包。
驗證來源合法性:
源碼包:經過MD5 或SH1 碼校驗
RPM包:經過發行商提供的可信。包括驗證包完整性——校驗碼(MD5 或SH1),驗證來源合法——公鑰(RSA)。
獲取RPM途徑:
發行商提供的光盤或站點服務器
http://mirrors.163.com ,http://mirrors.sohu.com , http://mirrors.aliyutn.com
rpm包管理及命令使用
rpm包管理:
一、校驗包來源合法及軟件包完整性
導入公鑰:
#rpm --import /mnt/RPM-GPG-KEY-CENTOS-6 導入公鑰
驗證來源合法性:
源碼包:經過MD5 或SH1 碼校驗
RPM包:經過發行商提供的可信。包括驗證包完整性——校驗碼(MD5 或SH1),驗證來源合法——公鑰(RSA)。
# rpm [ -K | --checksig ] rpm_name.rpm 檢查包來源合法及軟件包完整性
--nosignature :不檢查來源合法性
--nodigest:不檢查包完整性
例:# rpm -K rpm -K zsh-4.3.10-7.el6.x86_64.rpm --nodigest
二、rpm包安裝
如存在依賴關係,需先解決依賴關係 ;若忽略依賴關係 ,--nodeps
#rpm {-i|--install} [install-options] PACKAGE_FILE ...
-v :顯示詳細信息
-h :以#的個數表示安裝進度
-ivh :通常三者組合使用
--test :僅測試,不執行安裝
--nodeps :忽略依賴關係
--replacepkgs :從新安裝
例:# rpm -ivh zsh-4.3.10-7.el6.x86_64.rpm 安裝zsh包
例:# rpm -ivh zsh-4.3.10-7.el6.x86_64.rpm 從新安裝zsh包
三、rpm包卸載
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]
例 :# rpm -e zsh-4.3.10-7.el6.x86_64 --nodeps 忽略依賴關係,卸載zsh 包
四、rpm包查詢
# rpm {-q|--query} [select-options] [query-options]
query-options
[--changelog] [-c,--configfiles] [-d,--docfiles] [--dump]
[--filesbypkg] [-i,--info] [--last] [-l,--list]
[--provides] [--qf,--queryformat QUERYFMT]
[-R,--requires] [--obsoletes] [--scripts] [-s,--state]
[--triggers,--triggerscripts
-qa:查詢全部安裝的包 例:# rpm -qa apr* 或 # rpm -qa |grep 「^apr」
-qc:查詢安裝包生成的配置文件
-qd:查詢安裝包生成的幫助信息 例# rpm -qd apr
-qi:查詢安裝包的描述信息
-ql:查詢安裝在當前生成的列表信息
-qf:查詢某文件是由那個安裝包生成的 例 # rpm -qf /etc/passwd
-q --scripts :查詢包相關腳本
-p :查詢還沒有安裝的rpm包信息,能夠 -i ,-l,-c等選項組合使用 例:# rpm -qpc zsh-4.3.10-7.el6.x86_64.rpm
五、rpm包升級
# rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
--nodeps :忽略依賴關係
--force :強制安裝
六、校驗安裝後的rpm包
# rpm {-V|--verify} [select-options] [verify-options]
狀態值及含義:
S file Size differs
M Mode differs (includes permissions and file type)
5 digest (formerly MD5 sum) differs
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
例: [root@study Packages]# rpm -V apr 校驗安裝後的rpm包
S.5....T. /usr/lib64/libapr-1.so.0.3.9
七、rpm包數據庫初始化及重建
# rpm {--initdb|--rebuilddb}
--initdb 重建初始化,若是事先不存在,則重建一個管理庫
--rebuilddb 重建管理庫,若存在,則覆蓋
注:這兩個參數是極爲有用,有時rpm 系統出了問題,不能安裝和查詢,大可能是這裏出了問題;
yum repo管理及相關命令
程序包管理器的前段工具:yum(yellowdog update modifier)
一、依賴關係
yum自動解決依賴關係
二、文件服務器(共享rpm包):經過yum所支持的文件共享機制將各個rpm包經過文件服務共享
repository:倉庫
須要的各rpm包
依賴關係、程序包安裝後所可以生成的列表等元數據文件
三、yum客戶端
配置文件,指定各可用的yum倉庫
緩存元數據,yum回到各可用的yum倉庫獲取元數據,並緩存到本地
分析元數據(包的依賴關係),根據具體操做請求完成元數據分析,包括檢查依賴關係、文件列表等信息
執行具體操做
四、客戶端配置文件指定對應服務器的訪問方式
ftp服務器: ftp://server/path_to_repo
http服務器:http://server/path_to_repo
NFS服務器:nfs://server/path_to_repo
file服務器: file:///server/path_to_repo
五、配置yum倉庫,要使用yum管理應用程序,首先爲其配置可用的yum倉庫。
配置文件:/etc/yum.conf ,/etc/yum.repos.d/*.conf
配置文件格式:由兩段組成,相似於Windows的ini配置文件
[main] 主配置段
[repo] 倉庫配置段
配置repo:
[repo_id]
name=string 定義倉庫名稱
baseurl=倉庫訪問路徑。系統中repodata文件目錄,即倉庫目錄
enabled={1|0} 1表明倉庫啓用,0表明倉庫關閉
gpgcheck={1|0} 1表明校驗,0表明不校驗
gpgkey=公鑰路徑(能夠是本地,也能夠是服務器端路徑)
cost=定義此倉庫開銷,默認爲1000 ,值越小越優先使用
六、yum配置文件中可用的四個宏
$releasever :程序的腳本。對yum而言指的是redhat-release版本,只替換爲主版本號。如redhat6.5 ,則 $releasever 表示爲6
$basearch:系統基本架構 ,如i686 ,i586等的基本架構爲i386
$arch:系統架構
$YUM0-9 :在系統定義的環境變量,能夠在yum中使用
例:配置yum倉庫
# vi /etc/yum.repos.d/Base.conf
[base]
name=CentOS-$releasever - Base
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
enabled=1
七、yum相關命令
# yum [options] [command] [package ...]
包管理
* help [command]
* install package1 [package2] [...] -y 安裝指定的程序包
* update | upgrade [package1] [package2] [...] 升級指定的程序包
* downgrade package1 [package2] [...] 降級安裝的程序包
* check-update 檢查可升級的包 例# yum check-update apr
* remove | erase package1 [package2] [...] 刪除yum包,被依賴的包會一同刪除
* repolist [all|enabled|disabled] :列出全部可用的yum倉庫
* reinstall package1 [package2] [...] 從新安裝指定的包
* list [...] 顯示rpm列表 例 # yum list
* info [...] 顯示rpm包信息 例 # yum info apr 等同於 #rpm -qi apr
* clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] 清除緩存
* provides | whatprovides /path/to/somefile 查詢某文件是由那個包安裝生成
* version [ all | installed | available | group-* | nogroups* | grou-plist | groupinfo ]
* history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
包組管理:
* groupinstall group1 [group2] [...] 安裝包組
* groupupdate group1 [group2] [...] 升級包組
* grouplist [hidden] [groupwildcard] [...] 列出全部的包組
* groupremove group1 [group2] [...] 卸載包組
* groupinfo group1 [...] 列出包組信息,注意組名有空格
三個與開發有關的組:
Server Platform Development 服務器開發組
Development tools 基本開發環境組
Desktop Platfrom Development 有圖形程序時,需安裝此組
安裝本地包:
# yum install /path/to/package_file --nogpgcheck 手動禁止檢查來源及合法性
八、yum repository 文件
# yum install createrepo -y 安裝createrepo 功能
# createrepo /path/to/somefile 爲某路徑建立repodata 目錄
ftp mirror 下載包
repodata ,自動生成
repomd.xml :爲repodata中的其餘文件提供元數據信息
實驗1:把本地光盤做爲yum源
步驟:
一、禁用其餘yum源,設置enable=0;清理緩存 # yum clean all
二、建立本地yum源
# vi /etc/yum.repos.d/local.repo
[local_base]
name=Centos-$releasever-$basearch
baseurl=file:///mnt/ 光盤掛載到/mnt/ 目錄
gpgcheck=1
enabled=1
gpgkey=file://mnt/RPM-GPG-KEY-CentOS-6
三、查看確認該yum源是否生效
# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centos.ustc.edu.cn
* extras: mirror.bit.edu.cn
* updates: mirror.bit.edu.cn
repo id repo name status
local_base Centos-6-x86_64 6,518
實驗2:把2張光盤複製到本地做爲yum源
一、禁用其餘yum源,設置enable=0;清理緩存 # yum clean all
二、分別插入2張Centos6.6光盤,並製做本地iso光盤鏡像:
# dd if=/dev/sr0 of=/media/Centos-6.6(1).iso
# dd if=/dev/sr0 of=/media/Centos-6.6(2).iso
三、掛載本地iso文件:
# mount -o loop /media/Centos-6.6(1).iso /usr/local/yum/dvd1
# mount -o loop /media/Centos-6.6(2).iso /usr/local/yum/dvd2
四、配置開機自動掛載 # vi /etc/fstab 添加以下兩行
/media/Centos6.6(1).iso /usr/local/yum/dvd1 iso9660 defaults,loop 0 0
/media/Centos6.6(2).iso /usr/local/yum/dvd1 iso9660 defaults,loop 0 0
五、驗證是否實現開機自動掛載
#mount -a
六、使用createrepo命令建立軟件源目錄
# createrepo /usr/local/yum/ ,將會在 /usr/local/yum目錄下生成repodata的子目錄。
七、調整軟件源配置文件/etc/yum.repos.d/CentOS-Media.repo
# vi /etc/yum.repos.d/CentOS-Media.repo
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///usr/local/yum/ 調整該文件,指向repodata目錄
gpgcheck=1
enabled=1 啓用該軟件源
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
[c6-epel]
name=CentOS-$releasever - Epel
baseurl=http://mirrors.sohu.com/fedora-epel/$releasever/$basearch/
enabled=1
gpgchek=1
gpgkey=http://mirrors.sohu.com/fedora-epel/RPM-GPG-KEY-EPEL-6
八、驗證該本地源生效
[root@study media]# yum repolist enabled
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name status
c6-epel CentOS-6 - Epel 12,455
c6-media CentOS-6 - Media 4,184
repolist: 16,639
[root@study media]# yum install mysql-libs 可正常使用本地yum源
Loaded plugins: fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
* c6-media:
Resolving Dependencies
--> Running transaction check
---> Package mysql-libs.x86_64 0:5.1.73-3.el6_5 will be installed
--> Finished Dependency Resolution
源碼包管理及編譯安裝
程序包管理之編譯安裝:源碼:c ,c++;perl源碼 ;python源碼
應用程序: https://sourceforge.net https://github.com
一、源程序組成:
項目工程:把代碼分散於多個源代碼文件
GNU/make :項目編譯工具
autoconf :configure 腳本
檢查編譯環境是否知足需求,並定義當前程序比哪一時啓用那個特性或功能,以及安裝路徑的定義等
結果:會根據Makefile.in 文件生成makefile文件
automake:生成Makefile.in文件
用於結合configure腳本生成Makefile.in 文件
makefile 文件是make命令的配置文件
二、編譯安裝步驟:
源代碼解壓: #tar -xf package-version.tar.{gz|bz2|xz}
注意:展開後的目錄名一般爲package-version
切換至解壓目錄 # cd package-version
執行./configure 腳本 # ./configure
編譯 # make && make install
三、configure腳本的通用功能
指定安裝路徑 : --prefix=/path_to_somefile
配置文件路徑 : --sysdir=/path_to_somefile
指定啓用特性: --enable-feature ,例 --enable-fpm ;指定禁用特性 : --disable-feature ,例--disable-socket
指定依賴的功能、程序或文件: --with-function 啓用功能 ;--without-function 禁用功能
不一樣的程序,其configure腳本功能不一樣,獲取幫助方式 # ./configure --help
實驗:編譯安裝nginx
一、下載並解壓源碼包:
# wget http://mirrors.sohu.com/nginx/nginx-1.10.3.tar.gz
# tar -xf nginx-1.10.3.tar.gz
二、切換至解壓目錄
# cd nginx-1.10.3
三、執行./configure 腳本
# ./configure --prefix=/usr/local/nginx-1.10.3
四、執行編譯安裝
# make && make install
五、二進制程序設置環境變量
# vi /etc/profile.d/nginx.sh
export PATH=$PATH:/usr/local/nginx-1.10.3/sbin
:wq
# source /etc/profile.d/nginx.sh 重讀環境變量
六、庫文件輸出
# vi /etc/ld.so.conf.d/nginx.conf
/usr/local/nginx-1.10.3/lib
:wq
#ldconfig 讓系統從新生成庫文件路徑緩存
七、頭文件輸出給系統
# ln -sv /usr/local/nginx-1.10.3/include /usr/include/nginx
八、配置文件
# cp /usr/local/nginx-1.10.3/conf/nginx.conf /etc/nginx.conf
九、幫助文件
# vi /etc/man.conf
MANPATH_MAP /usr/local/nginx-1.10.3/bin /usr/local/nginx-1.10.3/man
本章知識點彙總
程序包管理器:rpm ,deb(dpkg)
rpm - RPM Package Manager
導入公鑰:# rpm --import
驗證:# rpm -K | --checksig
安裝: # rpm -ivh ,--replacepkgs ,--nodeps
升級: # rpm -Uvh | -Fvh --force ,--nodeps
卸載: # rpm -e | --erase ,--nodeps
查詢: # rpm -qa | -qc | -qd | -ql | -qi | -qf | -qpl | -q --scripts
校驗: # rpm -V
重建數據庫: # rpm --rebuilddb | --initdb
yum : C/S 架構
yum repository : 文件服務器 (rpm包 + 元數據)
文件服務器格式: ftp:// ,http:// , nfs:// , file:///
生成元數據: # createrepo
yum client:
依賴配置文件:/etc/yum.conf , /etc/yum.repos.d/*.repo
配置yum repo :
[repo_id]
name=
baseurl=
gpgcheck=
enabled=
gpgkey=
cost=
yum 管理命令
安裝: # yum install | reinstall
卸載: # yum remove | erase
查詢升級包:# yum check-update
升級: # yum update | upgrade
降級: # yum downgrade
查詢: # yum info
列出yum repo : # yum repolist
清除緩存: # yum clean
重讀緩存: # yum makecache
列出包組:#yum grouplist
安裝包組: # yum groupinstall
顯示包組信息: # yum groupinfo
刪除包組: # yum groupremove
源碼包管理安裝:
下載源碼包,解壓並切換進入該解壓目錄
./configure 檢查編譯環境,定義特性及功能
make && make install 安裝
輸出: 環境變量,頭文件 ,庫 ,配置文件及幫助文件