程序包管理:rpm和yum

rpm命令                              軟件包管理

程序包管理

一、概述

(一)API:Application Program Interface  應用編程接口

ABI:Application Binary Interface 應用二進制接口

Unix-line  使用ELF

API可以相同,不同架構的ABI不同

(二)庫級別的虛擬化

在linux上可以運行WinE ,在Windows上可以運行Cywin來實現庫的跨平臺運行

(三)系統級開發

C/C++:httpd,vsftpd,nginx等應用一般對系統要求較高的,使用C/C++來編輯核心程序

(四)應用級開放

java/Python/perl/ruby/php

java:jvm庫

Python:pvm

perl:perl解釋器

ruby:ruby解釋器

php:php解釋器

(五)系統級程序格式:例如c/c++

源代碼:文本格式的程序代碼

編譯開發環境:編譯器,頭文件,開發庫,

二進制格式:文本格式的程序代碼–>編譯器–>二進制格式(二進制程序,庫文件,配置文件,幫助文件)

(六)應用級編程工具程序格式,例如java,python

源代碼:編譯成能夠在其虛擬機上運行的格式

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

二進制

項目構建工具:

c/c++:make

java:maven

二、程序包管理器:

1、源代碼–>目標二進制格式–>組織成為一個或者有限幾個"包"文件

安裝,升級,卸載,查詢,校驗

2、程序包管理器:

debian: dpt工具,dpkg,".deb"后綴

REHL:redhat: redhat package manager–>rpm,".rpm"; rpm is package manager;

SUSE: rpm, ".rpm"

Gentoo: 使用poets機制

ArchLinux: 

3、源代碼: 命名格式 name-VERSION.tar.gz

VERSION包含: major.minor.release

4、rpm包命名格式: 

name-VERSION-release.arch.rpm

VERSION: major.minor.release

release.arch: rpm包的發行號

release.os

archetecture:架構  i386  x64(amd64),ppc  noarch

拆包:主包和子包

主包: name-VERSION-release.acch.rpm

子包: name-function-VERSION-release.arch.rpm

光盤掛載:mount -r /dec/cdrom /media.cdrom

5、依賴關系: 子包依賴于主包,不能獨立存在使用

前端工具: 自動解決依賴關系

yum: rhel系列系統上的rpm包管理器的前端工具

apt-get(apt-cache): deb包管理器的前端工具

zypper:suse的rpm管理器前段工具

dnf: Fedora 22+系統上的rpm包管理器的前端工具

前端管理工具能解決后端管理工具的許多不便之處

三、程序包管理器: rpm

功能: 將編譯好的應用程序的各個組成文件打包成一個或者幾個程序包文件,從而更方便的實現程序包的安裝,升級,卸載,和查詢等管理操作

(1) 程序包的組成清單(每個程序包都單獨實現)

文件清單

安裝或者卸載時運行的腳本

(2) 數據庫(公共)

存儲程序包的名稱和版本

依賴關系

功能說明

安裝生成的各個文件的路徑和校驗碼信息

等等

ls /var/lib/rpm 查看rpm的數據庫

包括:group  name  sigmd5(校驗碼)  triggername發器名稱

四、獲取程序包的途徑

1、系統發行版的光盤或者官方的文件服務器(或者鏡像站點)

http://mirrors.aliyun.com

http://mirrors.sohu.com

http://mirrors.163.com

2 、項目的官方站點

例如: www.zabbix.com

3、第三方組織

(a)EPEL

(b)搜索引擎查找,使用專門的rpm包搜索引擎

http://pkgs.org

http://rpmfind.net

http://rpm.pbone.net

4、自己制作rpm包

建議: 從網站下載完成后, 檢查其合法性

來源合法性

程序包的完整性

五、Centos系統上rpm命令管理程序包

安裝,升級,卸載,查詢,校驗,數據庫維護

1、rpm命令:rpm [OPTION] [PAVKAGE_FILE]

安裝: -i, –install

升級: -U, –update, -F, –freshen

卸載: -e, –erase

查詢: -q, –query

校驗: -V, –verify

數據庫維護: –builddb,–initdb

2、安裝: 

rpm {-i|–install} {install-options} PACKAGE_FILE…

rpm -ivh PACKAGE_FILE…

例如:

安裝zsh

安裝完成之后可以查看

cat /etc/shellls

如果要使用zsh,直接在命令行界面輸入zsh就可以切換到zsh使用,退出使用exit即可

GENERAL OPTION:

-v: berbose,詳細信息

-vv;更詳細的信息

install-options:

-h: 以hash marks輸出進度條,每個#表示2%的進度

–test: 測試安裝,檢查并報告依賴關系及沖突信息等

–nodeps: 忽略依賴關系;不建議使用

–replacepkgs: 重新安裝,但是修改配置文件之后,不會更新配置文件,需要將配置文件刪除后安裝

–replacefiles

–noscripts

注意: rpm包可以帶腳本

四類:

preinstall: 安裝過程開始之前運行的腳本,%pre , –nopre

postinstall: 安裝過程完成之后運行的腳本,%post, –nopost

preuninstall:卸載過程真正開始之前運行的腳本,%preun, –nopreun

postuninstall:卸載過程完成之后運行的腳本,%postun, –nopostun

–nosignature: 不檢查包簽名信息,不檢查來源合法性

–nodigest: 不檢查包完整性信息

3、升級:

rpm {-U|–update} {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)后提供

4、卸載:

-e,–erase

rpm {-e|–erase} [–allmatches] [–nodeps] [noscripts] [–notriggers] [–test] PACKAGE_NAME…

–allmatches: 卸載所有匹配指定名稱的程序包各版本

–notrigger: 不觸發任何操作

–nodeps: 忽略依賴關系

–test: dry run模式,測試卸載

rpm -e 包名

5、查詢:

rpm {-q|query} [select-options] [query-options]


[select-options]

package_name:查詢執行的程序包是否已經安裝,及其版本

-a,–all: 查詢所有已經安裝過的包

rpm -qa | grep ""

-f,–file FILE: 查詢指定的文件由哪個程序包安裝生成

-g,–group GROUP: 查詢指定包組中包含了哪些包

-p,–package PACKAGE_FILE:用于實現對未安裝的程序包執行查詢操作

-whatprovides CAPABILITY: 查詢指定的CAPABILITY由哪個程序包提供

-whatrequires CAPABILITY: 查詢指定的CAPABILITY被哪個包所依賴

[query-options]

–changelog: 查詢rpm包的changelog(歷史改進)

rpm -q –changelog zsh | less

-l,–list: 列出程序包安裝生成的所有程序列表

rpm -ql bash

-i,–info: 查詢程序包相關的信息,版本號,大小,所屬的包組等

rpm -qi bash

-c,–configfiles: 查詢指定的程序包提供的配置文件

rpm -qc bash

-d,–docfiles: 查詢指定的程序包提供的幫助文檔

rpm -qd bash

—provides: 列出指定的程序包提供的所有CAPALIBITY

rpm -q –provides bash

rpm -q –whatprovides 'config(bash)'

rpm -q –whatrequires 'config(bash)'

-R,–requires: 查詢指定的程序包的依賴關系

rpm -q -R bash

–scripts: 查詢程序包自帶的腳本片段

rpm -q –scripts bash

用法:

-qi PACKAGE, 

-qf FILE,

-qc PACKAGE,

-qd PACKAGE

-ql PACKAGE_NAME,

-qpi PACKAGE_FILE

-qpl PACKAGE_FILE

-qpc FILE

-qpd 

6、校驗:

rpm {-V|verify} [select-options] [verify-options]

V–requires,–verify

rpm -V zsh

man page查詢校驗信息的意義

六、包來源合法性和完整性驗證:

1、來源合法性驗證:

數字簽名: 用自己的私鑰加密對應文件的特征碼

2、完整性驗證

導入ios文件的秘鑰包:rpm –import /…/../RPM-GPG-KEY-CentOS-7

手動校驗: rpm -K PACKAGE_FILE

3、獲取并導入信任的包制作者的秘鑰:鏡像文件中存在

在/etc/pki/rpm-gpg 中同樣存在RPM-GPG-KEY-CentOS-7 文件存在

對于centos發行版來說: 使用rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7即可

4、驗證:

(1)安裝次組織簽名的程序時,會自動執行驗證

(2)手動驗證: rpm -K PACKAGE_FILE

七、數據庫重建:

rpm的數據庫位置: /var/lib/rpm

查詢操作: 通過此處的數據庫進行的

獲取幫助:

CentOS6: man rpm

CentOS7: man rpmdb

rpm{–initdb|rebuilddb} –dbpath

–initdb: 初始化數據庫,當前無任何數據庫可實現創建一個新的;當前有時不執行任何操作

–rebuilddb: 重新構建,通過讀取當前系統上所有已經安裝過的程序包重新構建

回顧:

rpm命令實現程序管理

安裝: -ivh ,–nodeps –replacepkgs

卸載: -e. –nodeps

升級: -Uvh  -Fvh .–nodeps  ,–oldpackage 降級

查詢: -q ,-qa,-qf,-qi,-qd,-qc,–scripts,-q –changelog,

-q –provides ,-q –requires

校驗: -V

導入GPG密鑰文件: –import,-K(直接檢測,不用安裝),–nodigest(不檢查完整性) ,–nosignature(不檢測來源合法性)

數據庫重建: –initdb ,–rebuilddb

yum命令                         程序包管理

一、解決依賴關系:

CentOS: yum,dnf

URL:統一資源定位符

yum repository: rpm repo

存儲了眾多rpm包,以及包的相關的元數據文件(放置于特定目錄下: repodata):  

1、文件服務器格式

baseurl=

ftp://

http://

nfs://

file:///

2、yum客戶端

配置文件

rpm -q yum 查看yum文件

rpm -qc yum  配置文件  

/etc/yum.conf:為所有倉庫提供公共配置,或者不屬于倉庫的配置

/etc/yum.repos.d/*.repo: 為每一個倉庫的指向提供配置

獲取配置文件的幫助信息: man yum.conf

倉庫指向的定義:(含有選項的,前邊數值為默認數值)

[repositoryID]

name=some name for this repository

baseurl=url://path/to/repository(可以指定多個URl)

mirrorlist=(鏡像文件,一般不會和URL同時使用)

enabled={1|0}(是否啟用)

gpgcheck={1|0}(是否檢查來源合法性)

repo_gpgcheck={1|0}(是否檢查元數據的來源合法性)

gpgkey=URL(gpg的密鑰文件的訪問路徑)

enablegroup={1|0}(是否使用組來批量管理程序包)

failovermethod={roundrobin(輪詢)|priority(優先級)}(故障轉移方法)(指定多個baseurl時發生故障如何查詢)

keepalive={1|0}

username

passwd

cost=1000(默認)

自己配置yum源

vim   *.conf

[base]

name=

baseurl=

gpgcheck=0

[epel]

name=

baseurl=

gpgcheck=0

二、yum命令的使用

yum [options] [command] [package …]

command is one of :

repolist [all|enabled(默認啟用)|diaabled(禁用)]  顯示倉庫列表

list 顯示程序包

list optionss

# yum list [通配符]

# yum list available [通配符](可用)

# yum list updates [通配符](可升級)

# yum list installed [通配符](可安裝)

安裝

install package1 package2 …  

重新安裝

reinstall package1 package2 … 

降級

downgrade package1 [package2] […] 

升級制定程序包

update   

yum update [package1] [package2] …

檢查可用升級

check-update 

  

卸載程序包

remove | erase package1 [package2] … 

  

查詢包的簡要信息

info        

info […]

查看指定的特性(可以是某文件)是由哪個程序包所提供的

provides | whatprovides feature1 [feature2] […]  

清理本地緩存

clean [ packages(程序包) | metadata(元數據) | expir-cache(過期緩存) | rpmdb | plugins(插件) | all ]

構建緩存

makecache   

搜索:以指定的關鍵字搜索程序包名及summary信息

search [string1] [string2] […]  

查看指定包所依賴的capabilities

deplist package1 […]  

      

查詢yum事務歷史

history [ info | summary(概要) | packages-list | packages-info | addon-info | redo | undo …]   

安裝及升級本地程序包

localinstall 

包組管理的相關命令

groupinstall  group1  […]

groupupdate

grouplist

groupremove

groupinfo

四、如何使用光盤當作本地yum倉庫

(1)掛載光盤到某目錄

# mount -r -t 

(2)創建配置文件

[CentOS7]

name=

baseurl=

gpgcheck=

enabled=

五、yum的命令行選項

–nogpgcheck: 禁止進行 gpg check

-y: 自動回答為"yes"

-q, –quiet靜默模式

–disablerepo=repoidglob:臨時禁用此處指定的repo

–enablerepo=repoidglob:臨時啟用此處指定的repo

–noplugins: 禁用所有插件

六、yum的repo配置文件中可用的變量:

$releasever: 當前OS的發行版的主版本號

$arch: 平臺

$basearch: 基礎平臺

$YUM0-YUM9

http://mirrors.站點.com/centos/$releasever/$arch/$basearch/OS

1、創建yum倉庫

安裝:yum install createrepo

使用createrepo命令創建:

get到目標目錄下

createrepo [options] <directory>

createrepo ./  查看當前目錄的rpm包,并進行創建yum源

編寫配置文件

2、程序包的編譯安裝:

testapp-VERSION-release.src.rpm –>安裝后,使用rpmbuild命令制作成二進制的rpm包,而后安裝

源代碼 –> 預處理 –> 編譯(gcc) –> 匯編 –> 鏈接 –> 執行

源代碼的組織格式:

多文件:文件中代碼之間,和可能存在跨文件依賴關系

項目管理工具

c/c++: make(configure –> Makefile.in –> makefile)

java: maven

C代碼編譯安裝三步驟:

(1)./configure: 

    <1> 讓用戶通過選項傳遞參數,指定啟用特性、安裝路徑等;執行時會參考用戶的指定以及Makefile.in文件生成的makefile

    <2> 檢查各指定啟用特性所依賴的外部環境

(2)make

根據makefile文件,構建應用程序

(3)make install

開發工具:

autoconf: 生成configure腳本

automake: 生成Makefile.in文件

建議: 安裝前查看INSTALL, README

3、開源程序源代碼的獲取:

官方自建站點:

apache.org(ASF)

mariadb.org

代碼托管:

SourceForge

Github.com

code.google.com

4、c/c++: gcc編譯器 (GNU C Complier)

編譯C源代碼:

前提: 提供開發工具和開發環境

開發工具: make, gcc等

開發環境: 開發庫,頭文件

glibc: 標準庫

通過“包組”提供開發組件

CentOS 6: "Development Tools", "Server Platform 

Development",

第一步: configure腳本

選項: 指定安裝位置、指定啟用的特性

–help: 獲取其支持使用的選項

mget、scp命令如何使用

選項分類:

安裝路徑設定

–prefix=/PATH/TO/SOMEWHERE:指定默認安裝位置,默認為/usr/local/

–sysconfdir=/PATH/TO/SOMEWHERE:指定配置路徑

System types: 目標系統平臺結構

Optional Features: 可選特性的啟用

–disable-FEATURE: 禁用特性

–enable-FEATURE: 啟用特性

Optional Packages: 可選程序包(依賴到的程序包)

–with-PACKAGE

–without-PACKAGE

例如:~]# yum groupinstall Server Platform Development -y

   ~]# ./configure –prefix=/usr/local/apache2 –sysconfdir=/etc/http2

第二部: make

cd http-2.2.29

make install

netstat -tan

第三部: make install

安裝后的配置:

(1) 導出二進制程序目錄至PATH環境變量中

編輯文件/etc/profile.d/NAME.sh

添加export PATH=/PATH/TO/BIN:$PATH

(2) 導出庫文件路徑

編輯/etc/ld.so.conf.d/NAME.conf

添加新的庫文件所在目錄至此文件中

讓系統重新生成緩存:

ldconfig [-v]

(3) 導出頭文件

基于軟鏈接的方式實現即可,可以是文件,也可以是目錄文件

ln -sv

將目標文件下的include文件路徑輸出到/usr/include目錄下

(4) 導出幫助手冊

編輯/etc/man.config文件

添加一個MANPATH參數,并指明新路徑即可

例如: 在/etc/man.config中添加

原創文章,作者:black_fish,如若轉載,請注明出處:http://www.www58058.com/37408

(0)
black_fishblack_fish
上一篇 2016-08-21 20:46
下一篇 2016-08-21 20:46

相關推薦

  • 文件搜索之find的使用

    一.find介紹:   find是Linxu中一個十分常用的文件查找工具,其工作原理是通過遍歷啟起始路徑下文件層級結構完成的,其特點是查找速度慢,能做到實時查找和精確查找。 二.使用方法: find  start_path search_conditions  action 1.statr_path:所要查找的文件的起始位置,默…

    Linux干貨 2016-11-01
  • vsftpd基于mysql進行虛擬用戶管理

    概述:     FTP是我們日常工作中經常用到的一個服務,但是FTP對用戶的管理卻比較薄弱,默認狀態下,FTP利用pam機制進行賬號管理,默認情況下使用的是系統賬號,如何提升FTP對用戶管理的有效性,針對不同的用戶設定不同的上傳權限,這就要基于虛擬賬號來管理了,本篇就介紹下在vsftpd利用pam機制,結合mysql實…

    Linux干貨 2016-10-18
  • 搭建簡單的ftp和http

    搭建簡單的ftp和http 我們主要嘗試光盤和編譯兩種方式安裝 ftp 首先我們先安裝ftp ftp可以用來做文件傳輸,也可以搭建ftp作為我我們的網絡yum源 首先我們要先把鏡像連接到我們的Linux中 進入/etc/yum.repos.d/創建一個.repo結尾的文件,在里面配置自己的yum源 [base] baseurl=file:///misc/cd…

    2017-06-15
  • 基礎命令。

    簡單基礎小命令 查看目錄 ls 查看當前路徑下的目錄 ls -a 查看當前路徑下的所有目錄,包含隱藏目錄(帶.的就是隱藏) ls -A 跟-a一樣,只是不顯示上一路徑和本身路徑(就是.和..) ls -l 顯示額外的信息 ls -R 進入每個文件夾查看(遞歸) ls -ld 查看元數據 ls -1(數字) 排列 ls -r 倒序 ls -t 按修改時間排序 …

    Linux干貨 2017-05-29
  • YUM 的使用和YUM源的配置

    簡介     yum(Yellow dog Updater Modified)是CentOS中屬于RPM前端軟件包管理器,能從指定的服務器中下載RPM包,并自動分析和處理RPM包之間的依賴關系,最后將依次所依賴的軟件包都安裝了,而無需繁瑣的一個一個安裝。 一 yum repository:yum倉庫 yum倉庫的組成部…

    Linux干貨 2016-02-14
  • 權限管理和文本過濾

    1.復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限 [root@study ~]# cp -r /etc/skel/ /home/tuser1|chmod -R 700 tuser1/ [root@…

    Linux干貨 2016-11-20

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-21 22:52

    文章對rpm包管理相關知識總結的很詳細,其中rpm包管理工具中查詢語句和yum源配置是基本能力,需要多加練習,熟練掌握。

欧美性久久久久