关于制作rpm包的patch的方法

本文详细介绍了如何通过一系列步骤创建定制化的rpm包,包括安装所需软件、生成rpmbuild目录结构、下载源码包、安装并解压源码、修改源码、生成补丁文件、编辑spec文件以及最终构建rpm包的过程。

原文链接 http://blkart.blog.51cto.com/1142352/1542533

(1)准备工作:

    安装rpm-build软件包

(2)生成rpmbuild目录

    以root用户登陆,执行命令:

    # rpmbuild -ba abc.spec

    命令会提示错误,不必关心

    此时,再/root目录下会自动生成名为rpmbuild的目录及内部子目录

(3)下载要打patch的source rpm包

    # wget test-***.src.rpm

(4)安装source rpm包

    # rpm -ivh test-***.src.rpm

(5)切换到/root/rpmbuild/SOURCES目录,此时在该目录下应可以看到一个类似名为test-***.tar.gz的tar包,解压改tar包到当前目录

    # tar -xzf test-***.tar.gz

(6)此时应可以得到一个名为test-***的目录,复制该目录到当前目录下,并改名为test-***-new

    # cp test-*** test-***-new

(7)修改test-***-new目录下的代码

(8)生成patch文件

    # diff -uNr test-*** test-***-new > test-***.patch

(9)修改spec文件,加入patch相关信息

    在Source0下以行添加下面一行

    Patch0: test-***.patch

    在%setup下加入下面一行

    %patch0 -p1

(10)封装rpm包

    # rpmbuile /root/rpmbuild/SPECS/test-***.spec

本文出自 “BlkArt” 博客,请务必保留此出处http://blkart.blog.51cto.com/1142352/1542533


在使用 Arthas 查看特定 Bean 字段值时,可以通过 OGNL 表达式结合 Spring 上下文获取 Bean 实例,并进一步访问其字段值。这种方法适用于运行中的 Spring 应用程序,尤其是在调试或性能调优场景中非常实用。 假设需要查看名为 `insurancePolicyUseCountController` 的 Bean 中的字段 `detailSize`,可以使用如下命令: ```bash ognl '@com.xxx.itc.quartz.utils.SpringApplicationContextHolder@getSpringBean("insurancePolicyUseCountController").detailSize' ``` 此命令通过 `SpringApplicationContextHolder` 获取 Spring 容器中的 Bean,然后访问其字段值。为了确保这种方式能够正常工作,需要保证 `SpringApplicationContextHolder` 类已经正确实现 `ApplicationContextAware` 接口,并且在 Spring 启动完成后能够成功获取到上下文信息[^2]。 此外,如果 Bean 的字段是私有变量且没有提供公开的 Getter 方法,直接访问可能会受限。此时可以考虑通过反射机制或者修改字段访问权限来获取值,但需要注意这可能带来的安全性和稳定性风险。 ### 示例代码:实现 `SpringApplicationContextHolder` 以下是一个简单的 `SpringApplicationContextHolder` 实现,用于在 Spring 启动后获取 Bean: ```java import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; @Component public class SpringApplicationContextHolder implements ApplicationContextAware { private static ApplicationContext context; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { context = applicationContext; } public static <T> T getBean(Class<T> beanClass) { return context.getBean(beanClass); } public static Object getSpringBean(String beanName) { return context.getBean(beanName); } } ``` 通过上述实现,可以在 Arthas 中方便地调用 `getSpringBean` 方法获取 Bean 并访问其字段值。 ### 总结 - 使用 OGNL 表达式结合 `SpringApplicationContextHolder` 可以有效获取 Bean 的字段值。 - 确保 `SpringApplicationContextHolder` 正确实现并能够在 Spring 容器中注册。 - 对于私有字段,可能需要通过反射或其他方式访问,但需谨慎处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值