openwrt - 如何在 OpenWrt 上重新安装 ipk 后保留配置

标签 openwrt

在makefile中,我使用INSTALL_DATA将配置文件复制到/etc/config。并且配置文件在运行过程中会发生变化。

我发现,重新安装应用程序后,配置文件会恢复为默认的ipk打包的配置文件。

我想知道重新安装后如何保留配置文件。有人可以帮助我吗?

生成文件:

define Package/zm_control/install
    $(INSTALL_DIR) $(1)/etc/config
    $(INSTALL_DATA) ./config/$(PKG_NAME).json $(1)/etc/config/$(PKG_NAME).json
endef

最佳答案

您的Package/zm_control/install目标在软件包构建过程中执行,即在您的主机上,而不是在OpenWrt设备上。它将配置文件复制到暂存目录,该目录将嵌入到固件镜像文件和 .ipk 文件中。

当您执行不带 -n 标志的 sysupgrade 时,/etc/config/ 文件夹中的配置会自动保留。因此,如果您使用新生成的镜像重新刷新设备,您的配置将不会丢失。

但是,如果您想使用 opkg install 命令安装新版本的软件包,则需要定义自定义 preinstpostinst Makefile 中的目标。像这样:

define Package/$(PKG_NAME)/preinst
#!/bin/sh
# check if we are on real system
if [ -z "$${IPKG_INSTROOT}" ]; then
        #Backup config file
        cp /etc/config/$(PKG_NAME).json /tmp/$(PKG_NAME).json.bak
fi
exit 0
endef

define Package/$(PKG_NAME)/postinst
#!/bin/sh
if [ -z "$${IPKG_INSTROOT}" ]; then
        #Restore config file
        mv /tmp/$(PKG_NAME).json.bak /etc/config/$(PKG_NAME).json
fi
exit 0
endef

关于openwrt - 如何在 OpenWrt 上重新安装 ipk 后保留配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34512804/

相关文章:

snmp - 通过 SNMP 访问路由表

autotools - OpenWRT 在编译时在 staging_dir 中寻找文件

linux - Qemu x86 和 Linux 3.12.17 启动时内核崩溃

docker - 如何将Openwrt镜像作为Docker镜像运行

x86 - 交叉编译的 Valgrind 没有检测到明显的泄漏

linux - 挂载 JFFS2 导致返回 ECC 错误

linux - 在busybox的ash下做算术时如何将八进制数视为十进制数

openwrt - 如何使用crontab在特定时间仅在openwrt中运行一次重启命令?

azure - Microsoft Azure 或 Hyper-V 虚拟机中的 OpenWrt

c++ - OpenWRT 的简单 Hello World 程序