首先,使用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版本了,升级成功。