前言

有时候遇到Linux无法连接互联网的时候,安装软件就成了一个很头大的麻烦事,各种依赖安装,那么怎么去解决这个问题呢?文章末有一键脚本

打包,是一个不错的选择,下面开始实践!

目录 ————————————————————>请在右上位置查看目录

一、RPM系的打包方法

1.1、测试环境

用到的测试环境如下:

[root@master ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

本文以vsftpd及docker服务为例子

1.2、打包安装VSFTPD服务

1.2.1、下载包

下载之前我们先新建一个文件夹存放我们的RPM包,命令如下

sudo mkdir -p /rpm/vsftpd

新建之后我们就使用下面的命令将我们需要的安装包拉取下来

yum install --downloadonly --downloaddir=/rpm/vsftpd/ vsftpd

从下图可以看出,此时已经把这个服务的包拉取下来了

1.2.2、尝试本地安装

我们使用本地安装的方式安装看看

 rpm -ivh vsftpd-3.0.2-25.el7.x86_64.rpm

此时已经安装成功,从上面的结果来看的话看不出依赖问题,下面以docker-ce服务的安装做演示,相同步骤不再做解释。

1.3打包安装docker-ce

1.3.1、下载docker服务包及其依赖包

参数说明:

  • -q #静默安装

从上面的结果来看,这次不止是下载docker-ce这个包,其主要依赖container也被下载下来,那么这时候我们试一下安装

此时服务安装成功,如果需要打包去其他主机安装,可以选择压缩之后打包,下面简单演示一下压缩与解压

1.3.2、安装压缩解压工具

首先安装unzip和zip

yum install -y unzip zip 

安装完成之后,我们进入之前指定的文件夹路径

1.3.3、开始压缩

执行下面的命令进行解压

zip -r docker-ce.zip *.rpm

打包之后我们查看一下文件大小

du -sh docker-ce.zip

压缩之后管理就比较方便了,当复制到其他主机的时候,只需要使用下面的命令即可解压

1.3.4、解压文件

这里我移动该压缩文件至/opt/进行解压演示,文件名后面不加路径将默认解压当当前路径

unzip docker-ce.zip 

那么到这里,RPM系的依赖打包方法就结束了!

二、DEB系

2.1、系统环境

2.2、缓存清理

rm -rf /var/cache/apt/archives/
mkdir -p /var/cache/apt/archives/

2.3、下载VSFTPD安装包

apt-get -d install vsftpd

此时安装包已经下载完成, 验证

ls /var/cache/apt/archives/

2.4、本地安装验证

cd /var/cache/apt/archives/

dpkg -i vsftpd_3.0.3-12_amd64.deb

2.5、docker打包演示

2.5.1、清理缓存及下载包

rm -rf /var/cache/apt/archives/*

下载完成之后,查看缓存目录

2.5.2、查看下载结果

 ls /var/cache/apt/archives/

可以看到,此时下载了非常多的依赖包,现在我们使用本地安装的方式进行安装验证

2.5.3、本地安装验证

dpkg -i /var/cache/apt/archives/*.deb

可以看到,安装是完全没问题的。当然,这是其中一个安装方式,仅限主机少的情况下进行安装,如果主机多久需要做一个私有源了,下面演示私有源的部署

三、debian系私有源的部署与配置

3.1、压缩与解压

3.1.1、压缩包

一样的操作,先安装压缩 工具

apt install zip

然后对安装包进行打包

zip -r docker-ce.zip /var/cache/apt/archives/*

打包成功之后,把这个包复制到需要安装此服务的主机中的其中一台进行安装及配置私有,所以我们需要打包两个服务,另一个是vsftpd,在这里就不展开了,请自行理解

3.2.1、解压并安装

首先查看我们需要用到的包

解压docker包

 unzip docker-ce.zip 

3.2.2、安装vsftpd

 dpkg -i vsftpd_3.0.3-12_amd64.deb 

配置路径

echo 'anon_root=/opt/apt/' >> /etc/vsftpd.conf&&mkdir /opt/apt/

3.2.3、 访问ftp服务器

3.2.4、开启匿名访问

sed -i 's/anonymous_enable=.*/anonymous_enable=YES/g' /etc/vsftpd.conf
 systemctl restart vsftpd

继续访问

此时,访问成功

3.2.5、生成包索引

touch /opt/apt/Packages.gz
chmod -R 777 /opt/apt/
dpkg-scanpackages /opt/apt/ /dev/null | gzip > /opt/apt/Packages.gz 

5.2.6、添加源列表

首先查看源配置

 cat /etc/apt/sources.list

备份源文件

cp /etc/apt/sources.list  /etc/apt/sources.list.bak

配置源

echo 'deb file:/opt apt/' > /etc/apt/sources.list

更新源

一键脚本

#!/bin/bash
##一键打包Linux服务包及依赖
##字体设置
#红色背景
red_bg='\e[41;33;1m'
#红色字体
red_zt='\e[1;31m'
#绿色背景
green_bg='\033[0;32;1m'
#绿色字体
green_zt='\e[1;32m'
#关闭效果
end='\033[0m'
#字体闪烁
ss='\033[05m'
##变量预配置
d='/Y'
rpms="${d}/rpm/"
debs='/var/cache/apt/archives'
zip_dir='/Y/zip'
mkdir -p $rpms $compress $zip_dir
zips(){if [ "$p" = 'yum' ];thenf_nubmer=`ls  ${rpms} | wc -l`pushd ${rpms} > /dev/nullfiles=${pack}_${r}_rpm.zipzip -r  ${files} ${pack} > /dev/nullelif [ "$p" == 'apt' ];thenf_nubmer=`ls  $debs  | wc -l`pushd $debs > /dev/nullfiles=${pack}_${r}_deb.zipzip -r ${files} * > /dev/nullfimv  ${files} ${zip_dir}/if [ $? == '0' ];thenecho -e "共打包${green_zt}${f_nubmer}${end}个服务包"echo -e "${green_zt}打包成功,已存放至:${end}"echo -e "${red_zt}${zip_dir}/${files} ${end}"size=`du -sh ${zip_dir}/${files}`echo -e "压缩包文件大小为: \n${green_zt}${size} ${end}"elseecho -e "${red_bg} 打包失败 ${end}"fi
}
cheks(){if [ $? == "0" ];thenecho -e "${green_zt} ${1}成功${end}"zipselseecho -e " ${red_bg} ${1}失败 ${end}"fi
}
yum_package(){if [ ! -f '/usr/bin/zip' ];thenyum install -y zip unzip -qfipack="$1"echo -e "是否显示下载过程程${red_zt}[y/n]${end}"read vecho -e "正在下载${green_bg}${pack}${end},${ss}请耐心等待.....${end}"if [ "$v" == 'y' ];thenyum install  --downloadonly --downloaddir=${rpms}/${pack} $packelseyum install  --downloadonly --downloaddir=${rpms}/${pack} $pack > /dev/nullficheks "${pack}下载"
}
apt_package(){if [ ! -f '/usr/bin/apt' ];thenapt-get install -y zip unzipfirm -rf ${debs}/*pack="$1"echo -e "是否显示下载过程${red_zt}[y/n]${end}"read vecho -e "${ss}${green_zt}正在下载${pack},请耐心等待.......${end}"if [ "$v" == 'y' ];thenapt-get -d -y install ${pack}elseapt-get -d -y install ${pack} > /dev/nullficheks "${pack}下载"
}
##判断执行用户
if [[ $UID == "0" ]];thenecho "当前使用ROOT用户"
elseecho -e "当前非ROOT用户,建议切换至ROOT执行\n[按回车继续使用当前用户操作]"read Y
fi
#判断包管理器
if [ -f '/usr/bin/yum' ];thenp='yum'
elif [ -f '/usr/bin/apt' ];thenp='apt'
elseecho '当前脚本暂不支持apt/yum之外的包管理器'
fi
if [ -z "$USER" ];thenUSER='仅支持Linux系统查询!'
fi
#信息列表
r=`uname -m`
echo -e "脚本配置信息如下:
当前管理器:${green_zt} ${p} ${end}
当前用户名:${green_zt} ${USER} ${end}
当前架构:${green_zt} ${r} ${end}
压缩包路径:${green_zt} ${zip_dir} ${end}"
#预打包配置
echo -e "当前${zip_dir}目录已有文件如下:"
for i in `ls ${zip_dir}`;doecho -e "${green_zt}${i}${end}"
done
echo -e  "是否删除${red_bg}数据:${end}[y/n]\n${ss}默认n${end}"
rm_dir(){if [ "$rms" == 'y' ];thenrm -rf $debs ${z} ${rpms}echo -e "${ss}${red_zt}删除完成${end}"mkdir -p $debs ${z} ${rpms}elseecho -e "${green_zt}跳过删除${end}"fi
}
input(){echo -e "请输入需要安装的包名,多个服务请使用${red_bg}空格${end}分开\n例如:${green_zt}apache2 vsftpd${end}"read packs
}
if [ "$p" == "apt" ];thenz=${zip_dir}/echo -e "${red_zt} $debs \n${z}/ ${end}"read rmsrm_dirinputfor i in $packs;dof="${zip_dir}/${i}_${r}_deb.zip"if [ -f $f ];thenecho -e "${green_zt}${i}${end}服务已打包,本次${red_zt}跳过下载${end}"elseapt_package $ifidone
elif [ "$p" == "yum" ];thenecho -e "${red_zt}${rpms}  \n$zip_dir  ${end}"read rmsrm_dirinputfor i in $packs;dof="${zip_dir}/${i}_${r}_rpm.zip"if [ -f $f ];thenecho -e "${green_zt}${i}${end}服务已打包,本次${red_zt}跳过下载${end}"elseyum_package $ifidone
fi
du -sh ${zip_dir}/*.zip

解决Linux依赖包的烦恼,教你如何打包依赖,覆盖常用Linux相关推荐

  1. linux网卡有很多error,教你设置win7系统虚拟机安装linux提示network error的解决方法...

    很多朋友在使用电脑的过程中,会发现win7系统虚拟机安装linux提示network error的现象,当遇到win7系统虚拟机安装linux提示network error的问题,我们要怎么解决呢?如 ...

  2. [Linux]Linux打開world、Excel、pdf文檔,常用Linux命令總結

    Linux打開world.Excel.pdf文檔 ---- 常用Linux命令總結 一.在Linux中打開world文檔(需要安裝openoffice) 1.1.打开或编辑.doc .odt等文本文档 ...

  3. 引入yml依赖包_手把手教你发布 Python 项目开源包

    编译:机器之心,作者:Gabriel Lerner.Nathan Toubiana 好不容易码了个 python 项目,是不是很兴奋?那么怎么把这个项目发出去让大家看到呢?本文作者写了一份在 GitH ...

  4. linux查询安装包的所有依赖包,linux:apt-get 如何安装,查询,解除依赖包

    apt-cache search package 搜索包 apt-cache show package 获取包的相关信息,如说明.大小.版本等 sudo apt-get install package ...

  5. java启动依赖包问题_spring boot创建项目包依赖问题的解决

    今天捣腾了spring boot,按照官网案例,缺发现本地无论包依赖出现问题,并且无法启动,一整天在踩maven的坑,记录下这个血的教训. 1.spring-core依赖包问题 运行applicati ...

  6. 基于阿里云函数计算实现需要用到超大依赖包的 Python 无服务器计算

    文章目录 引言 一.阿里云函数计算是什么? 开发流程 函数计算的触发调用 函数计算运行实例的生命周期 二.示例应用的架构及简介 三.具体开发部署步骤所遇到的坑和~~避坑指南~~ 坑1. 超大依赖包的部 ...

  7. go自动下载所有的依赖包 go module使用

    原文地址,转载请注明出处: https://blog.csdn.net/qq_34021712/article/details/109146367  ©王赛超 今天在学习dubbo-go的时候,下载了 ...

  8. 正在或即将被使用的Go依赖包管理方法:Go Modules,Go 1.13的标准特性

    公众号原文地址:https://mp.weixin.qq.com/s/SGGV3tWEg5AAJ7I_FcK0cg 目录 目录 说明 初始化 依赖包的默认导入 依赖包的特定版本导入 查看已添加依赖 依 ...

  9. Ubuntu18.04下安装OpenCV依赖包出现ibjasper-dev无法安装的问题

    近期需要在ubuntu18.04系统上安装opencv但是在安装依赖包的过程中,有一个依赖包,libjasper-dev在使用命令 sudo apt-get install libjaster-dev ...

最新文章

  1. idea每次新建项目都要重新配置maven
  2. python 倒叙 数组_打基础一定要吃透这12类 Python 内置函数
  3. eclipse build path 以及 clean(转)
  4. python课程主要介绍哪些内容_Python课程详细介绍
  5. boost::lambda::is_instance_of_1用法的测试程序
  6. 超酷炫粒子背景插件—particles.js
  7. Android 系统(67)---android apk 的root 权限和USB adb 权限的区别
  8. jQuery Mobile 学习资料
  9. Linux. C open创建文件,c-为什么open()用错误的权限创建我的文件?
  10. 商业模式匹配乃同质化产品竞争终极大杀器
  11. python模块 | 多种操作系统接口—os模块
  12. 鼠标自动移动 防止锁屏睡眠
  13. UE4打包工程失败问题记录
  14. 元宇宙中值得关注的7个前沿游戏,谁会是下一个Axie Infinity?
  15. LeetCode久不久来一题系列之Add Two Numbers
  16. oracle的userenv和nls_lang详解
  17. 2018入门级手机VR眼镜对比区别:ugp vr眼镜怎么样?目前哪个vr眼镜牌子效果更好,vr眼镜选哪款?
  18. 数据处理之数据类型转换
  19. LSA / LSI 算法
  20. java中getchars是什么意思_java中的getChars()方法

热门文章

  1. 我完全没有经验,可以转行产品经理吗?(附转行秘籍)
  2. excel高效之拆分单元格数据、导入ppt实现修改同步
  3. 图片隐写术/图片文件隐写/Exif工具
  4. ios开发-文字绘制
  5. sku商品选择实现思路
  6. 智能计数器控制板的功能及应用有哪些?
  7. 数理逻辑蕴含_数理逻辑为什么犯傻?
  8. D3D12渲染技术之纹理坐标
  9. OpenGL 图像白平衡色温
  10. linux里gdb配置插件peda, gef, gdbinit