應用程序 shell前端
————————java
lib callnode
————python
system calllinux
————————c++
硬件redis
————————shell
API:應用編程接口數據庫
ABI:應用二進制接口apache
c/c++程序格式:
源代碼:文本格式的程序代碼
二進制格式:將文本格式的程序代碼經過編譯器編譯成二進制格式
編譯開發環境:編譯器,頭文件,開發庫
java/python程序格式:
源代碼:文本格式的程序代碼
二進制:將源代碼編譯成能在其虛擬機(jvm/pvm)運行的格式
開發環境:編譯器,開發庫
程序包管理器:
源代碼——>目標二進制格式——>組織成一個或有限幾個"包"文件
完成:安裝,卸載,查詢,校驗
程序包管理器:
debian:dpt,dpkg ".deb"
redhat:rpm ".rpm"
suse:rpm ".rpm"
gentoo:ports
源代碼包命令格式:name-version.tar.gz
rpm包命名格式:name-version-release.arch.rpm
如:redis-3.0.2-1.centos7.x64.rpm
拆包:主包和支包
主包:name-version-release.arch.rpm
支包:name-function-version-release.arch.rpm
function:devel,untils,libs
依賴關係:一個程序包的安裝卸載可能須要另外幾個程序包的支持
前端工具:自動解決依賴關係
yum:rhel系類os上rpm的包管理前端工具
apt-get(apt-cache):deb系類os上包管理前段工具
zypper:suse上的rpm包管理前段工具
dnf:Fedora 22+系統上的rpm包管理前端工具
程序包管理器的功能:
1.程序包的組成清單(獨立):文件清單,安裝或卸載時運行的腳本
2.數據庫(公共):/var/lib/rpm
記錄程序包的名稱,版本,依賴關係,功能說明,安裝生成的各文件的文件 路徑及校驗信息等
獲取程序包的途徑:
1.系統發行版本的光盤,官方文件服務器,鏡像站點
2.項目官方站點:如:zabbix.org
3.第三方:(a)EPEL
(b)程序包搜索引擎:pkgs.org,rpmfind.net,rpm.pbone.net
4.本身動手,豐衣足食
建議:檢查其來源的合法性,程序包的完整性
Centos系統上rpm命令管理程序包:
安裝,升級,卸載,查詢和校驗,數據庫維護
rpm命令: rpm [options] [PACKAGE_FILE]
安裝:-i
升級:-U,-F
卸載:-e
查詢:-q
校驗:-V
數據庫維護:--buliddb,--initdb
安裝:rpm -i [install options] PACKAGE_FILE
-v:顯示信息
-vv:更詳細的輸出
-h:以hash標記輸出進度條;每一個進度條表明2%的進度
--test:測試安裝,檢查並報告依賴關係
--nodeps:忽略依賴關係,不建議使用
--replacepkgs:從新安裝
--nosignature:不檢查包的簽名信息,即不檢查來源合法性
--nodigest:不檢查包的完整性
注意rpm能夠自帶腳本,共4類
perinstall:安裝過程以前運行的腳本 %pre
postinstall:安裝完成以後運行的腳本 %post
preuninstall:卸載前運行的腳本 %preun
postuninstall:卸載後運行的腳本 %postun
升級:rpm -Uvh PACKAGE_FILE:升級或安裝
rpm -Fvh PACKAGE_FILE:升級
--oldpackage:降級
--force:強制
注意:1.不要對內核作升級;linux支持多內核版本並存,所以直接安裝新內核
2.若是某原程序包的配置文件安裝後曾被修改,那麼升級後新版本的程序提供的同一個配置 文件不會覆蓋原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)後 提供
卸載:rpm -e PACKAGE_NAME
--allmatches:卸載全部匹配指定名稱的程序包的各版本
--nodeps:忽略依賴關係
--test:測試卸載
查詢:rpm -q [selection options] [query-options]
selection options:
PACKAGE_NAME:查詢指定的程序包是否已安裝及其版本
-a:查詢全部已安裝過的程序包
-f FILE:查詢指定的文件由哪一個程序包安裝生成
-p PACKAGE_FILE:查詢未安裝的程序包的相關信息
--whatprovides CAPABILITY:查詢指定的capability由哪一個程序包 提供
--whatrequires CAPABILITY:查詢指定的capability被哪一個包依賴
query-options:
-changelog:查詢rpm包的changelog
-l:程序安裝生成的全部文件列表
-i:程序包的相關信息,版本號,大小,所屬的包組...
-c:查詢指定的程序包的配置文件
-d:查詢指定的程序包提供的文檔
--provides:列出指定的程序包提供的CAPABILITY
-R:查詢指定程序包的依賴關係
--scripts:查看程序包自帶的腳本
校驗:rpm -V
程序包來源合法性驗證:數字簽名
完整性驗證:
獲取並導入信任的包製做者的密鑰 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CENTOS-7
數據庫重建:
rpm管理數據庫的路徑:/var/lib/rpm
查詢,安裝等操做都經過數據庫進行
rpm [--initdb|--rebuilddb] [--dbpath directory] [--root directory]
--initdb:初始化數據庫,當前無任何數據庫時可實現建立一個新的,當前有數據庫則不會 執行任何操做 --rebuilddb:從新構建,是經過讀取當前系統上以安裝過的程序包進行重建的
yum前端管理工具:
顯示倉庫列表:repolist [all|enabled|disabled]
顯示程序包:list [all]
安裝:install package1 [package2]...
從新安裝:reinstall package1 [package2]...
升級:update package1 [package2]...
降級:downgrade package1 [package2]
檢查可用升級程序包:check-update
卸載:remove
查看程序包簡要信息:info
查看指定的特性(能夠是文件)是由哪一個程序包提供的:provide
清理本地緩存:clean [packages|rpmdb|all]
構建緩存:makecache
搜索:search STRING1 [STRING2]...
查看指定的程序依賴的capabilities:deplist [package1] [package2]...
查看YUM事物歷史(安裝,卸載等信息):history [info|list|packages-list|packages-info]
包組管理的相關命令:
groupinstall group1 [group2]...
grpupupdate group1 [group2]...
grouplist group1 [group2]...
groupremove group1 [group2]...
groupinfo group1 [group2]...
如何使用光盤當作本地YUM倉庫:
1.mount -r /dev/cdrom /media
2.vim /etc/yum.repos.d/base.repo
[base]
name=Centos7 packages
baseurl=file:///media
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CENTOS-7
:wq
yum的命令行選項:
--nogpgcheck:不檢查程序包來源的合法性和程序包的完整性
-y:無需用戶確認安裝
-q:靜默
--disablerepo=xxx:臨時禁用此處指定的repo
--enablerepo=xxx:臨時啓用此處指定的repo
--noplugins:禁用全部插件
YUM的repo配置文件中的可用變量:
$releasesever:當前os發版本的主版本號
$arch:平臺(cpu架構i386,X86_64,PPC)
$basearch:基礎平臺(i386,i486,i586-->i386)
如:http://mirrors.echoh.com/centos/$releasesever/$basearch/OS
建立YUM倉庫:createrepo [option] FILE
源碼包編譯安裝:
源代碼組織格式:
多文件:文件中的代碼間可能存在跨文件依賴關係,因此須要用項目管理工具(make/maven)
開發工具:
autoconf:生成configure腳本
automake:生成Makefile.in
編譯安裝3步驟:
(1)./configure:A經過傳遞參數指定安裝路徑,啓用的特性等,執行時參考用戶指定的Makefile.in 文件生成makefile
B檢查依賴到的外部環境(編譯環境)
(2)make:根據makefile文件,構建應用程序
(3)make install:安裝
開源程序源代碼的獲取:
官方站點:apache.rog,mariadb.org..
託管站點:code.google.com,Github.com,SourceForge
編譯安裝C源代碼程序:
1.提供開發工具(make,gcc),開發環境(開發庫,頭文件,glibc:標準C庫)
yum -y install "Development Tools" "Server Platform Development"
2. ./configure 配置(--help獲取其支持的選項)
選項分類:
指定安裝路徑:--prefix=/PATH/TO/FILE:默認爲/usr/local/xxx
指定system os:System type:做用是實現交叉編譯
可選特性:--disable-FEATURE,--enable-FEATURE
可選包:--with-PACKAGE,--without-PACKAGE
3.make
4.make install
安裝後的配置:
(A)導出程序二進制目錄至PATH環境變量中:
cp xx /etc/profile.d/xx.sh
vim xx.sh
export PATH=/usr/local/http2/bin:$PATH
(B)導出庫文件路徑
添加新的庫文件至/etc/ld.so.conf.d/文件中
讓系統從新生成緩存:ldconfig [-v]
(C)導出頭文件
基於連接的方式(ln -s)
(D)導出幫助手冊:
添加一個MANPATH