当前位置: 首页 > news >正文

【Linux】之【Get】 chroot 环境下安装deb包时 .postinst:行 9: 201 段错误 (核心已转储)ldconfig

背景

如题,在postinst文件中直接执行了ldconfig命令, chroot 环境下出错,安装失败

分析

chroot 环境下不能用 ldconfig 和 systemctl
在这里插入图片描述但是:如果环境是 chroot,系统有可能没完整挂载 /proc、/dev、系统路径,跑 ldconfig 就容易段错误(core dump)。

解决

加条件判断,出错后也继续执行接下来的安装任务,防止影响安装。

  • chroot 环境下不能用 systemctl,要添加条件判断
is_chroot() {
    if [ -f /proc/1/sched ]; then  # 看 /proc/1/sched 这个文件存不存在。➔ 这个文件是记录系统 第一个进程(PID 1) 的状态。➔ 正常系统里 PID 1 是 systemd,如果没这个文件,大概率是特种环境(比如 chroot)。
        # 检查 init 是不是 systemd 打开 /proc/1/comm 这个小文件,看里面是不是写着 systemd。 ➔ 这个文件保存了 PID 1 的名字。 ➔ 如果看到是 systemd,说明是正常启动的系统,不是 chroot。
        if grep -q "systemd" /proc/1/comm 2>/dev/null; then
            return 1    # 不是 chroot
        else
            return 0    # 是 chroot
        fi
    else
        return 0        # 没有 /proc,肯定是 chroot
    fi
}

if ! is_chroot; then
      if command -v systemctl >/dev/null 2>&1; then #检查有没有 systemctl 这个命令。 ➔ 有些很精简的系统,可能没装 systemctl,所以这里保险一点,先检查
          systemctl daemon-reload || true
          systemctl enable xxx.service || true
          systemctl daemon-reload || true
      fi
  else
      echo "Running in chroot, skipping systemctl operations."
  fi

在这里插入图片描述

  • ldconfig = 帮 Linux 记住最新的动态库,避免程序找不到库出错。

  • Debian 包管理系统中常见的脚本有:

    preinst:在安装前执行。用于检查环境、备份等操作。
    
    postinst:在安装后执行。用于配置服务、创建文件等任务。
    
    prerm:在卸载前执行。用于停止服务、清理工作。
    
    postrm:在卸载后执行。用于删除配置文件、清理系统。
    
    config:用于配置交互,接收用户输入并生成配置文件。
    

相关文章:

  • 怎么做网站能快速赚钱品牌推广的渠道有哪些
  • 网站上怎么做通栏的图片关键词优化的最佳方法
  • 重庆公司注册网站做游戏推广一个月能拿多少钱
  • 做导航网站用什么源码关键词排名霸屏代做
  • 1717做网站手机百度网页版
  • 拍拍网的网站建设公司网站制作要多少钱
  • 多卡分布式训练:torchrun --nproc_per_node=5
  • LeetCode 热题 100_零钱兑换(85_322_中等_C++)(动态规划)
  • 在cordova环境下配置IOS项目,并成功运行起来
  • jQuery 插件
  • npm、nvm、nrm
  • MySQL 优化教程:让你的数据库飞起来
  • 我所学的cfd【1
  • WEB攻防-Java安全JNDIRMILDAP五大不安全组件RCE执行不出网不回显
  • 水利水电安全员ABC适合哪些人考?
  • QT 调用动态链接库
  • 基于CNN-LSTM-GRU的深度Q网络(Deep Q-Network,DQN)求解移动机器人路径规划,MATLAB代码
  • 远程管理命令:关机和重启
  • Qt问题之 告别软件因系统默认中文输入法导致错误退出的烦恼
  • 用最简单的方式讲述离散傅里叶级数(DFS)以及离散傅立叶变换(DFT)
  • OpenHarmony荷兰研习会回顾 | 仓颉语言赋能原生应用开发实践
  • Brose EDI 项目报文解读:VDA 4987 Global DESADV
  • 带label的3D饼图(threejs)
  • IAP Firmware Upload Tools.exe IAP 网络固件升级教程
  • (五)深入了解AVFoundation-播放:多音轨、字幕、倍速播放与横竖屏切换
  • Spring 的 IoC 和 DI 详解:从零开始理解与实践