利用线上yum源,制作本地yum源
2017-12-13 22:54
225 查看
利用线上yum源,制作本地yum源
对于CentOS系列的操作系统而言,yum是一个必不可少的rpm包管理工具,它的宗旨是自动化的升级,安装/移除rpm包,收集rpm包的相关信息,检查依赖性并自动提示用户解决。 一个yum源又叫做yum仓库,既可以是http或者ftp站点,也可以是在本地。我们今天来讨论下yum源在本地的情况。问题场景
yum源安装时会有本地源和网络源,我们知道在联网的情况下的问题非常容易解决,而在离线的情况下问题就复制多了。如何在离线的情况下,也依然能够像联网一样方便、放心的使用yum呢?解决方式
下面提供几种解决方式把线上yum源全部添加到本地
只下载不安装
使用 yum 缓存
这几种方式的前提都是你需要知道所需rpm包的yum源地址。有些yum源并不是很主流,如果平时多留意常用的
yum源,用的时候就能信手拈来。
方法一:把线上yum源全部添加到本地
比如,我以安装PHP7.1为例,我知道
remirepo源可以满足我的需求。那我首先添加网络
yum源到本地:
wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm && rpm -Uvh remi-release-7.rpm
查看到
/etc/yum.repos.d,可以看到
remi-php71.repo,
remi-safe.repo等被添加到本地
我们来看看
remi-php71.repo这一个仓库,其关键信息是:
[remi-php71] name=Remi's PHP 7.1 RPM repository for Enterprise Linux 7 - $basearch #baseurl=http://rpms.remirepo.net/enterprise/7/php71/$basearch/ #mirrorlist=https://rpms.remirepo.net/enterprise/7/php71/httpsmirror mirrorlist=http://rpms.remirepo.net/enterprise/7/php71/mirror enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi
这个
remi-php71就是我们安装
PHP7.1所需的代码仓库了,下面是其配置项。其中
baseurl指定源的镜像服务器地址,
mirrorlist指定一个镜像服务器的地址列表。二者的目的都是告诉你从哪里可以找到这个仓库。
接下来,我们就开始来同步到本地,执行:
reposync -r remi-php71
reposync 工具需要安装,安装方式如下:
yum install yum-utils
这条命令安装了许多工具,
reposync只是我们用到的一条。
reposync完毕后,将
remi-php71里面的所有的rpm包复制到在目录
/var/yum/php/7.1下(目录可以自定义,但必须和
repo配置文件相同)。
然后我们执行
createrepo ./
createrepo 也需要安装,安装方式如下:
yum -y install createrepo
另外,我们添加自己的本地源配置文件,新建repo配置文件:
vim /etc/yum.repos.d/php7.1.repo
添加内容
[php7.1] name=PHP 7.1.11 baseurl=file:///var/yum/php/7.1/ gpgcheck=0 enabled=1
注意:配置文件里面的
baseurl以
file://开始,后面的跟本地路径,这个路径必须和存放rpm包的地址一致。
做好这一切准备工作之后,我们就可以来正式安装
PHP7.1了:
yum --disablerepo=* --enablerepo=php7.1 install php php-fpm php-mysqlnd php-mcrypt php-mysqlnd php-pecl-mysql php-xml php-soap php-xmlrpc php-simplexml php-curl
这个
--disablerepo=* --enablerepo=php7.1表示我们只用到本地的仓库
php7.1,没有用到任何线上的
yum仓库。但是因为其指向的
/var/yum/php/7.1/已经有了和网络上一模一样的资源,即所有的rpm包。因此,通过这种方式安装的效果和从网络源安装的效果一模一样!
这样,你可以将
/var/yum/php/7.1/中的rpm包复制到任何你想要安装的一台机器上,遵循同样的命令便可以顺利的装上你想要的软件环境。
当然,这样“全盘复制”也有个缺点,那就是很多网络
yum源其实很大很全,包括众多的版本,而更多情况下我们只需要一个版本,因此会因为下载大量多余的
rpm包从而造成磁盘浪费。这时候,我们就应该去寻找的网络源就更应该有针对性。
方法二:只下载不安装
这个方式可以定点安装,需要什么rpm就安装什么,将下载rpm包和安装rpm包两个操作分开。这需要yum的
--downloaddir参数。
RHEL6.4及之前版本,需单独安装
yum -y yum-plugin-downloadonly,RHEL6.4后面的版本就变成自带的了。
我们通过准备操作,已经添加了源
remi-safe.repo,可以通过这个源实现安全安装
PHP7的各个版本。如果我们想安装PHP7.2,那我们应该执行
yum install php72 --disablerepo=* --enablerepo=remi-safe
现在我们不想安装了,只想获取
php72的所有依赖的
rpm,以便于我们在别处,或者在我们想安装的时候再去安装。我们只需要继续添加参数:
yum install php72 --disablerepo=* --enablerepo=remi-safe --downloadonly --downloaddir=/tmp/rpm/download
通过
yum install -h可以查看
--downloaddir是指定下载rpm的存放路径,可以自定义。我们这里指定
/tmp/rpm/download。
注意,当有本地源且可以安装php72时,这条命令不会起作用,因此明确是哪个线上源,加上–disablerepo=* –enablerepo=remi-safe 这两个参数,确保rpm包能够顺利下载到本地。
方法三:使用 yum 缓存
默认情况下,当前版本的 yum 在成功下载和安装软件包后,会把下载的文件删掉。这样可以减少 yum 占用的磁盘空间。你可以打开缓存,这样 yum 将在缓存目录保留下载到的文件。缓存带来的好处是毋庸置疑的:可以提高yum的性能,可以离线进行yum操作,也可以复制缓存中的rpm包以在离线的时候使用。
默认情况下,
yum在
/var/cache/yum/目录保存临时文件,每个源都有自己的子目录。源目录中
packages/子目录包含了缓存的软件包。例如,目录
/var/cache/yum/x86_64/7/remi-safe包含从
remi-safe源下载的软件包。
要配置 yum 保留已下载的文件而不是删除,设置
/etc/yum.conf中的 keepcache 选项为 1:
[main] cachedir=/var/cache/yum/$basearch/$releasever keepcache=1 debuglevel=2 logfile=/var/log/yum.log ....
打开缓存后,每个 yum 操作都可能从仓库下载软件包数据。要保证缓存包含了软件包数据,在启用缓存后运行yum list 或 yum search 来下载软件包数据。
如果启用了缓存,在离线的情况下运行
yum -C install <软件包名>
你还可以将缓存
/var/cache/yum/整个地复制或者仅仅复制某一个yum源的cache到另一台离线机器上相同的目录,然后执行
yum -C update yum -C install <软件包名>
结论
以上三种方式的共同的前提是在联网的时候有这么一个合适的yum源,通过一定的方式复制到本地,然后在离线的情况下,或者是别的机器上实现完全一样的操作。通过这种方式增强了yum的功能,客观上也提高了其在不同环境上的适用性。当然,我们也可以自己制作rpm包,解决好依赖性,放在自己的本地源,从而实现和线上源一样的功能。
相关文章推荐
- Linux RedHat 利用ISO镜像文件制作本地yum源
- 利用iso制作本地yum源 http制作yum源镜像服务器
- 利用系统镜像ISO文件制作本地yum源
- 利用ISO制作本地yum源
- CentOS7如何利用本地光盘制作yum源
- linux 利用iso镜像制作本地yum源
- RHEL7利用iso镜像制作本地yum源
- RHEL6通过安装光盘或ISO文件制作本地yum源的方法
- 制作本地yum源
- 制作本地yum源
- RedHat/CentOS利用iso镜像做本地yum源
- 利用本地图片制作验证码(简短、美观)
- RHEL6通过安装光盘或ISO文件制作本地yum源的方法
- RHEL6通过安装光盘或ISO文件制作本地yum源的方法
- 制作本地的yum源
- 利用安装光盘创建本地YUM源安装wireshark
- 利用阿里云提供的镜像快速更换本地的yum源
- RedHat/CentOS利用iso镜像做本地yum源
- 【RedHat/Centos】利用iso镜像做本地yum源 转
- RHEL6通过安装光盘或ISO文件制作本地yum源的方法