我正在尝试从REDHAT 6系统上的二进制文件构建RPM。我将所有文件都包含在%files部分中(查找/ path / to / fake / install -type f>> specfile)
当我运行rpmbuild -bb specfile --target x86_64时,我得到了
检查未打包的文件:/ usr / lib / rpm / check-files /path/to/rpmbuild/BUILDROOT/Package-1.0.0-1.el6.x86_64 错误:找到已安装(但未打包)的文件:
RPM构建错误: 找到已安装(但未打包)的文件:
请注意,错误消息中未列出任何文件。我不确定什么是错的,还有想法?
答案 0 :(得分:19)
您可以通过
忽略此类错误%define _unpackaged_files_terminate_build 0
另见 http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch09s05s07.html
答案 1 :(得分:6)
我猜你的/ path / to / fake / install是不正确的。
%files
部分中的路径必须是最终安装文件的路径,例如/usr/local/bin/myprog
。在rpm版本中,在%build
部分中,您需要确保将文件放在%files
部分中指定的相同位置,或者使用buildroot
选项{ {1}}并在规范文件中使用rpmbuild
变量,其子路径与$RPM_BUILD_ROOT
列表匹配,在此示例中为%files
。有关详细信息,请参阅http://www.rpm.org/max-rpm-snapshot/ch-rpm-anywhere.html。
答案 2 :(得分:0)
可能发生这种情况的一个示例:假设在class MainActivity : AppCompatActivity() {
private lateinit var navHostFragment: NavHostFragment
private lateinit var navController: NavController
private lateinit var drawerLayout: DrawerLayout
private lateinit var binding: MainActivityBinding
private lateinit var appBarConfiguration: AppBarConfiguration
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.main_activity)
setSupportActionBar(binding.toolBar)
navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as
NavHostFragment
navController = navHostFragment.navController
drawerLayout = binding.drawerLayout
appBarConfiguration = AppBarConfiguration(setOf(R.id.task_page),drawerLayout)
setupActionBarWithNavController(navController, drawerLayout)
binding.navView.setupWithNavController(navController)
NavigationUI.setupWithNavController(binding.navigationView, navController)
}
override fun onSupportNavigateUp(): Boolean {
return NavigationUI.navigateUp(navController, drawerLayout)
}
}
部分中有一个%post
,在%install_info
部分中有一个关联的%postun
。这需要在%install_info_delete
部分中使用类似%install
的命令显式删除信息文件的中间目录。