1. 程式人生 > 實用技巧 >linux-軟體包管理

linux-軟體包管理

時間:2015.09.20

linux-軟體包管理

程式包管理介紹

在 GNU/Linux( 以下簡稱 Linux) 作業系統中,RPM 和 DPKG 為最常見的兩類軟體包管理工具,他們分別應用於基於 RPM 軟體包的 Linux 發行版本和 DEB 軟體包的 Linux 發行版本。軟體包管理工具的作用是提供在作業系統中安裝,升級,解除安裝需要的軟體的方法,並提供對系統中所有軟體狀態資訊的查詢。

程式包的組成

程式包是由以下部分組成

二進位制程式:程式包最核心的組成部分,通常放在/bin, /sbin,/ /usr/bin, /usr/sbin,
庫檔案:其主要是實現二進位制檔案和程式碼共享通常存放在/lib64, /usr/lib64

配置檔案:/etc
幫助檔案:其形式有manual, info

這裡我們主要來介紹一下RPM包;其主要操作有:

打包:一個單一的歸檔檔案中;

安裝:把包放到其相應的檔案中去
解除安裝:就是手機程式包的資訊統一到一起,然後刪除

升級:就是新版本應用替換老的程式
查詢:實現檢視一個程式安裝的有什麼功能和程式的路徑位置

校驗:是檢查程式包安裝完以後其檔案是否被篡改了

程式分包機制

分為:核心包和支包

其命名機制

核心包testapp-version

支包testapp-devel-version

version:major.minor.release

主版本號.次版本號.release號

例:base-4.2.4.tar.gz

rpm的命名機制

包名-版本-release.arce.rpm

例:bash-4.2.4-1.el7.x86_64.rpm

分解:

bash包名

4主版本號

2次版本號

4release號

1.el7release號 是rpm的發行號

x86_64平臺架構

包和包之間:有可能存在依賴關係

如何獲取rpm包:
1、發行版提供的程式包;
2、Fedora-EPEL
3、專案的官方站點
4、搜尋引擎
http://rpmfind.net
http://rpm.pbone.net
http://pkgs.org

5、光碟

下面我們來看一下rpm是如何安裝的

首先我們這裡先掛載自己的光碟,如下圖

wKioL1X9cgqhkWScAAHObOBfJz4572.jpg

命令格式

rpm [option]包名

rpm –i[v|h] [--excludedocs |prefix |test |replace[pkgs |files] |nodeps] sudo

[解析] i為安裝,v為顯示詳細資訊,h為hash是進度資訊

如圖:

wKiom1X9cRbjlrOzAAEkFPlSmP0397.jpg

前面我們說過rpm包會有依賴關係的,我們以下圖為例,下圖中我們安裝的rpm包就會有它的先決條件包,而我們要想安裝這個rpm包除了先把其的先決條件包安裝完的方法外,我們還有如下選項 --nodeps忽略依賴關係,這是這樣安裝完之後程式可能無法執行,例:

wKiom1X9dBKi7WioAAImIwfKPYA349.jpg

有的時候我們安裝完的程式包,我們還可以重新安裝,其命令就是--replacepkgs重灌程式包

wKioL1X9d2vjw0TcAAKbgnYhB8g079.jpg

檢視程式包是否安裝,我們使用rpm -q報名或者rpm -ql報名顯示此包的安裝位置,如下圖:

wKiom1X9dgmhEKpwAACM3d66eqE365.jpg

rpm的升級

常用選項

rpm -Uvh package.rpm

rpm -Fvh package.rpm

-Uvh: 如果有舊版程式包,則升級之;如果沒有,則安裝之;
-Fvh: 如果有舊版程式包,則升級之;如果沒有,則不安裝;

這裡找不到升級包了就不做升級了

rpm的解除安裝

格式:rpm -ev package

如下圖:

wKiom1X9gFnxh0ReAAISWeqmqaM887.jpg

rpm的查詢

格式:rpm -qapackage查詢已安裝的包

如下圖:

wKiom1X9f3-BEiqRAACWhfz8FBA016.jpg


rpm -qcpackage查詢已安裝軟體生成了哪些配置檔案

wKiom1X9gY3wTgQsAACn7_JZpGc876.jpg

rpm -qdpackage查詢已安裝軟體生成了哪些文件

wKioL1X9hCmBaXf3AAQIrEOYa-Q362.jpg


rpm -ql package 顯示軟體包中的檔案列表

顯示太多就不截圖了

rpm -qipackage 顯示軟體包資訊

wKiom1X9g1KheGJ8AARBBReG4PI561.jpg

rpm -qf /path/查詢此路徑所屬的軟體包

wKioL1X9hhCR8VS4AACKRutsUBc922.jpg

rpm的校驗

rpm -V package

S 為檔案大小是否改變

5 為檔案的md5校驗值

L 連結檔案

T 檔案建立時間時間戳是否改變

D 裝置檔案是否改變或者是否匹配

U 檔案的使用者是否改變

G 檔案的使用者組是否改變

M 檔案的許可權是否改變

包校驗:
來源合法性驗正:非對稱加密
完整性驗正:單向加密
匯入金鑰:rpm --import /PATH/TO/KEY_FILE

校驗:rpm -K /PATH/TO/RPM_FILE

=====================包管理的yum=======================
yum百科

Yum(全稱為 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及CentOS中的Shell前端軟體包管理器。基於RPM包管理,能夠從指定的伺服器自動下載RPM包並且安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。

yum源的配置

CentOS 預設已經安裝了yum,不需要另外安裝

yum 的配置檔案分為兩部分:main 和repository

main 部分定義了全域性配置選項,整個yum 配置檔案應該只有一個main。常位於/etc/yum.conf 中。

repository 部分定義了每個源/伺服器的具體配置,可以有一到多個。常位於/etc/yum.repo.d 目錄下的各檔案中;如下圖:

wKiom1X_cEry9itXAADxIdwmuO8398.jpg

yum.conf 檔案一般位於/etc目錄下,一般其中只包含main部分的配置選項,我們使用vim開啟主配置檔案,vim /etc/yum.conf ;如下圖:

wKiom1X_dMTwyC0OAAWRyU7PfLw576.jpg

主配置檔案,我們大部分不需要做操作,在這裡我們就不需要多說了。

下面我們主要來看一下/etc/yum.repos.d/*.repo檔案是如何定義的吧,我們首先來看如下截圖:

wKioL1X_enSjAo1EAATBR-Fqcmg766.jpg

上圖,中我們是把內網中的一臺伺服器當做yum伺服器了,而他則每天晚上去外網同步更新安裝包,由於資源有限,我們就不再做操作了,我們在文章最後來配置一下光碟當做yum原始檔吧!

上圖,詳解:

解釋兩個變數

$releasever引用當前系統的主版本號,也就是Centos6.7的主版本號就是6

$basearch當前系統的基本架構比如:x86_64

選項
功能描述
[]
[]中填寫的yum源中唯一的ID,可以為任意字元
name
指定yum源名稱,可以為任意字元,一般我們都按照自己的習慣來。
baseurl指定yum源的URL地址(可以是http、ftp、或者是本地路徑)
mirrorlist
指定映象站點目錄
enabled
是否啟用yum源(0代表禁用,1代表啟用,預設為啟用狀態)
gpgcheck
安裝軟體時是否檢查簽名(0代表禁用,1代表啟用),如果此項設定檢查,gpgkey就需設定key路徑
gpgkey
檢查簽名的祕鑰檔案

provides
檢視包是由哪個軟體包生成的
reinstall
重新安裝軟體包


當我們建立好yum源倉庫了,我們可以使用如下命令來使用yum

YUM命令格式

用法:yum [選項] [指令] [軟體包]

其中我們常用的選項-y,是執行非互動式安裝,假定安裝過程中出現的所有提示回答為YES

指令

用法
描述
installpackage1 ...package10
使用yum安裝軟體包
updatepackage1 ...package10
使用yum源升級安裝包
check-update
使用yum源檢查所有可升級的安裝包
remove |erase package1 ...package10解除安裝軟體包
list
列出系統中已安裝的以及yum源中所有可用的軟體包
info
檢視軟體包資訊
cleanall
清空所有的快取資訊
groupinstallgroup1.....
使用yum安裝組包
grouplist
列出系統中已安裝或者yum源可用的安裝包
groupremovegroup1.....
解除安裝組包
search string1.....
根據關鍵字查詢軟體
localinstallrpmfile1...
通過本地的rpm檔案安裝軟體
history
檢視歷史記錄

provides package1檢視包是由哪個軟體包生成的
reinstall package1重新安裝軟體包

例項:

yuminstallhttpd安裝

wKiom1YAAKHCPQ86AAL84SnchfM740.jpg

wKiom1YAAY-znsZEAAOb_WbGJU0288.jpg

yum -yremovehttpd解除安裝

wKiom1YAAgPTcpCjAAVoQj32lhs766.jpg

yumcheck-update檢查需要升級的軟體包

wKioL1YABaCDovwXAALx4aOnMGY657.jpg


我們使用yumupdate加報名對指定的包升級,如果不加將全部升級

wKioL1YABsPRsN3fAAMTCFsAWPs506.jpg

yumlist後面加包名就單列出此包

wKioL1YACNaCO4inAADsfuIgxzE456.jpg

yuminfo軟體包名檢視軟體包的基本資訊

wKiom1YABtXgfP6EAALd5ySom_M448.jpg

yumcleanall如下圖:

wKioL1YACXzi-wPIAADbkxAyS1U730.jpg

yumgrouplist

wKioL1YAClOiCuW_AAGlBr0RuZs720.jpg

yumgroupinstall組名

wKioL1YACnTTtLrFAAKQUE090ns514.jpg

wKioL1YACqjDF_lcAAEstgYou3U479.jpg

yumgroupremove解除安裝組這裡就不截圖了

我們使用yumsearchstring1通過關鍵字來查詢軟體

wKioL1YADfqhk1VZAAHcxIWqgqI552.jpg

yumhistory

wKiom1YADSTBGT0eAAPNXo6Q0ZA561.jpg

yum provides zsh

wKiom1YAFrTyyC2uAAEFW2M7Ob0280.jpg

yumreinstallzsh*

wKiom1YAF06hYqobAANiJO16FxA622.jpg

yum的基本操作我們講解完畢,下面我們來使用光碟來當做yum原始檔,配置個yum源伺服器;我們做此操作我們需要先把光碟掛載到本地,在這裡我們就不一一寫命令了,看圖說話

下圖:光碟掛載至本地

wKiom1YAEO7SBrThAAIc3i5eLVk865.jpg

然後我們建立yum原始檔

wKiom1YAEYXTAuBQAAEp3WKJR1E988.jpg

編輯.repo檔案,如下圖:備註,cost是定義使用優先順序的。

wKiom1YAIIDiVhHLAAB-zijmkyI801.jpg

我們使用yumrepolist檢視,如下圖:

wKioL1YAI8bBRjGDAAGCFR--4uA638.jpg

其實我們也可以建立本地的yum源,我們使用yum install createrepo,然後creatrepo /path/path路徑,然後在修改baseurl的路徑為建立的路徑即可。

wKioL1YAKniDfWgTAAEu6nrtAx8338.jpg

然後建立本地yum源目錄,此目錄首先自己要用mkdir建立好

wKiom1YAKGeyRTqpAABUBYA5bkg046.jpg

wKioL1YAKrbgMqJZAACJNa-u7aQ606.jpg

修改repo檔案,並驗證

wKioL1YAKviDLk93AAB2wgeQl_s812.jpg

wKiom1YAKLqy-9B1AAFWydtQHcc048.jpg

好了,這樣我們我軟體包管理結束了,我們一共說了兩種軟體包管理方法希望能幫助大家。

轉載於:https://blog.51cto.com/huichengu/1696426