rpm(Redhat Package Manager)RPM軟件包管理器,是以一種數據庫記錄的方式來將咱們所須要的套件安裝到Linux主機的一套管理程序。rpm包是預先在Linux機器上編譯好並打包好的文件,安裝起來很是快捷。可是有一個缺點:安裝環境必須與編譯時的一致或至關;包與包之間存在着相互依賴的狀況,安裝或卸載包時須要先把依賴的包安裝/卸載,若是依賴的包時系統所必須的,那就不能卸載這個包。html
yum命令是在Fedora和RedHat以及SUSE中基於rpm的軟件包管理器,它可使系統管理人員交互和自動化地更細與管理RPM軟件包,可以從指定的服務器自動下載RPM包而且安裝,能夠自動處理依賴性關係,而且一次安裝全部依賴的軟體包,無須繁瑣地一次次下載、安裝。node
Linux軟件的源代碼分發是指提供了該軟件全部程序源代碼的發佈形式,須要用戶本身編譯成可執行的二進制碼並進行安裝。其優勢是配置靈活,能夠隨意去掉或保留某些功能/模塊,適應多種硬件/操做系統平臺及編譯環境;缺點是難度較大。linux
掛載系統安裝盤鏡像(掛載到一個空目錄,此處/mnt/目錄未使用,因此直接掛載到/mnt/目錄下)git
[root@3 ~]# df -h 文件系統 容量 已用 可用 已用% 掛載點 /dev/sda3 28G 1.3G 27G 5% / devtmpfs 483M 0 483M 0% /dev tmpfs 493M 0 493M 0% /dev/shm tmpfs 493M 6.8M 486M 2% /run tmpfs 493M 0 493M 0% /sys/fs/cgroup /dev/sda1 197M 109M 88M 56% /boot tmpfs 99M 0 99M 0% /run/user/0 [root@3 ~]# mount /dev/cdrom /mnt/ mount: /dev/sr0 寫保護,將以只讀方式掛載 [root@3 mnt]# ls CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7 EFI images Packages RPM-GPG-KEY-CentOS-Testing-7 EULA isolinux repodata TRANS.TBL [root@3 Packages]# ls yum-plugin-changelog-1.1.31-40.el7.noarch.rpm yum-plugin-fastestmirror-1.1.31-40.el7.noarch.rpm yum-plugin-tmprepo-1.1.31-40.el7.noarch.rpm yum-plugin-verify-1.1.31-40.el7.noarch.rpm yum-plugin-versionlock-1.1.31-40.el7.noarch.rpm …… (rpm包格式:包名、版本號、發佈版本號、平臺)
rpm包存放在Packages該文件下!golang
語法: rpm [options] [參數]
Options:
-i:=install,安裝
-v:可視化
-h:顯示安裝進度
在安裝一個rpm包時經常使用附帶選項:
--force:強制安裝
--nodeps:=no dependent 無依賴安裝(忽視與其餘包之間的依賴關係)數據庫
[root@3 Packages]# rpm -ivh x86info-1.30-6.el7.x86_64.rpm 準備中... ################################# [100%] 正在升級/安裝... 1:x86info-1:1.30-6.el7 ################################# [100%]
[root@3 Packages]# rpm -ivh yp-tools-2.14-3.el7.x86_64.rpm 錯誤:依賴檢測失敗: ypbind 被 yp-tools-2.14-3.el7.x86_64 須要 ## 即,兩個包之間存在依賴關係 ## 解決辦法: ①: [root@3 Packages]# rpm -iv hyp-tools-2.14-3.el7.x86_64.rpm yp-tools-2.14-3.el7.x86_64 ②: [root@3 Packages]# rpm -ivh --force yp-tools-2.14-3.el7.x86_64.rpm (添加--force或--nodeps選項便可安裝)
說明: 安裝有依賴關係的包時,能夠先安裝其所依賴的包再安裝目標包(同時安裝存在依賴關係的包),或者使用--force或--nodeps選項進行強行安裝(不建議使用)。vim
語法: rpm [-U] [包名]centos
[root@3 Packages]# rpm -Uvh x86info-1.30-6.el7.x86_64.rpm Preparing... ################################# [100%] package x86info-1:1.30-6.el7.x86_64 is already installed
說明: 若是升級一個已經安裝的最新版本的包,執行該命令後無任何操做。緩存
語法: rpm [-e] [包名]bash
[root@3 Packages]# rpm -e x86info-1.30-6.el7.x86_64.rpm error: package x86info-1.30-6.el7.x86_64.rpm is not installed [root@3 Packages]# rpm -e x86info
注: 卸載時直接跟報名,無需跟該包的信息;當包之間存在依賴關係時也須要先卸載其依賴包。
查詢已安裝的包
語法:
rpm [-q] [包名] 查詢指定包
rpm [-qa] 查詢全部已安裝包
eg:
[root@3 Packages]# rpm -q kmod kmod-20-9.el7.x86_64 ######################################### [root@3 Packages]# rpm -qa |head -5 trousers-0.3.13-1.el7.x86_64 filesystem-3.2-21.el7.x86_64 net-tools-2.0-0.17.20131004git.el7.x86_64 bind-license-9.9.4-37.el7.noarch fxload-2002_04_11-16.el7.x86_64
查詢已安裝包的相關信息
語法: rpm [-qi] [包名]
i=information
[root@3 Packages]# rpm -qi filesystem Name : filesystem Version : 3.2 Release : 21.el7 Architecture: x86_64 Install Date: Mon May 22 01:19:49 2017 Group : System Environment/Base Size : 0 ……
查詢某包所安裝的文件
語法: rpm [-ql] [包名]
l=list
[root@3 Packages]# rpm -ql vim-enhanced /etc/profile.d/vim.csh /etc/profile.d/vim.sh /usr/bin/rvim /usr/bin/vim /usr/bin/vimdiff /usr/bin/vimtutor
查看某文件的安裝包
語法: rpm [-qf] [文件絕對路徑]
[root@3 Packages]# rpm -qf /usr/bin/vim vim-enhanced-7.4.160-1.el7_3.1.x86_64
即,經過其絕對路徑查詢到其安裝包,當不知道其絕對路徑時,使用which命令查詢。
反引號命令
反引號的做用就是將反引號內的Linux命令先執行,而後將執行結果賦予變量。即,在命令行上把Linux命令放在反引號中,這個命令會首先被執行,而後將其結果做爲爲該命令行的一個參數。
eg:
[root@3 Packages]# rpm -qf `which cd` bash-4.2.46-20.el7_2.x86_64
說明: 先執行「which cd」命令,其次將「which cd」的結果做爲「rpm -qf」的參數執行該命令。
語法: yum list
[root@3 Packages]# yum list Failed to set locale, defaulting to C Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.btte.net * extras: mirrors.aliyun.com * updates: mirrors.tuna.tsinghua.edu.cn Installed Packages NetworkManager-libnm.x86_64 1:1.4.0-12.el7 @anaconda NetworkManager-team.x86_64 1:1.4.0-12.el7 @anaconda zsh.x86_64 5.0.2-25.el7_3.1 updates zsh-html.x86_64 5.0.2-25.el7_3.1 updates zziplib.i686 0.13.62-5.el7 base zziplib.x86_64 0.13.62-5.el7 base …… Exiting on Broken Pipe 注: 第一列是包名,第二列是版本號,第三列是庫
說明: 庫所在位置有「@」表示已安裝;「updates」表示已安裝,有新版本,須要升級;其餘的表示可安裝但還未安裝的rpm包。
[root@3 Packages]# ls /etc/yum.repos.d/ CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Sources.repo CentOS-fasttrack.repo CentOS-CR.repo CentOS-Media.repo CentOS-Vault.repo
[root@3 Packages]# cat /etc/yum.repos.d/CentOS-Base.repo # CentOS-Base.repo # …… [base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 ……
說明: 該文件下有rpm包所在庫base的鏡像地址信息!
語法: yum search [關鍵詞]
[root@3 Packages]# yum search vim Failed to set locale, defaulting to C Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.btte.net * extras: mirrors.aliyun.com * updates: mirrors.tuna.tsinghua.edu.cn ====================================== N/S matched: vim ======================================= golang-vim.noarch : Vim plugins for Go protobuf-vim.x86_64 : Vim syntax highlighting vim-minimal.x86_64 : A minimal version of the VIM editor Name and summary matches only, use "search all" for everything.
說明: 使用該命令搜索時會列出全部包含‘vim’(關鍵詞)的信息,不精確,爲了只搜索相關rpm包,可用以下方法:
[root@3 Packages]# yum list |grep vim Failed to set locale, defaulting to C vim-common.x86_64 2:7.4.160-1.el7_3.1 @updates vim-enhanced.x86_64 2:7.4.160-1.el7_3.1 @updates vim-filesystem.x86_64 2:7.4.160-1.el7_3.1 @updates vim-minimal.x86_64 2:7.4.160-1.el7 @anaconda
說明: grep表示過濾。
語法: yum grouplist
[root@3 Packages]# yum grouplist Failed to set locale, defaulting to C Loaded plugins: fastestmirror There is no installed groups file. Maybe run: yum groups mark convert (see man yum) Loading mirror speeds from cached hostfile * base: mirrors.btte.net * extras: mirrors.aliyun.com * updates: mirrors.tuna.tsinghua.edu.cn Available Environment Groups: Minimal Install Compute Node …… Available Groups: Compatibility Libraries Console Internet Tools …… Done
語法: yum install [-y] [包名]
說明: 若是不加‘-y’選項,則會以與用戶交互的方式安裝。首先是列出須要安裝的rpm包,而後會問用戶是否須要安裝,輸入‘y’則安裝,輸入‘n’則不安裝,這樣太麻煩,因此直接加上‘-y’選項,省略與用戶之間的交互。
語法: yum groupinstall [-y] [包的組名]
若是不知道組名,可用yum grouplist查看(注:進行安裝時只能用英文名)。
語法: yum remove [-y] [包名]
說明: ‘-y’選項同install的用法,須要注意的是,在使用該命令進行卸載時會將目標文件所依賴的全部包同時刪除,因此要謹慎使用!
語法: yum update [-y] [包名]
說明: 若是不加包名,則會升級系統內全部包以及系統自己(慎用,通常只在剛安裝完系統時使用)。
該命令的做用是經過已知命令名稱來搜索其rpm包名。
用法:
[root@3 Packages]# yum provides 「/*/vim」
說明: 由於該命令位置不肯定,因此進行搜索時使用‘*’(通配符)來表明其路徑。
有時候Linux系統沒法聯網,此時沒法使用網上的yum源,須要咱們利用Linux系統光盤製做一個yum源。
掛載光盤——刪除/etc/yum.repos.d/目錄全部repo文件——建立新文件dvd.repo——清除原有緩存‘yum clean all’。
[root@3 ~]# cp -r /etc/yum.repos.d /etc/yum.repos.d.bak 備份原.repo文件 [root@3 ~]# cd /etc/yum.repos.d 切換目錄 [root@3 yum.repos.d]# ls CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Sources.repo CentOS-fasttrack.repo CentOS-CR.repo CentOS-Media.repo CentOS-Vault.repo [root@3 yum.repos.d]# rm -rf ./* 刪除原有repo文件 [root@3 yum.repos.d]# vim dvd.repo 「 [dvd] name=install dvd baseurl=file:///mnt enable=1 gpgcheck=0 」 此部份內容除baseurl目錄根據我的實際操做更改外,其他內容固定。 [root@3 yum.repos.d]# yum clean all 清除系統原有緩存 Failed to set locale, defaulting to C Loaded plugins: fastestmirror Cleaning repos: dvd Cleaning up everything Cleaning up list of fastest mirrors [root@3 ~]# yum list …… Available Packages 還未安裝的可安裝rpm包的庫都變成dvd ypserv.x86_64 2.31-8.el7 dvd yum-langpacks.noarch 0.4.2-7.el7 dvd yum-plugin-aliases.noarch 1.1.31-40.el7 dvd yum-plugin-changelog.noarch 1.1.31-40.el7 dvd yum-plugin-tmprepo.noarch 1.1.31-40.el7 dvd ……
配置完成後即可直接使用yum安裝所須要的rpm包。若是不想使用本地yum源,須要刪除/etc/yum.repos.d/dvd.repo文件,而後恢復原來的配置文件。
能夠設置使yum保留已經下載的rpm包,供之後升級或從新安裝時使用。
修改/etc/yum/conf便可:
[main] cachedir=/home/soft1/yumcache keepcache=1 debuglevel=2
cachedir是放置下載的包的地方,能夠修改爲本身想放置的位置。
keepcache爲1時表示保存已經下載的rpm包。
yum安裝或二進制包安裝.
把CentOS的DVD1和DVD2.iso都下載下來,把DVD1.iso裏的全部內容解壓出來,放到/var/www/html/centos-6目錄下,而後把DVD2.iso解壓出來的Packages目錄下的rpm包複製到/var/html/centos-6/Packages目錄下,這樣/var/html/centos-6/Packages裏面就有了6000多個rpm包。
準備createrepo:yum -y install createrepo
建立repository:createrepo /var/www/html/centos-6/
建立完成以後,會在/var/www/html/centos-6/repodata下生成一些文件。
在其餘centos機器上試試軟件源能不能用。
# cd /etc/yum.repos.d/ # mkdir bk # mv *.repo bk/ # cp bk/CentOS-Base.repo ./ # vi CentOS-Base.repo
[base] name=CentOS-$releasever - Base baseurl=http://*.*.*.*/centos-6/ gpgcheck=1(改爲0下面那行就不用設置了) gpgkey=http:///*.*.*.*/centos-6/RPM-GPG-KEY-CentOS-6 enabled=1 #released updates #[updates] #name=CentOS-$releasever - Updates #baseurl=http:///*.*.*.*/centos-6/ #gpgcheck=1 #gpgkey=http:///*.*.*.*/centos-6/RPM-GPG-KEY-CentOS-6 #enabled = 1
保存以後,就可使用局域網的軟件源了:
# yum update