Linux离线环境下安装软件(Ubuntu系统)

Linux离线环境下安装软件(Ubuntu系统)

  1. 先在联网环境下把安装包及其依赖包下载下来,
  2. 运行脚本之前需要apt-rdepends 命令,没有的话需要提前安装sudo apt install apt-rdepends 。下面是下载脚本:
#!/bin/bash

# 检查是否提供了软件包名称作为第一个参数
if [ -z "$1" ]; then
  echo "Usage: $0 <package-name>"
  exit 1
fi

# 从命令行参数获取软件包名称
PACKAGE_NAME="$1"

# 定义其他变量
PACKAGE_DIR="${PACKAGE_NAME}-packages"
DEPENDENCIES_FILE="${PACKAGE_NAME}-dependencies.txt"

# 创建目录并设置权限
sudo mkdir "$PACKAGE_DIR"
sudo chmod 777 "$PACKAGE_DIR"

# 创建依赖文件并设置权限
sudo touch "$DEPENDENCIES_FILE"
sudo chmod 666 "$DEPENDENCIES_FILE"

# 生成依赖列表
sudo apt-rdepends "$PACKAGE_NAME" | grep -v "^ " | awk '{print $NF}' | sort -u > "$DEPENDENCIES_FILE"

# 从依赖文件中删除 "debconf-2.0" 文本
sudo sed -i '/debconf-2.0/d' "$DEPENDENCIES_FILE"
sudo sed -i '/cron-daemon/d' "$DEPENDENCIES_FILE"

# 下载依赖包
cd "$PACKAGE_DIR"
sudo apt-get download $(cat "../$DEPENDENCIES_FILE")

#安装依赖包 sudo dpkg -i 包名.deb

脚本会自动检索软件的依赖包并输出到xxx-dependencies.txt文件中,之后脚本会读取.txt文件,然后通过apt命令下载到xxx-packages目录中

  1. 上面的脚本会把依赖的所有软件包都下载下来,其中包括系统中已经存在的包,可以使用下面脚本,把重复的删除
#!/bin/bash

if [ -z "$1" ]; then
  echo "Usage: $0 directory"
  exit 1
fi

PKG_DIR=$1

if [ ! -d "$PKG_DIR" ]; then
  echo "$PKG_DIR is not a directory"
  exit 1
fi

for pkg in $PKG_DIR/*.deb; do
    pkg_name=$(basename $pkg | cut -d'_' -f1)
    dpkg -s $pkg_name > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        echo "$pkg 已安装. 删除..."
        rm $pkg
    fi
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值