1. 程式人生 > >linux安裝軟件包的方法以及搭建yum本地倉庫

linux安裝軟件包的方法以及搭建yum本地倉庫

rpm yum 源碼包 yum本地庫

安裝軟件包的三種方法
linux中有三種安裝軟件的方法。rpm工具,yum工具,源碼包。其中最常用的就是yum工具。

rpm工具使用
如果在虛擬機上,先將光盤連接,然後掛載到系統中,一般我們都掛載到mnt下
首先,先查看一下mnt是否有掛載其他的設備
[root@localhost ~]# df -h
文件系統 容量 已用 可用 已用% 掛載點
/dev/sda3 28G 926M 27G 4% /
devtmpfs 485M 0 485M 0% /dev
tmpfs 495M 0 495M 0% /dev/shm
tmpfs 495M 6.8M 488M 2% /run

tmpfs 495M 0 495M 0% /sys/fs/cgroup
/dev/sda1 197M 97M 100M 50% /boot
tmpfs 99M 0 99M 0% /run/user/0

查看後發現沒有掛載其他的設備,然後我們開始掛載,掛載的命令是mount
[root@localhost ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 寫保護,將以只讀方式掛載
掛載完後他會有一個提示寫保護,因為我們的光盤只能讀取,不能寫入。

然後我們到mnt目錄下
[root@localhost ~]# cd /mnt
[root@localhost mnt]# ll

總用量 1586
-rw-rw-r--. 3 root root 14 9月 5 21:25 CentOS_BuildTag
drwxr-xr-x. 3 root root 2048 9月 5 21:36 EFI
-rw-rw-r--. 3 root root 227 8月 30 22:33 EULA
-rw-rw-r--. 3 root root 18009 12月 10 2015 GPL
drwxr-xr-x. 3 root root 2048 9月 6 18:52 images
drwxr-xr-x. 2 root root 2048 9月 5 21:36 isolinux
drwxr-xr-x. 2 root root 2048 9月 5 21:36 LiveOS
drwxrwxr-x. 2 root root 1585152 9月 6 05:48 Packages
drwxrwxr-x. 2 root root 4096 9月 6 05:57 repodata
-rw-rw-r--. 3 root root 1690 12月 10 2015 RPM-GPG-KEY-CentOS-7
-rw-rw-r--. 3 root root 1690 12月 10 2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r--. 1 root root 2883 9月 6 18:53 TRANS.TBL
然後發現裏面有很多的目錄和文件,我們安裝系統的時候就是用的這些文件。其中有個目錄是Packages
[root@localhost Packages]# ls | head -5
389-ds-base-1.3.6.1-16.el7.x86_64.rpm
389-ds-base-devel-1.3.6.1-16.el7.x86_64.rpm
389-ds-base-libs-1.3.6.1-16.el7.x86_64.rpm
389-ds-base-snmp-1.3.6.1-16.el7.x86_64.rpm
進入後發現這裏面有很多的rpm文件,這就是rpm包

rpm包文件名有如下的特點,我們拿zziplib-0.13.62-5.el7.x86_64.rpm這個文件做例子,這個包名它是由符號“-”,符號“.”,數字,字符串組成。
首先,最前面的字符串叫包名,包名後面的符號“-”和數字組成包名的版本號,版本號中也包括主版本號,次版本號,修正版本號和發布版本號。後面的由x86和數字組成的是運行平臺。其中64位可以安裝32位的包,但是32位不能安裝64位的包,最後是後綴名。

rpm包的使用方法
比如我們要安裝zsh-5.0.2-28.el7.x86_64.rpm這個包
[root@localhost Packages]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm
準備中... ################################# [100%]
正在升級/安裝...
1:zsh-5.0.2-28.el7 ################################# [100%]
其中,i表示install,v表示可視化,h表示更人性的可視化。
如果我們發現更高版本的話就要升級這個包,rpm -Uvh zsh-5.0.2-28.el7.x86_64.rpm,其中U是大寫。
如果要卸載一個包,那麽在rpm後面加 -e,後面直接加包名即可,不用輸入包的文件名。
[root@localhost Packages]# rpm -e zsh-5.0.2-28.el7.x86_64.rpm
錯誤:未安裝軟件包 zsh-5.0.2-28.el7.x86_64.rpm
如果卸載錯誤,它就會出現提示。
[root@localhost Packages]# rpm -e zsh
正常卸載則不會出現提示。

查詢安裝的包
如果我們想查詢當前系統系下安裝的包,就輸入命令rpm -qa
[root@localhost Packages]# rpm -qa | tail -5
alsa-tools-firmware-1.1.0-1.el7.x86_64
dmidecode-3.0-5.el7.x86_64
kbd-misc-1.15.5-13.el7.noarch
kbd-legacy-1.15.5-13.el7.noarch
kernel-3.10.0-693.el7.x86_64
所列出的就都是現在系統下所有的安裝的包
然後我們就可以對某個包進行操作。
這裏需要我們註意的是如果要卸載一個包,他會出現提示,某個包會被其他包所需要,也就是說你想卸載某個包,你就要卸載其他所需要的包。所以說rpm這個工具不是很方便。
我們也可以查指定的包是否安裝,命令是rpm -q加包名
[root@localhost Packages]# rpm -q kbd
kbd-1.15.5-13.el7.x86_64
如果安裝了,它就會顯示這個包
[root@localhost Packages]# rpm -q ppp
未安裝軟件包 ppp
如果沒有安裝,它就會提示為安裝。

我們也可以查詢指定包的信息,命令是rpm -qi,然後就會出現這個包的詳細信息。
[root@localhost Packages]# rpm -qi kbd
Name : kbd
Version : 1.15.5
Release : 13.el7
Architecture: x86_64
Install Date: 2017年12月14日 星期四 21時59分09秒
Group : System Environment/Base
Size : 1380661
License : GPLv2+
Signature : RSA/SHA256, 2017年08月11日 星期五 00時56分40秒, Key ID 24c6a8a7f4a80eb5
Source RPM : kbd-1.15.5-13.el7.src.rpm
Build Date : 2017年08月02日 星期三 21時09分13秒
Build Host : c1bm.rdu2.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://ftp.altlinux.org/pub/people/legion/kbd
Summary : Tools for configuring the console (keyboard, virtual terminals, etc.)
Description :
The kbd package contains tools for managing a Linux
system‘s console‘s behavior, including the keyboard, the screen
fonts, the virtual terminals and font files.

我們也可以查詢這個包安裝的文件,比如我們安裝了一個rpm包,那這個包會幫助我們安裝那些文件呢?就通過命令rpm -ql加包名來查詢。
[root@localhost 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
通過查詢,我們可以發現vim-enhanced這個包安裝了這些文件。

也可以通過文件的絕對路徑去查詢這時由哪個包安裝的,命令是rpm -qf。
比如vim這個名命令,它的路徑是/usr/bin/vim,然後我們反向查詢
[root@localhost Packages]# rpm -qf /usr/bin/vim
vim-enhanced-7.4.160-2.el7.x86_64
然後我們就可以發現,vim命令是由vim-enhanced-7.4.160-2.el7.x86_64來安裝的。

這裏有一個很實用命令 ""反引號,如果我們不知道這個命令的路徑,那麽我們可以通過反引號來查詢
[root@localhost Packages]# rpm -qf which cd
bash-4.2.46-28.el7.x86_64
查詢結果是cd這個命令是有bash這個包安裝的,但是which查詢命令輸出的結果必須是一行,如果兩行則查不出結果,不如ls這個命令,它which的結果是[root@localhost Packages]# which ls
alias ls=‘ls --color=auto‘
/usr/bin/ls
我們不能以兩行作為參數,那麽rpm -qf就不能顯示出結果
[root@localhost Packages]# rpm -qf which ls
rpm: --color=auto‘: 未知的選項
如果出現這種情況,我們只能先查詢路徑,然後再查詢。

yum工具
rpm工具在安裝包時會出現一種情況,你安裝一個包時他會提示安裝替他依賴的包,比較麻煩。但是yum工具不會,他會自動的去安裝你需要的包和其他依賴的包,這就是yum的優勢。

如果我們想查看那些rpm包可以安裝,輸入命令yum list可以列出可用的rpm包。
[root@localhost Packages]# yum list
zlib.i686 1.2.7-17.el7 base
zlib-devel.i686 1.2.7-17.el7 base
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
最左側是包名加相關信息,中間這一列是版本號和平臺版本號,最後這一列是倉庫名字。
倉庫名是哪裏來的呢?我們可以看一下yum的配置文件,/etc/yum.repos.d/
[root@localhost Packages]# ll /etc/yum.repos.d/
總用量 28
-rw-r--r--. 1 root root 1664 8月 30 23:53 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 8月 30 23:53 CentOS-CR.repo
-rw-r--r--. 1 root root 649 8月 30 23:53 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 314 8月 30 23:53 CentOS-fasttrack.repo
-rw-r--r--. 1 root root 630 8月 30 23:53 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 8月 30 23:53 CentOS-Sources.repo
-rw-r--r--. 1 root root 3830 8月 30 23:53 CentOS-Vault.repo
其中最核心的配置文件是第一個-rw-r--r--. 1 root root 1664 8月 30 23:53 CentOS-Base.repo
我們查看一下這個文件
[root@localhost 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](rpm包的倉庫名)
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
[base](rpm包的倉庫名)
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/
我們可以通過這個網址,找到所需要的rpm包。

我們也可以搜索一個包,命令是yum search,比如我們要搜索vim這個包
[root@localhost Packages]# yum search vim
已加載插件:fastestmirror
Loading mirror speeds from cached hostfile

  • base: mirror.bit.edu.cn
  • extras: mirror.bit.edu.cn
  • updates: mirror.bit.edu.cn
    ================================================================== 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”試試
    他可以搜索出很多和vim有關的包。但是這種搜不是很精確,如我們想精確的搜索,可以通過grep來過濾
    [root@localhost Packages]# yum list |grep ‘vim‘
    vim-common.x86_64 2:7.4.160-2.el7 @base
    vim-enhanced.x86_64 2:7.4.160-2.el7 @base
    vim-filesystem.x86_64 2:7.4.160-2.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-2.el7 base
    這樣就可以精確的搜索我們想要的了

安裝yum包,命令是yum install -y(加-y可以不用詢問),比如我們要安裝zip這個命令
[root@localhost Packages]# yum install -y zip
已加載插件:fastestmirror
Loading mirror speeds from cached hostfile

  • base: mirror.bit.edu.cn
  • extras: mirror.bit.edu.cn
  • updates: mirror.bit.edu.cn
    正在解決依賴關系
    --> 正在檢查事務
    ---> 軟件包 zip.x86_64.0.3.0-11.el7 將被 安裝
    --> 解決依賴關系完成

依賴關系解決

======================================================================================================================================================
Package 架構 版本 源 大小

正在安裝:
zip x86_64 3.0-11.el7 base 260 k

事務概要

安裝 1 軟件包

總下載量:260 k
安裝大小:796 k
Downloading packages:
zip-3.0-11.el7.x86_64.rpm | 260 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安裝 : zip-3.0-11.el7.x86_64 1/1
驗證中 : zip-3.0-11.el7.x86_64 1/1

已安裝:
zip.x86_64 0:3.0-11.el7

完畢
這樣就安裝完成了。

我們也可以查詢可用的組,命令是yum grouplist
[root@localhost Packages]# yum grouplist
已加載插件:fastestmirror
沒有安裝組信息文件
Maybe run: yum groups mark convert (see man yum)
Loading mirror speeds from cached hostfile

  • base: mirror.bit.edu.cn
  • extras: mirror.bit.edu.cn
  • updates: mirror.bit.edu.cn
    可用的環境分組:
    最小安裝
    基礎設施服務器
    計算節點
    文件及打印服務器
    基本網頁服務器
    虛擬化主機
    帶 GUI 的服務器
    GNOME 桌面
    KDE Plasma Workspaces
    開發及生成工作站
    可用組:
    傳統 UNIX 兼容性
    兼容性程序庫
    圖形管理工具
    安全性工具
    開發工具
    控制臺互聯網工具
    智能卡支持
    科學記數法支持
    系統管理
    系統管理工具
    完成
    這樣我們就可以查看可用的組了,如果選擇這樣的組,那麽它就會安裝這個組裏面的rpm包,雖然我們在安裝系統時沒有選擇某些組,但是,我們還是可以通過yum去安裝其他的可用組。
    比如我們想要安裝一個包組,Virtualization Host
    [root@localhost Packages]# yum groupinstall ‘Virtualization Host‘
    然後會出現很多我們需要安裝的包,最後會出現這樣的提示
    Install 69 Packages (+189 Dependent packages)
    Upgrade ( 6 Dependent packages)
    Is this ok [y/d/N]:
    它的意思是69個包需要安裝,還有189個依賴包需要安裝,6個需要升級,由於我們沒有加-y,所以他會提示我們是否安裝。

能安裝,就能卸載。yum照比rpm的優勢就是可以幫你安裝和卸載依賴包,那麽yum的卸載命令就是就是yum remove,這是一個很危險的操作,因為你卸載一個包,那麽其他的依賴包yum也一並給你卸載了,會影響我們的使用。所以我們要謹慎使用。
[root@localhost Packages]# yum remove vim
Failed to set locale, defaulting to C
Loaded plugins: fastestmirror
Resolving Dependencies
--> Running transaction check
---> Package vim-enhanced.x86_64 2:7.4.160-2.el7 will be erased
--> Finished Dependency Resolution

Dependencies Resolved

======================================================================================================================================================
Package Arch Version Repository Size

Removing:
vim-enhanced x86_64 2:7.4.160-2.el7 @base 2.2 M

Transaction Summary

Remove 1 Package

Installed size: 2.2 M
Is this ok [y/N]:

yum也可以去升級一個包,命令是yum update,如果我們不加包名,他會默認把所有的包都升級,也會將你的系統升級到最新的版本。不僅僅是系統,還有內核也會升級。這個操作我們會在剛安裝完系統時去操作,如果系統已經運行了一些服務,安裝了一些環境,就不要去操作了,會出現問題。

我們也可以通過去搜有一個命令,然後決定用哪一個包,命令是yum provides “/*/命令”,比如我們要搜vim這個命令

yum搭建本機倉庫

有時候我們在安裝好centos後沒有聯網,所以就不能用在線的yum工具,所以這時候我們要建立一個本地的yum倉庫來供我們使用。使用這個的前提是你要有一個光驅,一個光盤,一個鏡像文件,將這個光驅掛在。
首先先掛載鏡像在mnt下,然後將repos中的rpm包作為本地的倉庫。首先我們先備份一些文件

[root@localhost ~]# cp -r /etc/yum.repos.d /etc/yum.repos.d.bak
然後進入到yum.repos.d目錄
[root@localhost ~]# cd /etc/yum.repos.d
備份後要將yum.repos.d中的文件刪除。
[root@localhost yum.repos.d]# ll
總用量 28
-rw-r--r--. 1 root root 1664 8月 30 23:53 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 8月 30 23:53 CentOS-CR.repo
-rw-r--r--. 1 root root 649 8月 30 23:53 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root 314 8月 30 23:53 CentOS-fasttrack.repo
-rw-r--r--. 1 root root 630 8月 30 23:53 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 8月 30 23:53 CentOS-Sources.repo
-rw-r--r--. 1 root root 3830 8月 30 23:53 CentOS-Vault.repo
[root@localhost yum.repos.d]# \rm ./*
然後創建一個dvd.repo,裏面輸入一下內容
[root@localhost yum.repos.d]# vi ded.repo

[dvd] (倉庫名)
name=install dvd (自定義描述,基本沒啥用)
baseurl=file:///mnt (rpm包的地址)
enable=1 (是否可用,1為可用,0為不可用)
gpcheck=0 (是否檢測,1為檢測,0為不檢測)
然後保存退出
然後進行一個緩存清除操作
[root@localhost yum.repos.d]# yum clean all
然後我們再打開yum的列表查看
[root@localhost yum.repos.d]# yum list(由於篇幅問題這裏只顯示部分)
已加載插件:fastestmirror
Loading mirror speeds from cached hostfile
已安裝的軟件包
GeoIP.x86_64 1.5.0-11.el7 @anaconda
NetworkManager.x86_64 1:1.8.0-9.el7 @anaconda
NetworkManager-libnm.x86_64 1:1.8.0-9.el7 @anaconda
NetworkManager-team.x86_64 1:1.8.0-9.el7 @anaconda
NetworkManager-tui.x86_64 1:1.8.0-9.el7 @anaconda
NetworkManager-wifi.x86_64 1:1.8.0-9.el7 @anaconda
acl.x86_64 2.2.51-12.el7 @anaconda
zziplib.i686 0.13.62-5.el7 dvd
zziplib.x86_64 0.13.62-5.el7 dvd
zziplib-devel.i686 0.13.62-5.el7 dvd
zziplib-devel.x86_64 0.13.62-5.el7 dvd
zziplib-utils.x86_64 0.13.62-5.el7 dvd
其中@anaconda是已安裝的程序,而dvd是可以安裝的程序。

然後我們來安裝一個軟件
[root@localhost yum.repos.d]# yum install GConf2
已加載插件:fastestmirror
Loading mirror speeds from cached hostfile
正在解決依賴關系
--> 正在檢查事務
---> 軟件包 GConf2.x86_64.0.3.2.6-8.el7 將被 安裝
--> 正在處理依賴關系 /usr/bin/killall,它被軟件包 GConf2-3.2.6-8.el7.x86_64 需要
--> 正在檢查事務
---> 軟件包 psmisc.x86_64.0.22.20-15.el7 將被 安裝
--> 解決依賴關系完成

依賴關系解決

======================================================================================================================================================
Package 架構 版本 源 大小

正在安裝:
GConf2 x86_64 3.2.6-8.el7 dvd 1.0 M
為依賴而安裝:
psmisc x86_64 22.20-15.el7 dvd 141 k

事務概要

安裝 1 軟件包 (+1 依賴軟件包)

總下載量:1.1 M
安裝大小:6.8 M
Is this ok [y/d/N]: y
Downloading packages:

總計 16 MB/s | 1.1 MB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安裝 : psmisc-22.20-15.el7.x86_64 1/2
正在安裝 : GConf2-3.2.6-8.el7.x86_64 2/2
驗證中 : psmisc-22.20-15.el7.x86_64 1/2
驗證中 : GConf2-3.2.6-8.el7.x86_64 2/2

已安裝:
GConf2.x86_64 0:3.2.6-8.el7

作為依賴被安裝:
psmisc.x86_64 0:22.20-15.el7

完畢!
這樣就安裝好了,這樣方便我們用本地的光盤去作為他的倉庫,很方便的去安裝它依賴的包。

linux安裝軟件包的方法以及搭建yum本地倉庫