需求:

  • 在一个只有内网的服务器中安装某些需要进行源码编译的软件,并且该软件具有大量的依赖,最坑的是服务器只安装了基本的软件,现在需要手动将Development Tools软件包组安装到该服务器,然后完成所需软件的编译安装。

常用的离线安装软件的方法:

  1. 使用源码编译安装
    缺点:太麻烦,各种失败
  2. RPM包安装方式,在http://rpmfind.net/找到需要的包,然后rpm -ivh rpm包名 安装
    缺点:如果软件依赖的包太多,太繁琐
  3. 使用具有相同环境的主机导出安装包,然后在离线服务器进行安装
    缺点:需要有相同版本的联网主机,可以用Docker搞
    对于需求来说,第三种方式比较适合

以下是在相同版本联网主机导出单个软件(比如:vsftpd)及其依赖包的方法:

在联网上执行如下命令:
# 安装yum-plugin-downloadonly插件
yum install -y yum-plugin-downloadonly
# 把vsftpd换成你想要的包名,该命令将软件所有包下载到指定的文件夹中,即使这些包已经安装过
yum install --downloadonly --downloaddir /tmp/vsftpd/ vsftpd
将所有RPM包拷贝到内网服务器上安装既可。如果安装过程中提示xxx已安装是否需要覆盖,全部选否。
该工具并不适用于 yum groupinstall 。默认情况下,这个插件将会下载仓库中最新可用的软件包,可以通过指定版本号来下载某个特定的软件版本。

以下是在相同版本联网主机导出软件包组(比如:Development Tools)的方法:

# 安装yum-utils
yum install yum-utils
#下载软件但不下载依赖包
yumdownloader httpd
#下载软件同时也下载依赖包
yumdownloader --resolve --destdir=/root/mypackages/ httpd
不像 Downloadonly 插件,Yumdownload 可以下载软件包组。
yumdownloader "@Development Tools" --resolve --destdir /data/yum-pkgs/dev-tools/
yumdownloader --resolve --destdir=/data/yum-pkgs/createrepo/ createrepo
yumdownloader --resolve --destdir=/data/yum-pkgs/yum-utils/ yum-utils 虽然我们拿到了所有的包,但是还存在一个问题,大量的包(几十个或更多)如何快速的安装?
解决方法:在内网主机配置自己的软件源,并建立自定义的软件包组
先将从所有包上传到内网主机/data/yum-pkgs目录,然后将createrepo和yum-utils使用rpm命令安装到内网主机
#创建源
createrepo -v /data/yum-pkgs/dev-tools/
#添加源配置文件
vi /etc/yum.repos.d/Dev-Tool.repo
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=file:///data/yum-pkgs/dev-tools/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release 以下是使用工具自定义包组的方法(假设Diy Development tools包组只有gcc):
#使用工具生成自定义包组的配置文件, --mandatory指定必要的软件包,--optional可选软件包, yum-groups-manager是yum-utils工具集中工具
#此方法需要自己配置大量的软件包,只是自定义软件包组的例子,可以跳过
yum-groups-manager -n "Diy Development tools" --id=diy-dev-tools --save=diy-dev-tools.xml --mandatory gcc shell
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE comps PUBLIC "-//Red Hat, Inc.//DTD Comps info//EN" "comps.dtd">
<comps>
<group>
<id>diy-dev-tools</id>
<default>false</default>
<uservisible>true</uservisible>
<display_order>1024</display_order>
<name>Diy Development tools</name>
<description></description>
<packagelist>
<packagereq type="mandatory">gcc</packagereq>
</packagelist>
</group>
</comps>
加入到仓库
createrepo -g /data/yum-pkgs/diy-dev-tools.xml /data/yum-pkgs/dev-tools
#清理一下yum源缓存
yum clean all
#重新list一下
yum repolist # 查看现在的软件包组
yum gourplist
#安装自定义软件包组
yum groupinstall "diy-dev-tools" 可以获取系统字段的gourp配置: 搜索/var/cache/yum/x86_64/7/*/*comps.xml.gz,以下命令都需要替换成自己搜索到的文件
在xxx-comps.xml.gz中搜索Development tools即可。
#根据行号获取,所需数据在1629-1819
less -N bc140c8149fc43a5248fccff0daeef38182e49f6fe75d9b46db1206dc25a6c1c-c7-x86_64-comps.xml.gz
#获取配置,并自定义
zcat bc140c8149fc43a5248fccff0daeef38182e49f6fe75d9b46db1206dc25a6c1c-c7-x86_64-comps.xml.gz| head -n 1819| tail -n $((1819-1629+1)) >/data/yum-pkgs/diy-dev-tools.xml createrepo -g /data/yum-pkgs/diy-dev-tools.xml /data/yum-pkgs/dev-tools #清理一下yum源缓存
yum clean all
#重新list一下
yum repolist yum grouplist
yum groupinfo "Diy Development Tools" 其它命令:
createrepo --update local-yum/ # 更新本地源
createrepo local-yum/ # 重新生成metadata

最新文章

  1. Linux 服务器监控
  2. Android View各种尺寸位置相关的方法探究
  3. maven之ubutu安装
  4. iOS应用架构谈(一):架构设计的方法论
  5. Java Day 15
  6. html常用笔记
  7. Eclipse 运行多个Tomcat实例
  8. str、__str__ 、repr、 __repr__、``
  9. 简谈-Python的输入、输出、运算符、数据类型转换
  10. c# 【MVC】WebApi通过HttpClient来调用Web Api接口
  11. Spring框架(四)AOP面向切面编程
  12. MinerDB.java 数据库工具类
  13. POJ 3169 Layout 【差分约束】+【spfa】
  14. MySQL 分页查询和存储过程
  15. 【arc093f】Dark Horse(容斥原理,动态规划,状态压缩)
  16. ionic_ Network connectivity error occurred, are you offline?
  17. springmvc+json 前后台数据交互
  18. 登录centos虚拟机后显示-bash-4.1
  19. Apache之.htaccess备忘录(一)
  20. 禁用Java JDK的自动更新

热门文章

  1. (K8s学习笔记八)Pod的扩缩容
  2. 玩玩 Visual Studio Code 和 MSYS2
  3. pycharm中运行shell脚本
  4. apk签名之后安装失败
  5. Python学习笔记组织文件之shutil模块
  6. 移动端性能测试--CPU资源
  7. Go语言互斥锁(sync.Mutex)和读写互斥锁(sync.RWMutex)
  8. Django 之 Form
  9. Resport 四则运算
  10. JAVA-批量下载zip