linux - 运行 packer build 时补丁变空。如何解决这个问题

标签 linux bash patch packer

我已经使用打包工具在云环境中自动化了镜像构建过程。

它使用 linux 路径工具安装了很多工具并应用了很多补丁。

手动操作时,一切都按预期工作。但是对于打包机自动化,我面临着应用补丁的问题。

/etc/myprogram/myconfig.cfg 有一个配置文件.

我正在像这样运行补丁。

pushd /etc/myprogram patch -p 0 < myconfig.cfg.patch

补丁在手动运行时应用成功。但是随着加壳器的出现,目标文件变空了。

但在打包程序构建的标准输出中,我可以看到应用了 2 个 hunks 的输出。

问题是什么云?请提供一些调试建议。

packer build base.json

基础.json

{
    "builders": [
        {
            "flavor": "general1-8",
            "image_name": "Havell Build {{ timestamp }}",
            "source_image": "d944e490-f615-49a5-97f7-b80a8b0398d4",
            "ssh_keypair_name": "packer-manual",
            "ssh_private_key_file": "packer-manual.key",
            "ssh_username": "root",
            "type": "openstack"
        }
    ],
    "provisioners": [
        {   "type": "shell",
            "inline": "mkdir -p /tmp/patches/"
        },
        {
            "type": "file",
            "source": "patches/",
            "destination": "/tmp/patches/"
        },
        {
            "script": "apply_patches.sh",
            "type": "shell"
        }
    ]
}

apply_patches.sh

#!/bin/bash
set -ex

echo "*********************before************************"
echo "***************************************************"
cat /etc/myprogram/myconfig.cfg
echo "***************************************************"
echo "***************************************************"
pushd /etc/myprogram
patch -p 0 < myconfig.cfg.patch

echo "***********************after***********************"
echo "***************************************************"
cat /etc/myprogram/myconfig.cfg
echo "***************************************************"
echo "***************************************************"

exit 0

最佳答案

将脚本改为:

pushd /etc/myprogram
patch -p 0 < /tmp/patches/myconfig.cfg.patch

关于linux - 运行 packer build 时补丁变空。如何解决这个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44432569/

相关文章:

python - 如何为不同的字母设置颜色?

git - 如何在 git add 交互式补丁模式中获得更好的帅哥?

Python:将/etc/services 文件导入字典

Bash 删除路径中的前导/

c++ - xalan 和 xerces 的多个版本

linux - 如何仅删除某个目录下的重复文件(具有相同的校验和)

unix - diff'ing diffs with diff?

version-control - 将特定变更集从一个 TFS 实例应用到另一个

mysql - 进入流程 20/20

linux - 如何永久更改 Debian 上的系统默认日期时间?