1. 程式人生 > >linux基本操作之yum程序包管理器

linux基本操作之yum程序包管理器

yum

在Centos系統中,程序包管理器的核心是rpm:
其後端所使用rpm命令行工具;
前段使用yum命令行工具或dnf命令行工具;


程序包管理的前段工具:
RHEL/Centos系列發行版linux中,yum和dnf;

yum命令行工具:
Yellow dog updater Modifier

軟件倉庫:Package Repository
在軟件倉庫中,存放有大量的rpm程序包,將所有的rpm程序包的屬性信息提取出來,保存於xml格式的文檔之中;

利用URL標記並定位軟件倉庫的位置,並且可以直接讀取和緩存軟件倉庫中事先創建的xml文檔的內容到本地;

URL:統一資源定位符;
schema://[username@]hostname[:port][/PATH/TO/RESOURCE] [parameters][flag]
schema:
http
ftp
file
...

yum是C/S架構的模型,服務器端其實就是軟件倉庫,客戶端需要在指定的配置文件中填寫正確的URL,以能夠通過正確的協議訪問到軟件倉庫中的各程序包;

在服務器上,軟件倉庫其實就是一個目錄,在目錄中包含了程序包文件及與這些程序包對應的元數據文件;所有的元數據文件統一放置於名為"repodata"目錄中;

createrepo命令:
createrepo [options] <directory>

在客戶端上,使用配置文件到服務器的URL指向:
yum的主配置文件:/etc/yum.conf
yum的片段配置文件: /etc/yum.repos.d/*.repo
片段配置文件擁有ini風格的配置模式:即分段式配置內容;
1.使用"[repositoryid]"唯一標識出軟件倉庫;
2.其他的配置信息都類似於變量的復制,即key=value;
3.在軟件倉庫的標記下面的所有的配置信息都針對其上面的倉庫生效,直到遇到下一對"[]"為止;

每個片段配置文件中,都可以配置一個或多個倉庫的指向:而且,yum程序在查找各個倉庫的時候,每一次都可能會查找多個yum倉庫,並且從所有的可以使用的倉庫中選擇所需程序的最新版本並緩存到本地進行安裝、升級等操作:
同一個repoid下的多個倉庫被稱為鏡像,只有一個倉庫會被使用;
多個不同的repoid的倉庫,可以同時被使用;

.repo文件的內容格式:
[repositoryid]
name=Full name of Repository
baseurl=schema1://hostname/PATH
schema2://hostname/PATH
...
enabled={0|1}
gpgchecck={0|1}
gpgkey=schema://hostname/PATH/TO/PUBLIC_KEY
如:gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-Centos-7
failovermethod={roundrobin|priority}
技術分享圖片yum命令行工具:
yum - Yellowdog Updater Modified
command is one of:
* install package1 [package2] [...]
* update [package1] [package2] [...]
* update-to [package1] [package2] [...]
* update-minimal [package1] [package2] [...]
* check-update
* upgrade [package1] [package2] [...]
* upgrade-to [package1] [package2] [...]
* distribution-synchronization [package1] [package2] [...]
* remove | erase package1 [package2] [...]
* autoremove [package1] [...]
* list [...]
* info [...]
* provides | whatprovides feature1 [feature2] [...]
* clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]
* makecache [fast]
* groups [...]
* search string1 [string2] [...]
* shell [filename]
* resolvedep dep1 [dep2] [...]
(maintained for legacy reasons only - use repoquery or yum provides)
* localinstall rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use install)
* localupdate rpmfile1 [rpmfile2] [...]
(maintained for legacy reasons only - use update)
* reinstall package1 [package2] [...]
* downgrade package1 [package2] [...]
* deplist package1 [package2] [...]
* repolist [all|enabled|disabled]
* repoinfo [all|enabled|disabled]
* repository-packages <enabled-repoid> <install|remove|remove-or-reinstall|remove-or-
distribution-synchronization> [package2] [...]
* version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo
]
* history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|roll‐
back|new|sync|stats]
* load-transaction [txfile]
* updateinfo [summary | list | info | remove-pkgs-ts | exclude-updates | exclude-all |
check-running-kernel]
* fssnapshot [summary | list | have-space | create | delete]
* fs [filters | refilter | refilter-cleanup | du]
* check
* help [command]

-y, --assumeyes:對於yum執行過程中與用戶交互的問題,全部以"yes"回答;
-q, --quiet:安靜模式,在一次安裝事務中,不輸出任何信息;
--enablerepo=repoidglob:
即使被指定的repoid是被禁用的,也可以通過該選項將其啟用;
--disablerepo=repoidglob:
即使被指定的repoid是正常啟用的,也可以通過該選項將其禁用;
--noplugins:在yum執行過程中,明確指出不使用任何插件;
--nogpgcheck:在yum執行過程中,明確指出不進行程序包完整性認證;

command is one of:

安裝程序包
* install package1 [package2] [...]

註意:
1.如果啟用安裝時僅給出程序名稱,並沒有給出程序版本,平臺類型及操作系統類型等信息的話,yum將會搜索所有的處於啟用狀態的倉庫,並找到版本最新的程序包進行安裝;
2.如果啟用安裝時給出的是帶有程序版本,平臺類型及操作系統類型等信息的程序名稱,則在所有的倉庫中查找與之完全匹配的程序包進行安裝;
3.如果啟用安裝時給出的是完整的程序包名稱,則只能查找特定的程序包進行安裝;
4.程序包名或程序名可以使用通配符(Globbing),* ? [] [^]

升級和降級安裝程序包,讓程序包在不同版本之間更叠;
* update [package1] [package2] [...]
* downgrade package1 [package2] [...]

卸載程序包
* remove | erase package1 [package2] [...]

查看程序包:
* list [available|installed|all]

查看程序包的相關信息:
* info [...]

清除本地相關緩存信息:
* clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

手動構建本地緩存:
* makecache [fast]

顯示所有可用的倉庫的相關信息,如果緩存消失,則先緩存在顯示;
* repolist [all|enabled|disabled]

模糊搜索:
* search string1 [string2] [...]

程序包組管理命令:
* groups [...]
group install
group update
group list
group remove
group info

顯示指定程序包的所有的依賴關系:
* deplist package1 [package2] [...]

回復yum的安裝事務
* load-transaction [txfile]

Fedora提供的第三EPEL倉庫,到任何一個鏡像站點下載epel-release-latest-7.noarch.rpm程序包,在linux本地使用rpm或yum直接安裝,即可在/etc/yum.repos.d目錄中生成一個epel.repo的配置文件;

yum的repo配置文件中的常用變量:
$basearch:當前計算機所使用的基礎平臺架構類型;
i686
x86_64(amd64)
ppc
ppc64

$releasever:當前操作系統發行版本的主版本號;
如:Centos 7.0-1511,其發行主版本號是7;
Centos 6.9,其發行版本號是6;

$aech:平臺架構類型

$YUM0-$YUM9:yum內置的可以由用戶自定義的10個變量;

linux基本操作之yum程序包管理器