使用quilt将符号链接转为普通文件并添加到补丁的问题求助
Quilt管理Deb包源码时,将符号链接转为普通文件的解决方案
问题背景
使用Quilt工具维护Deb包的源码变更,需要将项目内一个指向同目录下文件的符号链接转为普通文件,但操作过程中遇到多个报错:
目录结构示例
src |.. ├folder1 | | | └symlink -> ../folder2/original_file | ├folder2 | | | └original_file ..
尝试过的操作及报错
直接用Quilt添加符号链接变更
quilt new test.diff quilt add /src/folder1/symlink报错:
Failed to add a symbolic link /src/folder1/symlink改用dpkg-source提交变更
dpkg-source --commit . my-patch.patch构建Deb包时触发报错:
dpkg-source: error: failed to submit change to /src/folder1/symlink: dpkg-source: error: new version simple file dpkg-source: error: old version symlink to ../folder1/symlink dpkg-source: error: uncharacteristic changes in source变通操作
先创建空补丁,删除符号链接并替换为普通文件,再用quilt edit将变更添加到补丁——操作成功,但构建包时仍出现上述dpkg-source错误。修改Quilt配置
编辑/etc/quilt.quiltrc,给QUILT_PATCH_OPTS添加-E选项,无效果。
可行解决方案
问题根源是dpkg-source默认禁止符号链接与普通文件之间的类型转换,需调整配置并按正确流程操作:
手动完成符号链接转普通文件
cd src/folder1 rm symlink cp ../folder2/original_file symlink允许dpkg-source接受非常规变更
在项目的debian/source/options文件中添加以下配置(文件不存在则创建):--allow-unchanged-changes该选项会放宽dpkg-source对文件类型变更的限制。
用Quilt将变更加入补丁
# 确保目标补丁处于活跃状态 quilt push test.diff # 添加转换后的普通文件到补丁 quilt add src/folder1/symlink # 更新补丁内容 quilt refresh重新构建Deb包
此时dpkg-source会正常处理该变更,不再报错。
内容的提问来源于stack exchange,提问作者xemrok
相关产品推荐
相关产品推荐

