1. 程式人生 > >Linux基礎知識之RPM包管理

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程式格式:

 

原始碼:編譯成能夠在其虛擬機器(jvm/pvm)執行的格式;

開發環境:編譯器、開發庫

 二進位制

    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.comhttp://mirrors.sohu.comhttp://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軟件包校驗

Linuxrpm管理

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。 (一)配置你的個性