在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
命令安装新版本的软件包,则需要定义自定义 preinst
和 postinst
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/