程序包管理之制作yum本地源

Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

使用本地yum源有两种方式:第一直接使用光盘镜像,不过此方法仅限本机使用;第二种创建本地仓库,然后使用http或者nfs和ftp等方式向外部提供yum repository。

第一种:如何使用发行版光盘作为yum repository(以CentOS 6.8为例实验)

1.挂载光盘到制定挂载点:
    此处我们使用CentOS的自动挂载功能来实现:

[root@localhost ~]# cd /misc

[root@localhost misc]# cd cd

[root@localhost cd]# ls

CentOS_BuildTag GPL Packages RPM-GPG-KEY-CentOS-6

RPM-GPG-KEY-CentOS-Testing-6

EFI images RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-Debug-6

TRANS.TBL

EULA isolinux repodata RPM-GPG-KEY-CentOS- Security-6

2.新建yum repo配置文件:

[root@localhost cd]# cd /etc/yum.repos.d

[root@localhost yum.repos.d]# ls

base.repo

[root@localhost yum.repos.d]# cat base.repo #必须以.repo结尾

#

#

#

#

[base] #仓库的ID唯一不能重复

name=CentOS 7 #仓库功能的描述

baseurl=file:///misc/cd/ #repodata所在路径

enabled=1 #开启仓库,0是关闭,不写默认是1

gpgcheck=1 #是否检查gpg,1是检查,0是不检查

gpgkey=file:///etc/pki/rpm-gpg/ #gpgkey的路径

第二种:创建本地yum仓库

如果你是一名运维工程师,为了方便公司内部网络中的服务器安装软件,同时也节省网络带宽,此时就可以在公司内部创建一个yum仓库。

具体步骤:

1.在发行版光盘中寻找createrepo:

[root@localhost ~]# type createrepo
createrepo is hashed (/usr/bin/createrepo) #此处安装系统时已做安装

2.确定repository输出方式:

(1)本地输出:提供一个放置rpm包的本地路径;file的形式

(2)网络输出:提供一个文件服务器,配置好ftp或http服务;

ftp服务:

安装程序包:vsftpd

文件存放路径:/var/ftp/pub

启动服务:service vsftpd start

http服务:

安装程序包:httpd

文件存放路径:/var/www/html

启动服务:service httpd start

注意确保防火墙关闭;

我们此处以本地输出为例。

3.在准备好的目录中放置rpm程序包文件

可以通过cp命令将光盘中的程序包拷贝到以上输出目录当中。

[root@localhost ~]# mkdir yum

[root@localhost ~]# cp mogilefs/* yum

[root@localhost ~]# cp galera_cluster/* yum

#创建yum文件夹并做了仓库路径,将准备好的rpm包复制进yum目录当中

[root@localhost ~]# cd yum
[root@localhost yum]# ls
galera-25.3.9-1.rhel7.el7.centos.x86_64.rpm  MariaDB-5.5.46-centos7-x86_64-shared.rpm Perlbal-1.78-1.el6.noarch.rpm
jemalloc-3.6.0-1.el7.x86_64.rpm  MariaDB-5.5.46-centos7-x86_64-test.rpm   Perlbal-doc-1.78-1.el6.noarch.rpm
jemalloc-devel-3.6.0-1.el7.x86_64.rpmMariaDB-Galera-5.5.46-centos7-x86_64-server.rpm  perl-Danga-Socket-1.61-1.el6.rf.noarch.rpm
MariaDB-5.5.46-centos7-x86_64-client.rpm MariaDB-Galera-5.5.46-centos7-x86_64-test.rpmperl-MogileFS-Client-1.14-1.el6.noarch.rpm
MariaDB-5.5.46-centos7-x86_64-common.rpm MogileFS-Server-2.46-2.el6.noarch.rpmperl-Net-Netmask-1.9015-8.el6.noarch.rpm
MariaDB-5.5.46-centos7-x86_64-compat.rpm MogileFS-Server-mogilefsd-2.46-2.el6.noarch.rpm  perl-Perlbal-1.78-1.el6.noarch.rpm
MariaDB-5.5.46-centos7-x86_64-devel.rpm  MogileFS-Server-mogstored-2.46-2.el6.noarch.rpm
MariaDB-5.5.46-centos7-x86_64-server.rpm MogileFS-Utils-2.19-1.el6.noarch.rpm

4.对此目录运行createrepo命令即可

cd到yum目录执行createrepo;

[root@localhost ~]# createrepo yum
Spawning worker 0 with 6 pkgs
Spawning worker 1 with 6 pkgs
Spawning worker 2 with 5 pkgs
Spawning worker 3 with 5 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

![](http://i.imgur.com/WwcruFd.png)

此处可以看到repodata文件夹已经创建成功

下面我们来测试创建的yum仓库是否可用

1.在本机/etc/yum.repos.d/目录中创建一个.repo结尾的文件,这里我们就叫test.repo,里面添加上如下内容:

[root@localhost yum]# cd /etc/yum.repos.d
[root@localhost yum.repos.d]# touch test.repo

程序包管理之制作yum本地源

 [root@localhost yum]# yum list

程序包管理之制作yum本地源

2.在本机上更新本地yum缓存

清理缓存:yum clean all

[root@localhost yum.repos.d]# yum clean all
Loaded plugins: fastestmirror, langpacks
Cleaning repos: test
Cleaning up everything
Cleaning up list of fastest mirrors

创建缓存:yum makecache

root@localhost yum.repos.d]# yum makecache Loaded plugins: fastestmirror, langpacks test| 2.9 kB 00:00:00 (1/3): test/filelistsdb| 67 kB 00:00:00 (2/3): test/otherdb| 4.0 kB 00:00:00 (3/3): test/primary_db | 25 kB 00:00:00 Determining fastest mirrors Metadata Cache Created

3.查询新的yum仓库内容

yum list all

[root@localhost yum.repos.d]# yum list all

Available Packages
MariaDB-Galera-server.x86_64 5.5.46-1.el7.centos  test 
MariaDB-Galera-test.x86_64   5.5.46-1.el7.centos  test 
MariaDB-client.x86_645.5.46-1.el7.centos  test 
MariaDB-common.x86_645.5.46-1.el7.centos  test 
MariaDB-compat.x86_645.5.46-1.el7.centos  test 
MariaDB-devel.x86_64 5.5.46-1.el7.centos  test 
MariaDB-server.x86_645.5.46-1.el7.centos  test 
MariaDB-shared.x86_645.5.46-1.el7.centos  test 
MariaDB-test.x86_64  5.5.46-1.el7.centos  test 
MogileFS-Server.noarch   2.46-2.el6   test 
MogileFS-Server-mogilefsd.noarch 2.46-2.el6   test 
MogileFS-Server-mogstored.noarch 2.46-2.el6   test 
MogileFS-Utils.noarch2.19-1.el6   test 
Perlbal.noarch   1.78-1.el6   test 
Perlbal-doc.noarch   1.78-1.el6   test 
galera.x86_6425.3.9-1.rhel7.el7.centostest 
jemalloc.x86_64  3.6.0-1.el7  test 
jemalloc-devel.x86_643.6.0-1.el7  test 
perl-Danga-Socket.noarch 1.61-1.el6.rftest 
perl-MogileFS-Client.noarch  1.14-1.el6   test 
perl-Net-Netmask.noarch  1.9015-8.el6 test 
perl-Perlbal.noarch  1.78-1.el6

4.安装应用

yum install [Packge_name]

[root@localhost yum.repos.d]# yum install Perlbal.noarch
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package Perlbal.noarch 0:1.78-1.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===========================================================================================================================================
 Package  ArchVersion  Repository Size
===========================================================================================================================================
Installing:
 Perlbal  noarch  1.78-1.el6   test  5.7 k

Transaction Summary
===========================================================================================================================================
Install  1 Package

Total download size: 5.7 k
Installed size: 4.4 k
Is this ok [y/d/N]: y
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.
  Installing : Perlbal-1.78-1.el6.noarch   1/1 
  Verifying  : Perlbal-1.78-1.el6.noarch   1/1 

Installed:
  Perlbal.noarch 0:1.78-1.el6  

Complete!

安装测试成功!

原创文章,作者:YOUNG,如若转载,请注明出处:http://www.178linux.com/38965

(0)
YOUNGYOUNG
上一篇 2016-08-24
下一篇 2016-08-24

相关推荐

  • systemd和systemctl

    systemd:      POTS–>boot Sequence(BIOS)–>Bootloader(MBR)–>kernel(ramdisk)–>rootfs(swithroot)–>/sbin/init    &n…

    Linux干货 2016-09-22
  • 使用vim编辑器进行编程

    1.首先需要配置vim的语法风格,具体操作如下 # vim /etc/vimrc set nu 这是设置显示行号** set showmode 设置在命令行界面最下面显示当前模式等。 set ruler 在右下角显示光标所在的行数等信息 set autoindent 设置每次单击Enter键后,光标移动到下一行时与上一行的起始字符对齐 set ts=4 注:…

    2017-04-09
  • 网络管理

    网络概念 网络应用程序 Web 浏览器(Chrome、IE、Firefox等) 即时消息(QQ、微信、钉钉等) 电子邮件(Outlook、foxmail 等) 协作(视频会议、VNC、Netmeeting、WebEx 等) web网络服务(apache,nginx,IIS) 文件网络服务(ftp,nfs,samba) 数据库服务( MySQL,MariaDB…

    Linux干货 2017-05-06
  • Python入门之迭代,列表解析,生成器及文件操作

    迭代器是访问集合元素的一种方式,迭代器包含了__iter__()(返回迭代器对象本身)next()(返回迭代器的下一个元素)迭代器只能往前不会退后 以下类型支持迭代 序列类型:list,str,tuple 非序列类型:dict,file 自定义类 通过内建的函数iter()或对象自带方法__iter__可以获取迭代器对象 l1=range(5) iter1=…

    Linux干货 2015-12-13
  • 广域网中的DNS服务

    拓扑图                      创建主DNS:     配置文件/etc/named.conf&nbs…

    2017-04-15