您好,登錄后才能下訂單哦!
API:Application Program Interface ABI:Application Binary Interface Unix-like ElF windows exe,msi 庫級別的虛擬化 winE(linux上運行模擬windows) cywin(windows上運行模擬linux) 系統級開發: C/C++:httpd,vsftpd,nginx go 應用級開發: java/Python/perl/ruby/php: java:hadoop,hbase(jvm) Python:openstack(pvm)C/C++程序格式: 源代碼:文本格式的程序代碼 編譯開發環境:編譯器,頭文件,開發庫 二進制格式:文本格式的程序代碼-->編譯器-->二進制格式(二進制程序,庫文件,配置文件,幫助文件) Java/Python程序格式: 源代碼:編譯成能夠在其虛擬機上(jvm/pvm)運行的格式; 開發環境:編譯器、開發庫 二進制: 項目構建工具: c/c++:make java:maven 編譯順序由項目構建工具自行決定(開發者已設置好編譯順序)
源代碼-->目標二進制格式-->組織稱為一個或有限幾個“包”文件; 安裝、升級、卸載、查詢、校驗
程序包管理器:
debian(Ubuntu):dpt,工具:dpkg,程序包以“.deb”結尾 redhat:redhat package manager ,rpm,".rpm";rpm is package manager; S.u.S.E:rpm ,'.rpm'Gentoo:portsArchLinux:
源代碼:name-VERSION.tar.gz VERSION:major.minor.releaserpm包命名格式: name-VERSION-release.arch.rpm VERSION:major.minor.release release.arch:rpm包的發行號 release.os:2.el7.i386.rpm archetecture(架構):i386,x64(amd64),ppc,noarch(沒平臺要求,可以使用在任意平臺架構上)rpm拆包:主包和支包 主包:name-VERSION-release.arc.rpm 支包:name-function-VERSION-release.arc.rpm function:devel(開發包),utils(工具程序),libs(庫文件)依賴關系 X,Y,Z X-->Y,Z Y-->A,B,C C-->Y 前端工具:自動解決依賴關系; yum :rhel系列系統上rpm包管理器的前端工具; apt-get(apt-cache):deb包管理器的前端工具 zypper:suse的rpm管理器前端工具 dnf:Fedora 22+系統上rpm包管理器的前端工具
功能:將編譯好的應用程序的各組成文件打包成一個或幾個程序包文件,從而更方便地實現程序包的安裝、升級、卸載和查看1.程序包的組成清單(每個程序包都單獨實現); 文件清單 安裝和卸載時運行的腳本2.數據庫(公共) 程序包的名稱和版本 依賴關系 功能說明 安裝生成的各文件路徑及校驗碼信息; 等等等 CentOS上的程序包數據庫位置/var/lib/rpm/
(1)系統發行版的光盤或官方的文件服務器(或鏡像站點); http://mirrors.aliyun.com http://mirrors.sohu.com, http://mirrors.163.com(2)項目的官方站點 (3)第三方組織制作的rpm包: (a)EPEL: (b)搜索引擎查找 http://pkgs.org http://rpm.pvone.net http://rpmfind.netstat(4)自己動手,豐衣足食 建議:檢查其合法性(完整性) 來源合法性: 程序包的完整性;
命令介紹
安裝、升級、卸載、查詢和校驗、數據庫維護rpm命令:rpm [OPTION] [PACKAGE_FILE] 安裝:-i,--install 升級:-U,--update,-F,-freshen 卸載:-e,--erase 查詢: -q,--query 校驗:-V ,--verify 數據庫維護:--builddb,--initdb
rpm包安裝
rpm {-i|--install} [install-options] PACKAGE_FILE ... rpm -ivh PACKAGE_FILE... GENERAL OPTIONS: -v:verbose,詳細信息 -vv:更詳細的輸出 [install-options] -h:hash marks輸出進度條;每個#表示2%的進度 --test:測試安裝,檢查并報告依賴關系及沖突消息等; --nodeps:忽略依賴關系,不建議使用,安裝后會不能使用; --replacepkgs:重新安裝:rpm -ivh --replacepkgs zsh-5.0.2-7.el7.x86_64.rpm --nodigest:不檢查包的完整性信息 --nosignature:不檢查包的來源信息及包的完整性注意:rpm可以自帶腳本; 四類: --noscripts preinstall:安裝過程開始之前運行的腳本,%pre: --nopre postinstall:安裝過程完成以后運行的腳本:%post --nopost preuninstall:卸載過程真正開始執行之前運行的腳本,%preun --nopreun postuninstall卸載過程完成以后運行的腳本,%postun --nopostun
rpm包升級
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... rpm {-F|--freshen} [install-options] PACKAGE_FILE ... -U:升級或安裝-F:升級,如果老版本不存在,則不進行安裝 rpm -Uvh PACKAGE_FILE ... rpm -Fvh PACKAGE_FILE ... --oldpackage:降級安裝; --force:強制升級; 注意:(1)不要對內核做升級操作。linux 支持多內核版本并存,因此,直接安裝新版本內核; (2)如果某源程序包的配置文件安裝后曾修改過,升級時。新版本的程序提供的同一個配置文件不會覆蓋原有版本的配置文件。而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;
卸載:
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...--llmatches:卸載所有匹配指定名稱的程序包的各版本--nodos:忽略依賴關系--test:測試卸載,dry run 模式rpm -e zsh
查詢
rpm {-q|--query} [select-options] [query-options] 1. [select-options] rpm -q PACKAGE_NAME:查詢指定的程序包是否已安裝,及其版本; -a,--all:查詢所有已經安裝過的包 -f FILE:查詢指定的文件由哪個程序安裝生成 -p,--package PACKAGE_FILE:用于實現對未安裝的程序包做查詢操作。 --whatprovides CAPABILITY:查詢指定的CAPABILITY(能力)由哪個程序包提供 bin]# rpm -q --whatprovides config\(bash\) bash-4.1.2-40.el6.x86_64 rpm -q --whatprovides zprof.so'()(64bit)' --whatrequires CAPABILITY:查詢指定的CAPABILITY(能力)被哪個包所依賴; 2.[query-options] --changlog:查詢 -l,--list :安裝生成的所有文件列表 -i,--info :查詢程序包相關的information,版本號,大小,所屬的組,等 -c,--configfiles:查詢指定的程序包的配置文件 -d,--docfiles:查詢指定的程序包提供的幫助文檔 --provides:列出指定的程序包的所有CAPABILITY(能力) bin]# rpm -q --provides bash config(bash) = 4.1.2-40.el6 bash = 4.1.2-40.el6 bash(x86-64) = 4.1.2-40.el6 -R,--requires:查詢指定的程序包的依賴關系; --scripts:查看程序包自帶的腳本片段;用法: -qi PACKAGE:信息,qf FILE 文件由哪個包安裝來,qc PACKAGE配置文件,ql PACKAGE:安裝生成的文件列表,-qd,提供的幫助文檔qpi,qpl,qpc...查詢未安裝的程序包的信息。
校驗:
rpm -V zsh #校驗rpm安裝后有沒有被修改過 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@CentOS6 bin]# rpm -V zsh S.5....T. c /etc/zshrc rpm {-V|--verify} [select-options] [verify-options]
包來源合法性驗證和完整性驗證:
來源合法性驗證: 數字簽名: 完整性驗證 rpm --import /media/cdrom/RPM-GPG-KEY-GentOS-7導入密鑰信息 rpm -K zsh-5.0.2-14.el7.x86_64.rpm 獲取并導入信任的包制作者的密鑰: 對于CentOS發行版本來說:rpm --import /etc/pki/rpm-gpg/RPM-KEY-CentOS-7驗證: (1)安裝此組織簽名的程序時,會自動執行驗證 (2)手動過驗證:rpm -K PACKAGE_NAME
數據庫重建:
rpm管理器數據庫路徑:/var/lib/rpm 查詢操作:通過此處的數據庫進行; 獲取幫助: CentOS6:man rpm CentOS 7:man rpmdb rpm {--initdb|--rebuilddb}[-v] [--dbpath DIRECTORY] [--root DIRECTORY] --initdb:初始化數據庫,當前無任何數據庫可初始化創建一個新的;當前有時不執行任何操作 --rebuilddb :重新構建,通過讀取當前系統上所有已安裝過的程序包進行重新創建;
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。