pip apt 开发环境迁移

Python环境:

1.python环境中已安装的包导出

pip freeze > requirements.txt

2.如果迁移的环境有网络

pip install -r requirements.txt

3.如果迁移的环境无网络,如局域网内的服务器:

在本机操作下载:

pip download -d <downloadFolder> -r requirements.txt

在服务器进行安装:

pip install --no-index --find-links=<downloadFolder> -r requirements.txt

apt环境:

apt download <package_name>

apt往往有很多依赖,通常单一的安装包不足以完成安装需求,需要使用脚本拉取所有依赖。
单层级的依赖:

apt download `apt-cache depends <package_name> | grep Depends | cut -d: -f2 | tr -d "<>"``

多层级的依赖(A依赖B,B依赖C,C依赖D,根据A的依赖关系只能匹配到B,安装的时候会报错缺少依赖C和D,对于无网络的服务器就很麻烦了)
需要使用脚本实现依赖关系的匹配:

#!/bin/bash
savePath="save/"
logfile="Depends.log"
ret=""
function getDepends()
{
  echo "fileName is ${1}">>$logfile
  ret=`apt-cache depends $1 | grep Depends | cut -d: -f2 | tr -d "<>"`
  echo ${ret} | tee -a ${logfile}
  # return ${ret}
}

if [ -f ${logfile} ];
then
  rm ${logfile}
fi

libs=${1} # 从外部输入要获取的包名
# libs="gnome-shell" # 指定包名

i=0
while [ ${i} -lt 3 ];
do
  let i++
  echo ${i}
  newlist=""
  for j in ${libs}
  do
    added=`getDepends ${j}`
    # newlist="${newlist} ${added}"
    for sub_package in ${added}
    do
      flag=0
      for package in ${newlist}
      do
        if [ ${sub_package} = ${package} ];then
          flag=1
        fi
      done
      if [ ${flag} = 0 ];then
        newlist="${newlist} ${sub_package}"
      fi
    done
  done
  echo ${newlist}
  libs=${newlist}
done

if [ ! -d ${savePath} ];then
  mkdir ${savePath}
else
  rm -rf ${savePath}
  mkdir ${savePath}
fi

cd ${savePath}
for i in ${libs}
# apt download ${libs}
do
  # 为了防止某一个包无法下载导致下载任务中断,将下载任务拆分成独立下载每一个包
  apt download ${i}
done

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值