文章目录


  在实际的centos服务器中,经常遇到客户需要在未联网的电脑中安装服务器程序,实现服务器程序的打包运行,这时可以采取的思路是,先在对应联网的电脑里(或者虚拟机中)联网安装目标程序,缓存到本地,然后制作yum安装源,拷贝至目标电脑,在目标电脑中安装。

1.本地虚拟机安装yum-plugin-downloadonly软件
  在虚拟机内配置yum只下载RPM包而不安装,这里要使用–downloadonly选项,需要先安装yum-plugin-downloadonly。
  命令如下:yum install yum-plugin-downloadonly

2.在本地虚拟机下载目标rpm安装包
  yum install --downloadonly --downloaddir=/tmp RPM_Name
  /tmp为指定下载的目录,RPM_Name为目标软件。

  yum–downloadonly会只下载RPM包不安装,同时会把依赖的包都下载下来,注意如虚拟机已经安装了依赖包,则不会下载,因此务必确保虚拟机的纯净(如果有方案可以下载已经有的依赖包,欢迎告知)。

  在目标机构建软件源,createrepo是必不可少的模块,需要在虚拟机上下载createrepo相关模块。
  命令:yum install --downloadonly --downloaddir=/tmp createrepo
  (1/3): createrepo-0.9.9-26.el6.noarch.rpm | 97 kB 00:01
  (2/3): deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm | 71 kB 00:00
  (3/3): python-deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm | 27 kB 00:00

3.查询依赖软件依赖关系
  yum deplist 软件包名称

4.上传到虚拟机
  通过ftp软件或者shell内置软件,上传到centos上。

5.在目标机器上安装createrepo

rpm -ivh deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm
rpm -ivh python-deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm
rpm -ivh createrepo-0.9.9-26.el6.noarch.rpm

6.createrepo构建本地软件源
  假设安装包在目标机的/home/user/rpms/目录下。
  命令: createrepo /home/user/rpms

7.修改yum软件源
  移除现有的软件源
  命令: mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bk
  开启本地软件源
  命令: vim /etc/yum.repos.d/CentOS-Media.repo
  在baseurl增加一行
  =file:///home/user/rpms/

修改文件CentOS-Base.repo,内容如下

[redhat-mylocal]                   #yum的ID,本地唯一,用于区分不同yum源
name=redhatmyrepo     			   #描述信息
baseurl=file:///media/cdrom/       #前面的file://是协议,后面的/mnt是光盘挂载点
gpgcheck=0                         #1使用公钥验证rpm包的正确性,0不验证
enabled=1                          #1启用yum源,0禁用yum源

8.在目标机安装目标软件
  如果用的是纯净的虚拟机环境,并且和目标机保持一致,那么依赖包就会都安装,yum安装就会很顺利。除非个别包会有依赖冲突,A依赖B,B又依赖A,导致无法安装,此时可以用rpm命令强制安装其中一个,再用yum安装软件即可。
  命令:rpm -ivh demo.rpm --nodeps --force

  合理的脚本代码可以有效的提高工作效率,减少重复劳动。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐