安装软件包的三种方法rpm包rpm工具yum工具
7.1 安裝軟件包的三種方法
- rpm工具
rpm(Redhat Package Manager)RPM軟件包管理器,是以一種數據庫記錄的方式來將我們所需要的套件安裝到Linux主機的一套管理程序。rpm包是預先在Linux機器上編譯好并打包好的文件,安裝起來非常快捷。但是有一個缺點:安裝環境必須與編譯時的一致或相當;包與包之間存在著相互依賴的情況,安裝或卸載包時需要先把依賴的包安裝/卸載,如果依賴的包時系統所必須的,那就不能卸載這個包。 - yum工具 yum命令是在Fedora和RedHat以及SUSE中基于rpm的軟件包管理器,它可以使系統管理人員交互和自動化地更細與管理RPM軟件包,能夠從指定的服務器自動下載RPM包并且安裝,可以自動處理依賴性關系,并且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝。
 - 源碼包 Linux軟件的源代碼分發是指提供了該軟件所有程序源代碼的發布形式,需要用戶自己編譯成可執行的二進制碼并進行安裝。其優點是配置靈活,可以隨意去掉或保留某些功能/模塊,適應多種硬件/操作系統平臺及編譯環境;缺點是難度較大。 
7.2 rpm包介紹
 
先點VMware 右下角的光驅,點連接
[root@aminglinux-001 Packages]# df -h 文件系統 容量 已用 可用 已用% 掛載點 /dev/sda3 16G 1.4G 15G 9% / devtmpfs 3.9G 0 3.9G 0% /dev tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 3.9G 8.6M 3.9G 1% /run tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/sda1 197M 109M 88M 56% /boot tmpfs 782M 0 782M 0% /run/user/0 /dev/sr0 4.1G 4.1G 0 100% /mnt [root@aminglinux-001 ~]# mount /dev/cdrom /mnt/ mount: /dev/sr0 寫保護,將以只讀方式掛載 [root@aminglinux-001 ~]# cd /mnt/ [root@aminglinux-001 mnt]# ls CentOS_BuildTag EULA images LiveOS repodata RPM- GPG-KEY-CentOS-Testing-7 EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL [root@aminglinux-001 mnt]# cd Packages/[root@aminglinux-001 Packages]# lspm-utils-1.4.1-27.el7.x86_64.rpmpnm2ppa-1.04-28.el7.x86_64.rpmpolicycoreutils-2.5-8.el7.x86_64.rpmpolicycoreutils-devel-2.5-8.el7.x86_64.rpmpolicycoreutils-gui-2.5-8.el7.x86_64.rpm...... (rpm包格式:包名、版本號、發布版本號、平臺)rpm包在Packages文件下。7.3 rpm 工具用法
安裝rpm包
語法: rpm [options] [參數]
Options:
-i:=install,安裝
-v:可視化
-h:顯示安裝進度
在安裝一個rpm包時常用附帶選項:
--force:強制安裝
--nodeps:=no dependent
無依賴安裝(忽視與其他包之間的依賴關系)
-  
安裝一個rpm包
[root@aminglinux-001 Packages]# rpm -ivh zziplib-0.13.62- 5.el7.x86_64.rpm
準備中... ################################# [100%]
正在升級/安裝...
1:zziplib-0.13.62-5.el7 ################################# [100%] -  
升級rpm包
語法: rpm [-U] [包名][root@aminglinux-001 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包
語法: rpm [-e] [包名][root@aminglinux-001 Packages]# rpm -e x86info
 - 查詢rpm包
查詢已安裝的包 
語法:
rpm [-q] [包名] 查詢指定包
rpm [-qa] 查詢所有已安裝包
查詢已安裝包的相關信息
語法:
rpm [-qi] [包名]
i=information
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
查看某文件的安裝包
語法:
rpm [-qf] [文件絕對路徑]
反引號命令
反引號的作用就是將反引號內的Linux命令先執行,然后將執行結果賦予變量。即,在命令行上把Linux命令放在反引號中,這個命令會首先被執行,然后將其結果作為為該命令行的一個參數。
[root@aminglinux-001 Packages]# rpm -qf `which cd`bash-4.2.46-20.el7_2.x86_64說明: 先執行“which cd”命令,其次將“which cd”的結果作為“rpm -qf”的參數執行該命令。
7.4 yum工具用法
列出所有rpm包
語法: yum list
[root@aminglinux-001 Packages]# yum listFailed to set locale, defaulting to CLoaded plugins: fastestmirrorLoading mirror speeds from cached hostfile* base: mirrors.btte.net* extras: mirrors.aliyun.com* updates: mirrors.tuna.tsinghua.edu.cnInstalled PackagesNetworkManager-libnm.x86_64 1:1.4.0-12.el7 @anacondaNetworkManager-team.x86_64 1:1.4.0-12.el7 @anacondazsh.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包。
-  
yum配置文件
[root@aminglinux-001 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 -  
配置文件base的信息
[root@aminglinux-001 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的鏡像地址信息! -  
搜索rpm包
語法: yum search [關鍵詞][root@aminglinux-001 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 editorName and summary matches only, use "search all" for everything.
說明: 使用該命令搜索時會列出所有包含‘vim’(關鍵詞)的信息,不精確,為了只搜索相關rpm包,可用如下方法:[root@aminglinux-001 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表示過濾。 
 
列出rpm包組
語法: yum grouplist
[root@aminglinux-001 Packages]# yum grouplistFailed to set locale, defaulting to CLoaded plugins: fastestmirrorThere 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.cnAvailable Environment Groups:Minimal InstallCompute Node……Available Groups:Compatibility LibrariesConsole Internet Tools……Done安裝rpm包
語法: yum install [-y] [包名]
說明: 如果不加‘-y’選項,則會以與用戶交互的方式安裝。首先是列出需要安裝的rpm包,然后會問用戶是否需要安裝,輸入‘y’則安裝,輸入‘n’則不安裝,這樣太麻煩,所以直接加上‘-y’選項,省略與用戶之間的交互。
安裝rpm包組
語法: yum groupinstall [-y] [包的組名] 如果不知道組名,可用yum grouplist查看(注:進行安裝時只能用英文名)。
卸載rpm包
語法: yum remove [-y] [包名] 說明: ‘-y’選項同install的用法,需要注意的是,在使用該命令進行卸載時會將目標文件所依賴的所有包同時刪除,所以要謹慎使用!
升級rpm包
語法: yum update [-y] [包名] 說明: 如果不加包名,則會升級系統內所有包以及系統本身(慎用,一般只在剛安裝完系統時使用)。
yum provides
該命令的作用是通過已知命令名稱來搜索其rpm包名。 用法:
[root@aminglinux-001 Packages]# yum provides “//vim”
說明: 因為該命令位置不確定,所以進行搜索時使用‘’(通配符)來代表其路徑。
7.5 yum搭建本地倉庫
有時候Linux系統無法聯網,此時無法使用網上的yum源,需要我們利用Linux系統光盤制作一個yum源。
掛載光盤——刪除/etc/yum.repos.d/目錄所有repo文件——創建新文件dvd.repo——清除原有緩存‘yum clean all’。
此部分內容除baseurl目錄根據個人實際操作更改外,其余內容固定。
[root@aminglinux-001 yum.repos.d]# yum clean all清除系統原有緩存Failed to set locale, defaulting to CLoaded plugins: fastestmirrorCleaning repos: dvdCleaning up everythingCleaning up list of fastest mirrors[root@aminglinux-001 ~]# 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文件,然后恢復原來的配置文件。
- 擴展1:yum保留已經安裝過的包
 
可以設置使yum保留已經下載的rpm包,供以后升級或重新安裝時使用。 修改/etc/yum/conf即可:
[main] cachedir=/home/soft1/yumcache keepcache=1 debuglevel=2 cachedir是放置下載的包的地方,可以修改成自己想放置的位置。 keepcache為1時表示保存已經下載的rpm包。
- 擴展2:yum局域網軟件源搭建
 
搭建Apache服務器或ftp服務器
yum安裝或二進制包安裝.
準備RPM包
把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包。
創建yum倉庫
準備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.repoCentOS-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擴展
yum保留已經安裝過的包 http://www.360doc.com/content/11/0218/15/4171006_94080041.shtml
搭建局域網yum源 http://ask.apelearn.com/question/7627
轉載于:https://blog.51cto.com/13242922/2058912
總結
以上是生活随笔為你收集整理的安装软件包的三种方法rpm包rpm工具yum工具的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 淘宝架构师为你揭秘2017双十一分布式缓
 - 下一篇: DeepMind开源面向对象的机器学习库