首先,使用rpm -qa | grep yum命令,查看有没有安装yum 工具。

[adams@localhost git]$ rpm -qa | grep yum
yum-langpacks-0.4.3-2.nd7.1.noarch
yum-metadata-parser-1.1.4-14.nd7.1.x86_64
yumex-3.0.16-2.nd7.7.noarch
PackageKit-yum-plugin-1.1.5-2.nd7.4.x86_64
yum-utils-1.1.31-24.nd7.1.noarch
yum-3.4.3-153.nd7.5.noarch
PackageKit-yum-1.1.5-2.nd7.4.x86_64
[adams@localhost git]$

如上,则是安装了yum工具。

搭建本地yum源

可以搭建本地yum源也可以搭建网络yum源。这次以本地源为例,进行说明。
使用的rpm包为:adams-spec-0.3.4-1.nd7.x86_64.rpm等 (有多个版本)。

根据rpm包搭建本地源需要做:

1、配置本地目录。使用工具,根据rpm包生成本地源需要的目录。
2、修改配置文件。修改/etc/yum.repos.d 目录下的.repo配置文件。

配置本地目录

使用sudo yum install createrepo 命令,安装createrepo工具。

[adams@localhost ~]$ sudo yum install createrepo
已加载插件:langpacks, refresh-packagekit
软件包 createrepo-0.10.3-3.nd7.1.noarch 已安装并且是最新版本
无须任何处理
[adams@localhost ~]$

在/mnt目录下,新建repo_test文件夹。把之前打包生成的adams-spec-0.3.4-1.nd7.x86_64.rpm 拷贝到该目录下。然后在该目录下执行createrepo . 命令。

[adams@localhost ~]$ cd /mnt/
[adams@localhost mnt]$ ls
adams-rpm
[adams@localhost mnt]$ sudo mkdir repo_test
[adams@localhost mnt]$ ls
adams-rpm  repo_test
[adams@localhost mnt]$ cd repo_test/
[adams@localhost repo_test]$ sudo cp /home/adams/rpmbuild/RPMS/x86_64/adams-spec-0.3.4-1.nd7.x86_64.rpm ./
[adams@localhost repo_test]$ ls
adams-spec-0.3.4-1.nd7.x86_64.rpm
[adams@localhost repo_test]$ sudo createrepo .
Spawning worker 0 with 1 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[adams@localhost repo_test]$ ls
adams-spec-0.3.4-1.nd7.x86_64.rpm  repodata
[adams@localhost repo_test]$

由上可知,执行createrepo . 命令后,生成了repodata目录。repodata目录内容如下。

[adams@localhost repo_test]$ ls repodata/
19bd95ab87a84fe91ae8969360aa08da0020fd3b62da8bf10075d898ed1e9a5a-filelists.xml.gz
50ffcd021f522a14d3afa3ed20e16b739e26a29f85b168d1f5cf35e0b5bbdfc9-other.xml.gz
8544133d4f88007abe1cb5c686ca9d65c5cd8885a10f4465e67499ff6081483f-other.sqlite.bz2
8ace91061590ae3f670dac1a97b68965b4913c94b61c4706c798620d5c743e32-primary.sqlite.bz2
c7a1e7f4758df60a54c8a94ea421e901c42f9adf76c3f0ae46acaf2e8c827576-primary.xml.gz
efc3ed77178c2612af7e6294fba2cd2792d3668d47e26bc2461797ee6189ab7b-filelists.sqlite.bz2
repomd.xml
[adams@localhost repo_test]$

至此,本地目录就配置好了。之后如果需要升级,需要根据新的rpm包,生成新的repodata目录。

修改配置文件

在操作配置文件之前,最好先对配置文件的目录进行备份。

sudo cp /etc/yum.repos.d /etc/yum.repos.d_bak

配置文件在/etc/yum.repos.d目录下。

[adams@localhost yum.repos.d]$ ll
总用量 24
-rw-r--r-- 1 root root  81 10月 10 18:27 adams-spec.repo
-rw-r--r-- 1 root root 199 11月 23 2016 neokylin.repo
-rw-r--r-- 1 root root 214 11月 23 2016 neokylin-updates.repo
-rw-r--r-- 1 root root 140 8月  30 11:36 offline.repo
-rw-r--r-- 1 root root 234 8月  30 11:36 online.repo
-rw-rw-rw- 1 root root 235 7月  31 16:46 softcenter.repo

在该目录下,新建我们自己的.repo配置文件:repo_test.repo。并填充如下内容。

[adams@localhost yum.repos.d]$ sudo vi repo_test.repo
[sudo] password for adams: 
[adams@localhost yum.repos.d]$ ll
总用量 28
-rw-r--r-- 1 root root  81 10月 10 18:27 adams-spec.repo
-rw-r--r-- 1 root root 199 11月 23 2016 neokylin.repo
-rw-r--r-- 1 root root 214 11月 23 2016 neokylin-updates.repo
-rw-r--r-- 1 root root 140 8月  30 11:36 offline.repo
-rw-r--r-- 1 root root 234 8月  30 11:36 online.repo
-rw-r--r-- 1 root root  80 10月 10 18:43 repo_test.repo
-rw-rw-rw- 1 root root 235 7月  31 16:46 softcenter.repo
[adams@localhost yum.repos.d]$ cat repo_test.repo 
[repo_test]
name= repo_test
baseurl=file:///mnt/repo_test
enabled=1
gpgcheck=0

[adams@localhost yum.repos.d]$

其中:

nam:对仓库的描述,
baseurl:仓库的实际地址。可以时http/ftp格式的地址,也可以使用变量。
enabled:使能标志。是否启动这个仓库。0表示不启动,1表示启动。
gpgcheck:是否进行gpg校验,0不校验,1校验。
gpgkey:数字证书公钥所在位置(上面没有配置)。

在/etc/yum.repos.d目录下的.repo都是源的配置文件。如果其它配置处于使能状态,有可能导致自己的配置无法识别。所以,可以把其他的配置文件的使能关掉(enable = 0),或者修改配置文件的后缀名,或者直接删除其他配置文件(不建议)。这里我们修改其他配置文件的后缀名。

[adams@localhost yum.repos.d]$ ll
总用量 28
-rw-r--r-- 1 root root  81 10月 10 18:27 adams-spec.repo_bak
-rw-r--r-- 1 root root 199 11月 23 2016 neokylin.repo_bak
-rw-r--r-- 1 root root 214 11月 23 2016 neokylin-updates.repo_bak
-rw-r--r-- 1 root root 140 8月  30 11:36 offline.repo_bak
-rw-r--r-- 1 root root 234 8月  30 11:36 online.repo_bak
-rw-r--r-- 1 root root  80 10月 10 18:43 repo_test.repo
-rw-rw-rw- 1 root root 235 7月  31 16:46 softcenter.repo_bak
[adams@localhost yum.repos.d]$

使用 sudo yum clean all命令清除缓存。

[adams@localhost yum.repos.d]$ sudo yum clean all 
已加载插件:langpacks, refresh-packagekit
正在清理软件源: repo_test
Cleaning up everything
[adams@localhost yum.repos.d]$

使用sudo yum -y update 命令更新源。

[adams@localhost yum.repos.d]$ sudo yum -y update
已加载插件:langpacks, refresh-packagekit
repo_test                                                   	| 2.9 kB  00:00     
repo_test/primary_db                                        | 2.0 kB  00:00     
No packages marked for update
[adams@localhost yum.repos.d]$

然后使用 yum list 命令,列出可用的软件包。在最后可以看到我们之前打包好的rpm包,提示可以安装。(列表太长,只列出最后几行)

zzuf.x86_64                       0.13-9.20100215.nd7.1    installed            
可安装的软件包
adams-spec.x86_64                 0.3.4-1.nd7              repo_test            
[adams@localhost yum.repos.d]$

至此,配置文件就修改好了。

使用本地yum源

下面使用自己配置的yum源来安装、卸载、升级软件。

安装:

使用 sudo yum install adams-spec.x86_64 命令安装adams-spec软件包。

[adams@localhost yum.repos.d]$ sudo yum install adams-spec.x86_64 
[sudo] password for adams: 
已加载插件:langpacks, refresh-packagekit
正在解决依赖关系
--> 正在检查事务
---> 软件包 adams-spec.x86_64.0.0.3.4-1.nd7 将被 安装
--> 解决依赖关系完成

依赖关系解决

================================================================================
 Package            架构           版本                 源                 大小
================================================================================
正在安装:
 adams-spec         x86_64         0.3.4-1.nd7          repo_test         8.8 k

事务概要
================================================================================
安装  1 软件包

总下载量:8.8 k
安装大小:7.0 k
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction (shutdown inhibited)
  正在安装    : adams-spec-0.3.4-1.nd7.x86_64                               1/1 
  验证中      : adams-spec-0.3.4-1.nd7.x86_64                               1/1 

已安装:
  adams-spec.x86_64 0:0.3.4-1.nd7                                               

完毕!
[adams@localhost yum.repos.d]$ adams-spec 
hello adams spec ! 
[adams@localhost yum.repos.d]$

由上面可知,不光软件包安装好了,经过测试,还可以正常运行。通过 yum list installed | grep “adams-spec” 命令也可以查看到软件包已经安装。

[adams@localhost yum.repos.d]$ yum list installed | grep "adams-spec"
adams-spec.x86_64                 0.3.4-1.nd7              @repo_test           
[adams@localhost yum.repos.d]$

使用yum info adams-spec.x86_64命令查看软件包详细情况。

[adams@localhost yum.repos.d]$ yum info adams-spec.x86_64 
已加载插件:langpacks, refresh-packagekit
可安装的软件包
名称    :adams-spec
架构    :x86_64
版本    :0.3.4
发布    :1.nd7
大小    :8.8 k
源    :repo_test
简介    : adams-spec test
网址    :file:///usr/share/doc/HTML/zh-CN/index.html
协议    : GPL
描述    : just test file.

[adams@localhost yum.repos.d]$
卸载:

使用 sudo yum remove adams-spec.x86_64 命令卸载软件包。

[adams@localhost yum.repos.d]$ sudo yum remove adams-spec.x86_64 
[sudo] password for adams: 
已加载插件:langpacks, refresh-packagekit
正在解决依赖关系
--> 正在检查事务
---> 软件包 adams-spec.x86_64.0.0.3.4-1.nd7 将被 删除
--> 解决依赖关系完成

依赖关系解决

================================================================================
 Package            架构           版本                源                  大小
================================================================================
正在删除:
 adams-spec         x86_64         0.3.4-1.nd7         @repo_test         7.0 k

事务概要
================================================================================
移除  1 软件包

安装大小:7.0 k
是否继续?[y/N]:y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction (shutdown inhibited)
  正在删除    : adams-spec-0.3.4-1.nd7.x86_64                               1/1 
  验证中      : adams-spec-0.3.4-1.nd7.x86_64                               1/1 

删除:
  adams-spec.x86_64 0:0.3.4-1.nd7                                               

完毕!
[adams@localhost yum.repos.d]$

使用 yum list installed | grep "adams-spec"命令查看软件包是否还在安装列表中。

[adams@localhost yum.repos.d]$ yum list installed | grep "adams-spec"
[adams@localhost yum.repos.d]$

查看不到了。

升级

※ 在升级之前,我们还需要先把软件包安装上。

[adams@localhost mnt]$ yum list installed | grep "adams-spec"
adams-spec.x86_64                 0.3.4-1.nd7              @repo_test           
[adams@localhost mnt]$

之后我们把软件包从0.3.4版本升级到0.5.6版本。具体怎么生成adams-spec-0.5.6-1.nd7.x86_64.rpm文件,此处不再赘述。

升级软件包和之前搭建源类似,也需要配置本地目录和修改配置文件。
配置本地目录:
在/mnt目录下,新建upgrade_test目录,并把高版本的软件包拷贝到该目录。(此处没再使用之前的repo_test目录)。

[adams@localhost mnt]$ ls
adams-rpm  repo_test
[adams@localhost mnt]$ sudo mkdir upgrade_test
[adams@localhost mnt]$ cd upgrade_test/
[adams@localhost upgrade_test]$ sudo cp /home/adams/rpmbuild/RPMS/x86_64/adams-spec-0.5.6-1.nd7.x86_64.rpm ./
[adams@localhost upgrade_test]$ ls
adams-spec-0.5.6-1.nd7.x86_64.rpm

然后在upgrade_test目录下执行sudo createrepo . 命令,生成repodata目录。

[adams@localhost upgrade_test]$ sudo createrepo .
Spawning worker 0 with 1 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
[adams@localhost upgrade_test]$ ls
adams-spec-0.5.6-1.nd7.x86_64.rpm  repodata
[adams@localhost upgrade_test]$ ls repodata/
2c759c88f45f0e801bd8ff9dfea8cb01af17375b1e47e05fb72480652d4b872b-primary.sqlite.bz2
3681ee859f6471284ecb87a0e0de496631c57456b25daddf354535a37fb18c65-filelists.sqlite.bz2
4fc7b22d404341309d6f6bf74f116ed366f9e78e6c3ab55b5604b48c86de11b2-other.xml.gz
6d8d70809a086ee2661cd3160545814f86375601059720e814fe4808a201795c-filelists.xml.gz
70af7223a50c98cbc7764f458e129f296d67d42b204d5ea1bea70a6a26d546a4-primary.xml.gz
fa19e634b82f8075ad77c8b7a6e4a0477a8a65d36230b5184dadec26933a193d-other.sqlite.bz2
repomd.xml
[adams@localhost upgrade_test]$

修改配置文件:
修改/etc/yum.repos.d/repo_test.repo文件为:(只是修改了baseurl指向的路径)

[adams@localhost yum.repos.d]$ cat repo_test.repo 
[repo_test]
name= repo_test
baseurl=file:///mnt/upgrade_test
enabled=1
gpgcheck=0

[adams@localhost yum.repos.d]$

然后使用 sudo yum clean all 、sudo yum update 命令,更新源。

[adams@localhost yum.repos.d]$ sudo yum clean all
已加载插件:langpacks, refresh-packagekit
正在清理软件源: repo_test
Cleaning up everything
[adams@localhost yum.repos.d]$ sudo yum update
已加载插件:langpacks, refresh-packagekit
repo_test                                                   | 2.9 kB  00:00     
repo_test/primary_db                                        | 2.0 kB  00:00     
正在解决依赖关系
--> 正在检查事务
---> 软件包 adams-spec.x86_64.0.0.3.4-1.nd7 将被 升级
---> 软件包 adams-spec.x86_64.0.0.5.6-1.nd7 将被 更新
--> 解决依赖关系完成

依赖关系解决

================================================================================
 Package            架构           版本                 源                 大小
================================================================================
正在更新:
 adams-spec         x86_64         0.5.6-1.nd7          repo_test         8.8 k

事务概要
================================================================================
升级  1 软件包

总下载量:8.8 k
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction (shutdown inhibited)
  正在更新    : adams-spec-0.5.6-1.nd7.x86_64                               1/2 
  清理        : adams-spec-0.3.4-1.nd7.x86_64                               2/2 
  验证中      : adams-spec-0.5.6-1.nd7.x86_64                               1/2 
  验证中      : adams-spec-0.3.4-1.nd7.x86_64                               2/2 

更新完毕:
  adams-spec.x86_64 0:0.5.6-1.nd7                                               

完毕!
[adams@localhost yum.repos.d]$

更新完之后,再次查看软件包状态信息。

[adams@localhost yum.repos.d]$ yum info adams-spec.x86_64 
已加载插件:langpacks, refresh-packagekit
已安装的软件包
名称    :adams-spec
架构    :x86_64
版本    :0.5.6
发布    :1.nd7
大小    :7.0 k
源    :installed
来自源:repo_test
简介    : adams-spec test
网址    :file:///usr/share/doc/HTML/zh-CN/index.html
协议    : GPL
描述    : just test file.

[adams@localhost yum.repos.d]$

可以看到,软件包目前已经是0.5.6版本了,升级成功。