OpenWrt重装ipk后如何保持配置
How to keep config after reinstall ipk on 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/
文件夹中的配置会自动保留。因此,如果您 re-flash 具有新生成图像的设备,您的配置将不会丢失。
但是,如果您想使用 opkg install
命令安装新版本的软件包,您需要在 Makefile 中定义自定义 preinst
和 postinst
目标。像这样:
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
据我所知,有一个更简单的解决方案,只需将您的包使用的配置文件添加到 Makefile 中的 "conffiles" 部分:
define Package/zm_control/conffiles
/etc/config/config_file1
/etc/config/config_file2
# ecc...
endef
在 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/
文件夹中的配置会自动保留。因此,如果您 re-flash 具有新生成图像的设备,您的配置将不会丢失。
但是,如果您想使用 opkg install
命令安装新版本的软件包,您需要在 Makefile 中定义自定义 preinst
和 postinst
目标。像这样:
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
据我所知,有一个更简单的解决方案,只需将您的包使用的配置文件添加到 Makefile 中的 "conffiles" 部分:
define Package/zm_control/conffiles
/etc/config/config_file1
/etc/config/config_file2
# ecc...
endef