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