Linux基礎知識之RPM包管理
一、程式包管理概述
1.程式包語言
(1)系統級開發:一般直接呼叫硬體
C/C++:httpd, vsftpd, nginx
go語言
(2)應用級開發:java/Python/perl/ruby/php:
java: hadoop, hbase, (基於jvm虛擬機器)
Python:openstack, (基於pvm虛擬機器)
perl: (perl直譯器
ruby: (ruby直譯器)
php: (php直譯器)
2.程式語言格式
(1)C/C++程式格式:
原始碼:文字格式的程式程式碼;
編譯開發環境:編譯器、標頭檔案、開發庫
二進位制格式:文字格式的程式程式碼 --> 編譯器 --> 二進位制格式(二進位制程式、庫檔案、配置檔案、幫助檔案)
(2)java/python程式格式:
開發環境:編譯器、開發庫
二進位制
3.專案構建工具:
c/c++: make
java: maven
4.程式包管理器:要完成安裝、升級、解除安裝、查詢、校驗(校驗為Linux所有)功能
(1)功能
將編譯好的應用程式的各組成檔案打包成一個或幾個程式包檔案,從而更方便地實現程式包的安裝、升級、解除安裝和查詢等管理操作;
(2)
1)程式包的組成清單(每個程式包都單獨實現):檔案清單、 安裝或解除安裝時執行的指令碼
2)資料庫(公共):/var/lib/rpm/
程式包的名稱和版本、依賴關係、 功能說明、安裝生成的各檔案的檔案路徑及校驗碼資訊...
(3)不同系列Linux所用程式包管理器:
debian:dpt, dpkg, ".deb"
redhat:redhat package manager, rpm, ".rpm"; rpm is package manager;
S.u.S.E:rpm, ".rpm",
Gentoo:ports
ArchLinux:
5.包的命名格式
(1)原始碼:name-VERSION.tar.*z
VERSION:major.minor.release 主版本號.次版本號.發行號
(2)RPM包:name-VERSION-release.arch.rpm
VERSION:major.minor.release
release.arch:rpm包的發行號,arch 平臺號
6.RHEL製作RPM包時會拆包:主包和支包,方便安裝所需要元件而非全部
主包:name-VERSION-release.arch.rpm
支包:name-function-VERSION-release.arch.rpm
function(功能):devel, utils, libs, ...
7.程式包管理器前端工具:自動解決依賴關係;
yum:rhel系列系統上rpm包管理器的前端工具;
apt-get (apt-cache):deb包管理器的前端工具;
zypper:suse的rpm管理器前端工具;
dnf:Fedora 22+系統上rpm包管理器的前端工具,yum的升級版;
8.獲取程式包的途徑:
(1)系統發行版的光碟或官方的檔案伺服器(或映象站點):
http://mirrors.aliyun.com、http://mirrors.sohu.com、http://mirrors.163.com
(2)各個專案自己的官方站點
(3)第三方組織:
1) EPEL等可靠地開源社群組織
2) 搜尋引擎:http://pkgs.org、 http://rpmfind.net 、http://rpm.pbone.net
(4)自動編譯二進位制程式碼、製作
二、RPM包管理
rpm命令:rpm [OPTIONS] [PACKAGE_FILE]
安裝:-i, --install
升級:-U, --update, -F, --freshen
解除安裝:-e, --erase
查詢:-q, --query
校驗:-V, --verify
資料庫維護:--builddb, --initdb
1.安裝:
(1)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:重新安裝
--nosignature:不檢查包簽名信息,不檢查來源合法性;
--nodigest:不檢查包完整性資訊;
注意:rpm可以自帶指令碼;
四類:--noscripts
preinstall:安裝過程開始之前執行的指令碼,%pre , --nopre
postinstall:安裝過程完成之後執行的指令碼,%post , --nopost
preuninstall:解除安裝過程真正開始執行之前執行的指令碼,%preun, --nopreun
postuninstall:解除安裝過程完成之後執行的指令碼,%postun , --nopostun
(2)例項演示
1)[[email protected] Packages]#rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm #安裝zsh程式,顯示過程
[[email protected] Packages]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm 準備中... ################################# [100%] 正在升級/安裝... 1:zsh-5.0.2-28.el7 ################################# [100%]
2.升級:
(1)rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
-U:升級或安裝 -Uvh; rpm -Uvh PACKAGE_FILE ...
-F:純粹升級,必須存在老版本,不支援安裝操作 -Fvh rpm -Fvh PACKAGE_FILE ...
--oldpackage:降級;
--force:強制升級;
注意:
1) 不要對核心做升級操作;Linux支援多核心版本並存,可直接安裝新版本核心;
2) 如果某原程式包的配置檔案安裝後曾被修改過,升級時,新版本的程式提供的同一個配置檔案 不會覆蓋原有版本的配置檔案,而是把新版本的配置檔案重新命名(FILENAME.rpmnew)後提供;
(2)例項演示
[[email protected] Packages]# rpm -Uvh zsh-5.0.2-28.el7.x86_64.rpm
[[email protected] Packages]# rpm -Uvh zsh-5.0.2-28.el7.x86_64.rpm 準備中... ################################# [100%] 軟體包 zsh-5.0.2-28.el7.x86_64 已經安裝
3.解除安裝:
(1)rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts] [--test] PACKAGE_NAME ...
--allmatches:解除安裝所有匹配指定名稱的程式包的各版本;
--nodeps:忽略依賴關係
--test:測試解除安裝,dry run模式
(2)例項演示
1)[[email protected] Packages]#rpm -e --test zsh #測試解除安裝zsh
[[email protected] Packages]#rpm -ql zsh #檢視zsh程式安裝所生成的所有檔案列表
結論:--test不會真的解除安裝程式
[[email protected] Packages]# rpm -e --test zsh [[email protected] Packages]# rpm -ql zsh /bin/zsh /etc/skel/.zshrc /etc/zlogin /etc/zlogout /etc/zprofile
2)[[email protected] Packages] rpm -e zsh
#解除安裝程式
[[email protected] Packages]# rpm -e zsh [[email protected] Packages]# rpm -ql zsh 未安裝軟體包 zsh [[email protected] Packages]#
4.查詢:
(1)rpm {-q|--query} [select-options] [query-options]
[select-options]
PACKAGE_NAME:查詢指定的程式包是否已經安裝,及其版本;
-a, --all:查詢所有已經安裝過的包;
-f FILE:查詢指定的檔案由哪個程式包安裝生成;
-p, --package PACKAGE_FILE:用於實現對未安裝的程式包執行查詢操作;
--whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個程式包提供;
--whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴;
[query-options]
--changelog:查詢rpm包的changlog;
-l, --list:程式安裝生成的所有檔案列表;
-i, --info:程式包相關的資訊,版本號、大小、所屬的包組,等;
-c, --configfiles:查詢指定的程式包提供的配置檔案;
-d, --docfiles:查詢指定的程式包提供的文件;
--provides:列出指定的程式包提供的所有的CAPABILITY;
-R, --requires:查詢指定的程式包的依賴關係;
--scripts:檢視程式包自帶的指令碼片斷;
用法總結:
-qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE
-qpi PACKAGE_FILE, -qpl PACKAGE_FILE, -qpc PACKAGE_FILE, ...d
(2)例項演示
1)[[email protected] Packages]# rpm -ql sed
#查詢程式安裝所以生成的所有檔案列表
[[email protected] Packages]# rpm -ql sed
2)[[email protected] Packages]# rpm -qi sed
#顯示程式的相關資訊
[[email protected] Packages]# rpm -qi sed Name : sed Version : 4.2.2 Release : 5.el7 Architecture: x86_64 Install Date: 2018年12月10日 星期一 05時28分49秒 Group : Applications/Text Size : 601208 License : GPLv3+ Signature : RSA/SHA256, 2014年07月04日 星期五 12時58分02秒, Key ID 24c6a8a7f4a80eb5 Source RPM : sed-4.2.2-5.el7.src.rpm Build Date : 2014年06月10日 星期二 09時01分55秒 Build Host : worker1.bsys.centos.org Relocations : (not relocatable) Packager : CentOS BuildSystem <http://bugs.centos.org> Vendor : CentOS URL : http://sed.sourceforge.net/ Summary : A GNU stream text editor Description : The sed (Stream EDitor) editor is a stream or batch (non-interactive)
3)[[email protected] Packages]# rpm -qd sed #檢視包所提供文件位置
[[email protected] Packages]# rpm -qd sed /usr/share/doc/sed-4.2.2/AUTHORS /usr/share/doc/sed-4.2.2/BUGS /usr/share/doc/sed-4.2.2/COPYING /usr/share/doc/sed-4.2.2/COPYING.DOC /usr/share/doc/sed-4.2.2/NEWS /usr/share/doc/sed-4.2.2/README /usr/share/doc/sed-4.2.2/THANKS /usr/share/doc/sed-4.2.2/sedfaq.txt.gz /usr/share/info/sed.info.gz /usr/share/man/man1/sed.1.gz
4)[[email protected] Packages]# rpm -qc zsh #顯示zsh相關的配置檔案的位置
[[email protected] Packages]# rpm -qc zsh /etc/skel/.zshrc /etc/zlogin /etc/zlogout /etc/zprofile /etc/zshenv /etc/zshrc
5)[[email protected] Packages]# rpm -q --changelog zsh #查詢zsh的改變日誌
# 從近到遠顯示出該程式每次改版更新的相關資訊
[[email protected] Packages]# rpm -q --changelog zsh \* 四 2月 16 2017 Kamil Dudka <[email protected]> - 5.0.2-28 - zero new space allocated in prompt buffer (#1408619) * 一 11月 28 2016 Kamil Dudka <[email protected]> - 5.0.2-27 - fix parsing of parameter subscript expression with NOEXEC (#1398740) * 一 10月 17 2016 Kamil Dudka <[email protected]> - 5.0.2-26 - fix crash while parsing the here-document syntax (#1374752) * 四 7月 14 2016 Kamil Dudka <[email protected]> - 5.0.2-25 - improve use of new command substitution in completion (#1356388) * 五 6月 10 2016 Kamil Dudka <[email protected]> - 5.0.2-24 - fix off-by-one error in completion utility cache code (#1344599)
5.校驗:
(1)rpm {-V|--verify} [select-options] [verify-options]
S file Size differs #檔案大小改變
M Mode differs (includes permissions and file type) #檔案許可權改變(包括許可和檔案型別)
相關推薦
Linux基礎知識之RPM包管理
一、程式包管理概述 1.程式包語言 (1)系統級開發:一般直接呼叫硬體 C/C++:httpd, vsftpd, nginx go語言  
Linux基礎知識之系統磁碟管理
一、linux系統中的磁碟管理 1.本地儲存裝置的識別 fdisk -l &nbs
Linux基礎知識之包管理工具
1、每12小時備份並壓縮/etc/目錄至/backup目錄中,儲存檔名稱格式為,“etc-年-月-日-時-分.tar.gz” [[email protected] backup]# tar -czv -f /backup/etc-"$(date
Linux基礎知識之用戶和用戶組以及 Linux 權限管理
space 屬性 並且 用戶表 相同 發行版 切換 用戶登錄 是什麽 已經開始接觸Linux用戶管理,用戶組管理,以及權限管理這幾個逼格滿滿的關鍵字。這幾個關鍵字對於前端程序猿的我來說真的是很高大上有木有,以前嘗試學 Linux 的時候看到這些名詞總是下意識的跳過不敢看有木
Linux之 RPM包管理-yum線上管理-光碟yum源
常識:光碟yum源搭建 1、鑑於網路速度慢等原因,生產等更實際的使用為光碟yum源。但光碟yum源,可能的缺點是:版本比較老,但伺服器,一般以穩定優先考慮,所以用光碟很正常。 2)掛載光碟 mount /dev/cdrom /
Linux 學習之RPM包管理-yum線上管理-yum命令
yum常用命令: 注:yum線上管理 1、查詢:查詢所有可用軟體包列表 yum list 用法,連線網路的情況下,任何地方都可以執行該命令進行查詢 2、yum search 關鍵字 搜尋伺服器上所有和關鍵字相關的包 3)yum 安裝: yum -y i
Linux基礎知識之磁碟管理
1、描述GPT是什麼,應該怎麼使用。 早期磁碟第一個扇區裡面含有的重要資訊我們稱為 MBR (Master Boot Record) 格式,但是由於近年來磁碟的容量不斷擴大,造成讀寫上的一些困擾, 甚至有些大於 2TB 以上的磁碟分割槽已經讓某些作業系統無
Linux學習之RPM包管理-rpm命令管理(十六)
gho 程序包 命令管理 屬組 有一個 ali i386 bili 所有 Linux學習之RPM包管理-rpm命令管理 目錄 簡介 RPM包依賴性 包全名與包名 rpm軟件包安裝 rpm軟件包卸載 升級降級rpm軟件包 rpm軟件包的查詢 rpm軟件包校驗
Linux之rpm包管理
med 穩定 chan for ... ack mode des 來源 rpm包管理 註意:內核不推薦升級,如果需要新版內核,可進行安裝,linux可多版本內核共存,啟動時進行內核選擇即可,以免造成不穩定因素。/var/lib/rpm 不要破壞,幾乎不可重建,重建後數據也
【Linux相識相知】rpm包管理
降級 atp option mach code import signature sub 不執行 我們日常在使用Windows的時候,如果要安裝某個軟件,最簡單的方法就是在程序包的官網直接下載軟件包到本地,一般是以.exe或者.msi格式的文件,然後一直下一步下一步就能安裝
Linux基礎命令之文件管理
linux文件管理 BASH Shell 對文件進行管理=============================================================創建、復制、刪除、移動、查看、編輯、壓縮、查找內容提要:Linux目錄結構文件定位 路徑文件管理一:Linux的目錄通常
linux基礎知識之vi編輯器的使用
所在 unix .com 文章 插入 oot 更改 位置 tro 在介紹vi編輯器之前,我們先了解一下Linux系統中別名的使用(文章知識書寫來自博主蟲師,感謝博主) 別名就是不同的兩個名字指的是一個人,不同的兩個命令具有相同的作用。 現在,你一定很想知道自己的
Linux 基礎知識( rpm 命令安裝軟體 、第三方平臺的搭建 和 網路源)
一、RPM簡單介紹 RPM是Linux開發商將原始碼在特定硬體平臺和作業系統平臺上編譯後,記載軟體相依性應編輯成檔案,並將這兩者打包成的一個特殊格式的檔案。使用RPM安裝後,各文件會被安裝到特定的目錄下,所以很方便查詢、升級(使用YUM)與解除安裝。 二、下載軟體安裝包 我的軟體
Linux基礎知識之DHCP服務
一、DHCP服務簡介 DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)是一個區域網的網路協議,使用UDP協議工作, 主要有兩個用途:給內部網路或網路服務供應商自動分配IP地址,給使用者或者內部網路管理員作為對所有計算機作中央管理的手段。
Linux基礎知識之常用命令
1、Linux上的檔案管理類命令都有哪些,其常用的使用方法及其相關示例演示。 主要命令:cd、ls、pwd、cat、cp、mv、rm等,主要說明後三種: 1)cp命令:複製 &nb
Linux基礎知識之檔案隱藏屬性
這幾天溫習下 Linux 基礎知識,基礎裡面較為薄弱的知識點我會在這裡記錄一下,以便回頭檢視 Linux 下的檔案除了許可權屬性,還有一些隱藏屬性,必須使用lsattr來顯示,如下所示: Shell [root@localhost ~]# lsattr
Linux基礎知識之xargs命令
昨天在給伺服器做年終“大掃除”整理時,發現有個目錄下因為檔案過多而刪除失敗,最終使用 xargs 才搞定,於是順便來記錄下。 在執行某些命令時,當 Linux 某個目錄下檔案過多就會因為“引數列表過長”而報錯無法執行。比如,我要清空/var/spool/clientmqueue/下的龐大數量的臨時檔案,如果
Linux基礎知識之IO效能監控工具iostat命令詳解
Linux系統出現了效能問題,一般我們可以通過top、iostat、free、vmstat等命令來檢視初步定位問題。其中iostat可以提供更豐富的IO效能狀態資料。 1. 基本使用 $iostat -d -k 1 10 引數 -d 表示,顯示裝置(磁碟)使用狀態;-k某些使用block為單位的列強
Linux基礎知識之ntpd和ntpdate的區別
在Linux作業系統設定與上級NTP時鐘源同步是很基本的操作,Linux提供了ntpd和ntpdate兩種方式來實現時間同步,但它們在同步原理上則有著本質的區別:ntpd在實際同步時間時是一點點的校準時間的,也可以理解為ntpd是平滑同步;而ntpdate不會考慮其他程式是否會陣痛,就立即同步。因此
Linux基礎知識之vim使用技巧彙總
vim是Vi IMproved,是編輯器Vi的一個加強版,一個極其強大並符合IT工程師(程式設計師、系統運維)習慣的編輯器。如果你是一名職業的系統工程師,那麼一定在尋找一款出色的能夠自由定製、滿足靈活編輯功能的編輯器。那麼答案,就是vim或者Emacs。這裡要介紹的是前者vim。 (一)配置你的個性