现在的位置: 首页 > 综合 > 正文

Gentoo 更改 openssh 版本信息(emerge 方式安装)

2013年10月10日 ⁄ 综合 ⁄ 共 1595字 ⁄ 字号 评论关闭

Gentoo 系统的软件都以源码形式提供给用户,所以安装软件都是以编译源码形式安装。

使用 emerge 软件包管理工具安装软件还是非常方便的(自动解决依赖,安装后的软也能很好的被系统和其他软件识别),但是编辑(二次开发) emerge 下载的源码后,却由于hash的问题无法编译安装。本文以openssh为例,阐述了如何解决此问题。

openssh 是常用的远程登录软件,emerge 默认安装会泄漏该软件版本信息,如图下所示:

从上图可以看到 OpenSSH_5.9p1-hpn13v11lpk, OpenSSL 2.2.2j 10 May 2012   等版本信息(其中,OpenSSL 2.2.2j 10 May 2012 是改过的版本)。

现分析总结出一方法:

1. emerge 下载 openssh 软件包(-f 表示只下载不安装 )

从上图可见,下载了三个软件包并检查了各软件包的(rmd160, sha1, sha256 )

2. 更改下载的软件包信息(不局限于版本)

2.1 更改 openssh-5.9p1.tar.gz 版本信息

从上图可见,用 grep 在解压后的源码中未找到 OPENSSH_5.9p1 版本信息,那么继续查找:

去查找到版本信息的源码文件中更改版本(我把所有OpenSSH改成SSH,5.9改成3.3,p1改成p9 )

另外,上图中 grep 查找关键字 还是不太对,正确的见下图:

 改完后,打包更改后的源码成 openssh-5.9p1.tar.gz (替换掉了 emerge -f 下载的 openssh-5.9p1.tar.gz )

2.2  改 openssh-5.9p1-hpn13v11.diff.gz  和 openssh-lpk-5.9p1-0.3.14.patch.gz 中的版本信息

我把所有OpenSSH改成SSH,5.9改成3.3,p1改成p9,hpn13v11改成 -bb- ,lpk 改成 cc 。

这样以来,预计完成后ssh 版本信息会从OpenSSH_5.9p1-hpn13v11lpk 变成 SSH_3.3p9-bb-cc

下图为我更改后的 openssh-5.9p1-hpn13v11.diff.gz

下图是我更改后的 openssh-lpk-5.9p1-0.3.14.patch.gz

3. 更改 portage Manifest

更改后的软件包不可以直接用于 emerge 安装, 无法通过 emerge checksum 检测。

我的方法是 找到 Portage 中记录的该软件包的 rmd160, sha1, sha256 并把其改成修改后该软件包的 rmd160, sha1, sha256 。

这样以来修改过的软件包就可以顺利通过 emerge 的验证了。

Portage 记录 openssh-5.9p1.tar.gz rmd160 ,openssh-5.9p1-hpn13v11.diff.gz  和 openssh-lpk-5.9p1-0.3.14.patch.gz 值的文件是:/usr/portage/net-misc/openssh/Manifest 。

具体方法如下(本文只演示了openssh-5.9p1.tar.gz rmd160, 其他同理)

3.1 用工具 openssl 计算出 openssh-5.9p1.tar.gz rmd160 的 rmd160, sha1, sha256 (还有文件大小哦)

3.2 用计算出的值,替换掉 /usr/portage/net-misc/openssh/Manifest 中的对应值(记得还有文件大小)


3.3 openssh-5.9p1-hpn13v11.diff.gz  和 openssh-lpk-5.9p1-0.3.14.patch.gz 


4.  安装修改过的软件

直接运行 emerge openssh 即可(若出错,清自检自己之前的行为 :))

5. 结果(对照本文第一张图, 版本信息从之前的OpenSSH_5.9p1-hpn13v11lpk 变成 SSH_3.3p9-bb-cc)

6. 木有了 ....

抱歉!评论已关闭.