基礎篇:軟件包安裝方法(rpm、yum、本地倉庫)

Linux學習

一、安裝軟件包的三種方法
二、rpm包介紹
三、rpm工具用法
四、yum工具用法
五、yum搭建本地倉庫

一、安裝軟件包的三種方法

  • 三種方法:rpm工具(redhat packges manager)、yum工具(Python開發的工具,支持自動安裝依賴包)、源碼包(源代碼,需要編譯成可執行的文件后再安裝,三種方法中難度系數最大)
  • rpm工具安裝類似于Windows下.exe文件,安裝路徑和文件名基本都是固定的
  • yum是另一種rpm工具

二、rpm包介紹

  • rpm工具使用
    1、設置光驅掛載
    2、rpm包格式,包名、版本號、發布版本號、平臺
    3、rpm -ivh rpm包文件 安裝
    4、rpm -Uvh rpm包文件 升級
    5、rpm -e 包名 卸載
    6、rpm -qa 查詢安裝的包
    7、rpm -q包名 查詢指定包是否安裝
    8、rpm -qi 包名 查詢指定包信息
    9、rpm -ql包名 列出包安裝的文件
    10、rpm -qf 文件絕對路徑 查看一個文件是由哪個包安裝的
掛載光驅
[root@01 ~]# df -h
文件系統        容量  已用  可用 已用% 掛載點
/dev/sda3        26G  1.2G   25G    5% /
devtmpfs        903M     0  903M    0% /dev
tmpfs           912M     0  912M    0% /dev/shm
tmpfs           912M  8.6M  904M    1% /run
tmpfs           912M     0  912M    0% /sys/fs/cgroup
/dev/sda1       197M  113M   85M   58% /boot
tmpfs           183M     0  183M    0% /run/user/1001
[root@01 ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 寫保護,將以只讀方式掛載
[root@01 ~]# cd /mnt/
[root@01 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@01 mnt]# cd Packages/
[root@01 Packages]# 
  • rpm包都存放在Packages/目錄下
  • 第一部分字符串是包名
  • 第二部分-后面是版本號(主版本號,次版本號,小版本或者修正版本)
  • 第三部分是發布版本號(el7)
  • 第四部分是平臺位數(32位和64位,centos7不區分32位和64位)64位向下兼容32位
  • 第五部分是后綴名
操作
[root@01 Packages]# ls | tail
yum-plugin-tmprepo-1.1.31-42.el7.noarch.rpm
yum-plugin-verify-1.1.31-42.el7.noarch.rpm
yum-plugin-versionlock-1.1.31-42.el7.noarch.rpm
yum-utils-1.1.31-42.el7.noarch.rpm
zenity-3.22.0-1.el7.x86_64.rpm
zip-3.0-11.el7.x86_64.rpm
zlib-1.2.7-17.el7.x86_64.rpm
zlib-devel-1.2.7-17.el7.x86_64.rpm
zsh-5.0.2-28.el7.x86_64.rpm
zziplib-0.13.62-5.el7.x86_64.rpm
[root@01 Packages]# 

三、rpm工具用法

  • 安裝rpm包:rpm -ivh
  • 升級rpm包:rpm -Uvh
  • 卸載rpm包:rpm -e zsh(卸載包是會有提示依賴包)
  • 查詢已經安裝的rpm包:rpm -qa
  • 參數-q查詢指定包是否已經安裝過
操作
[root@01 Packages]# pwd
/mnt/Packages
[root@01 Packages]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm 
準備中...                          ################################# [100%]
正在升級/安裝...
   1:zsh-5.0.2-28.el7                 ################################# [100%]
[root@01 Packages]# 

root@01 Packages]# rpm -e zsh
[root@01 Packages]# rpm -qi zsh-5.0.2-28.el7.x86_64.rpm 
未安裝軟件包 zsh-5.0.2-28.el7.x86_64.rpm 
[root@01 Packages]# rpm -qi cryptsetup-libs-1.7.4-3.el7.x86_64.rpm 
未安裝軟件包 cryptsetup-libs-1.7.4-3.el7.x86_64.rpm 
[root@01 Packages]# rpm -q cryptsetup-libs-1.7.4-3.el7.x86_64.rpm 
未安裝軟件包 cryptsetup-libs-1.7.4-3.el7.x86_64.rpm 
[root@01 Packages]# rpm -qf cryptsetup-libs-1.7.4-3.el7.x86_64.rpm 
文件 /mnt/Packages/cryptsetup-libs-1.7.4-3.el7.x86_64.rpm 不屬于任何軟件包

四、yum工具

  • yum list 列出可用的rpm包
  • ls /etc/yum.repos.d
  • yum search vim 搜索包
  • yum install [-y]
  • yum grouplist
  • yum groupinstall [-y]
  • yum remove [-y]
  • yum update [-y]
  • yum provides "/*/vim"
  • rpm安裝時如果包有依賴則提示錯誤,yum則可以自動解決依賴關系
  • yum list 第一列是包名,第二列是版本號,第三列是倉庫名
  • base配置文件在/etc/yum.repos.d/CentOS-Base.repo下
  • yum search vim 搜索vim相關的包
  • yum install -y 包名,參數-y安裝時不再詢問是否安裝
  • yum grouplist列出組
  • yum groupinstall -y 包名,安裝組件
  • yum remove 卸載包
  • yum update 不加任何包名則默認升級所有(包括系統)
  • yum provides "/*/vim"搜索出所有關于vim命令的包
操作
[root@01 Packages]# rpm -ivh texlive-2012-38.20130427_r30134.el7.x86_64.rpm 
錯誤:依賴檢測失敗:
    texlive-scheme-basic 被 texlive-2:2012-38.20130427_r30134.el7.x86_64 需要
    texlive-collection-latexrecommended 被 texlive-2:2012-38.20130427_r30134.el7.x86_64 需要
    tex-kpathsea 被 texlive-2:2012-38.20130427_r30134.el7.x86_64 需要
    tex-tetex 被 texlive-2:2012-38.20130427_r30134.el7.x86_64 需要
[root@01 Packages]# 


[root@01 Packages]# yum list | tail
zlib-devel.x86_64                           1.2.7-17.el7               base     
zlib-static.i686                            1.2.7-17.el7               base     
zlib-static.x86_64                          1.2.7-17.el7               base     
zsh.x86_64                                  5.0.2-28.el7               base     
zsh-html.x86_64                             5.0.2-28.el7               base     
zziplib.i686                                0.13.62-5.el7              base     
zziplib.x86_64                              0.13.62-5.el7              base     
zziplib-devel.i686                          0.13.62-5.el7              base     
zziplib-devel.x86_64                        0.13.62-5.el7              base     
zziplib-utils.x86_64                        0.13.62-5.el7              base     
[root@01 Packages]# 
配置
[root@01 Packages]# cat /etc/yum.repos.d/CentOS-Base.repo 
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the 
# remarked out baseurl= line instead.
#
#

[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

#released updates 
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

[root@01 Packages]# 
搜索vim相關的包
[root@01 Packages]# yum search vim
已加載插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.zju.edu.cn
 * extras: mirrors.tuna.tsinghua.edu.cn
 * updates: mirrors.cn99.com
================================================== N/S matched: vim ===================================================
protobuf-vim.x86_64 : Vim syntax highlighting for Google Protocol Buffers descriptions
vim-X11.x86_64 : The VIM version of the vi editor for the X Window System
vim-common.x86_64 : The common files needed by any version of the VIM editor
vim-enhanced.x86_64 : A version of the VIM editor which includes recent enhancements
vim-filesystem.x86_64 : VIM filesystem layout
vim-minimal.x86_64 : A minimal version of the VIM editor

名稱和簡介匹配 only,使用“search all”試試。
[root@01 Packages]# 
精準搜索
[root@01 Packages]# yum list |grep 'vim'
vim-common.x86_64                           2:7.4.160-4.el7            @base    
vim-enhanced.x86_64                         2:7.4.160-4.el7            @base    
vim-filesystem.x86_64                       2:7.4.160-4.el7            @base    
vim-minimal.x86_64                          2:7.4.160-2.el7            @anaconda
protobuf-vim.x86_64                         2.5.0-8.el7                base     
vim-X11.x86_64                              2:7.4.160-4.el7            base     
vim-minimal.x86_64                          2:7.4.160-4.el7            base     
[root@01 Packages]# 


[root@01 Packages]# yum grouplist
已加載插件:fastestmirror
沒有安裝組信息文件
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile
 * base: mirrors.zju.edu.cn
 * extras: mirrors.tuna.tsinghua.edu.cn
 * updates: mirrors.cn99.com
可用的環境分組:
   最小安裝
   基礎設施服務器
   計算節點
   文件及打印服務器
   基本網頁服務器
   虛擬化主機
   帶 GUI 的服務器
   GNOME 桌面
   KDE Plasma Workspaces
   開發及生成工作站
可用組:
   傳統 UNIX 兼容性
   兼容性程序庫
   圖形管理工具
   安全性工具
   開發工具
   控制臺互聯網工具
   智能卡支持
   科學記數法支持
   系統管理
   系統管理工具
完成
[root@01 Packages]# 

五、yum搭建本地倉庫

  • 掛載鏡像到/mnt目錄
  • cp -r /etc/yum.repos.d /etc/yum.repos.d.bak
  • rm -f /etc/yum.repos.d/*
  • vim /etc/yum.repos.d/dvd.repo 內容如下
  • yum clean all 清空yum
  • yum list |less 查看本地yum倉庫
  • 搭建本地yum倉庫便于安裝,如果使用rpm安裝則提示依賴包
  • 使yum保留已經下載的rpm包
  • 目的:升級或者重新安裝使用
  • 操作:修改/etc/yum.conf文件
  • yum局域網軟件源搭建
    http://ask.apelearn.com/question/7627
操作
[root@01 ~]# cp -r /etc/yum.repos.d /etc/yum.repos.d.bak
[root@01 ~]# cd /etc/
[root@01 etc]# ls
adjtime                  environment         ld.so.cache               polkit-1        skel
aliases                  ethertypes          ld.so.conf                popt.d          ssh
aliases.db               exports             ld.so.conf.d              postfix         ssl
alternatives             favicon.png         libaudit.conf             ppp             statetab
anacrontab               filesystems         libnl                     prelink.conf.d  statetab.d
asound.conf              firewalld           libuser.conf              printcap        subgid
audisp                   fstab               locale.conf               profile         subuid
audit                    fuse.conf           localtime                 profile.d       sudo.conf
bash_completion.d        gcrypt              login.defs                protocols       sudoers
bashrc                   GeoIP.conf          logrotate.conf            python          sudoers.d
binfmt.d                 GeoIP.conf.default  logrotate.d               rc0.d           sudo-ldap.conf
centos-release           gnupg               machine-id                rc1.d           sysconfig
centos-release-upstream  GREP_COLORS         magic                     rc2.d           sysctl.conf
chkconfig.d              groff               makedumpfile.conf.sample  rc3.d           sysctl.d
chrony.conf              group               man_db.conf               rc4.d           systemd
chrony.keys              group-              mke2fs.conf               rc5.d           system-release
cron.d                   grub2.cfg           modprobe.d                rc6.d           system-release-cpe
cron.daily               grub.d              modules-load.d            rc.d            terminfo
cron.deny                gshadow             motd                      rc.local        tmpfiles.d
cron.hourly              gshadow-            mtab                      redhat-release  tuned
cron.monthly             gss                 my.cnf                    resolv.conf     udev
crontab                  host.conf           my.cnf.d                  rpc             updatedb.conf
cron.weekly              hostname            NetworkManager            rpm             vconsole.conf
crypttab                 hosts               networks                  rsyslog.conf    vimrc
csh.cshrc                hosts.allow         nsswitch.conf             rsyslog.d       virc
csh.login                hosts.deny          nsswitch.conf.bak         rwtab           vmware-tools
dbus-1                   init.d              openldap                  rwtab.d         wpa_supplicant
default                  inittab             opt                       sasl2           X11
depmod.d                 inputrc             os-release                securetty       xdg
dhcp                     iproute2            pam.d                     security        xinetd.d
DIR_COLORS               issue               passwd                    selinux         yum
DIR_COLORS.256color      issue.net           passwd-                   services        yum.conf
DIR_COLORS.lightbgcolor  kdump.conf          pkcs11                    sestatus.conf   yum.repos.d
dracut.conf              kernel              pki                       shadow          yum.repos.d.bak
dracut.conf.d            krb5.conf           plymouth                  shadow-
e2fsck.conf              krb5.conf.d         pm                        shells
[root@01 etc]# 



[root@01 etc]# cd /etc/yum.repos.d
[root@01 yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo
[root@01 yum.repos.d]# rm -f ./*
[root@01 yum.repos.d]# ls
[root@01 yum.repos.d]# 



[root@01 yum.repos.d]# vim dvd.repo
[root@01 yum.repos.d]# cat dvd.repo 
[dvd]
name=install dvd
baseurl=file:///mnt            //baseurl指定路徑
enable=1                       //是否可用:1表示可用,0表示不可用
gpgcheck=0                     //0表示不檢測
[root@01 yum.repos.d]# 


[root@01 yum.repos.d]# yum clean all
已加載插件:fastestmirror
正在清理軟件源: dvd
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors
[root@01 yum.repos.d]# yum list |less
[root@01 yum.repos.d]# yum list |tail
yum-plugin-changelog.noarch             1.1.31-42.el7                  dvd      
yum-plugin-tmprepo.noarch               1.1.31-42.el7                  dvd      
yum-plugin-verify.noarch                1.1.31-42.el7                  dvd      
yum-plugin-versionlock.noarch           1.1.31-42.el7                  dvd      
yum-utils.noarch                        1.1.31-42.el7                  dvd      
zenity.x86_64                           3.22.0-1.el7                   dvd      
zip.x86_64                              3.0-11.el7                     dvd      
zlib-devel.x86_64                       1.2.7-17.el7                   dvd      
zsh.x86_64                              5.0.2-28.el7                   dvd      
zziplib.x86_64                          0.13.62-5.el7                  dvd         //dvd表示本地搭建的yum倉庫
coreutils.x86_64                        8.22-18.el7                    @anaconda   //@anaconda表示已安裝表示已經安裝可安裝的軟件包
cpio.x86_64                             2.11-24.el7                    @anaconda
cracklib.x86_64                         2.9.0-11.el7                   @anaconda
cracklib-dicts.x86_64                   2.9.0-11.el7                   @anaconda
cronie.x86_64                           1.4.11-17.el7                  @anaconda
[root@01 yum.repos.d]# 



[root@01 yum.repos.d]# cat /etc/yum.conf 
[main]
cachedir=/var/cache/yum/$basearch/$releasever                    /cachedir是指一個路徑,存放下載的包的位置
keepcache=0                                                      /keepcache=1時表示保存已經下載的rpm包
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release


#  This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
#  It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d
[root@01 yum.repos.d]# 
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,646評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,595評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,560評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,035評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,814評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,224評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,301評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,444評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,988評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,804評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,998評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,544評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,237評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,665評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,927評論 1 287
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,706評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,993評論 2 374