Debian Lenny的简单deb包?

时间:2014-10-24 14:34:04

标签: debian deb sshd lenny

在运行Debian Lenny的NAS上,我在sshd_config中愚蠢地将PermitRootLogin设置为无密码,而没有先正确设置密钥,现在已被锁定。它是一个WD Sharespace并且在它上面读取它看起来我恢复root SSH访问的最佳方法是创建一个覆盖原始sshd_config文件的deb包。我发现描述deb包创建的网站非常繁琐。我需要的所有包都要覆盖一个文件。有一种简单的方法可以做到这一点吗?

2 个答案:

答案 0 :(得分:1)

有一些工具可以更容易地进行一些简单的打包,但打包是一项非常复杂的任务,因为打包可以做很多事情(写出二进制文件,配置文件,运行安装后脚本等)。

也就是说,如果您需要做的就是打包一个文件以显示在特定位置,那么一个这样的工具就是fpm(需要Ruby)。不要不尊重fpm,它可以做的不仅仅是打包一个充满东西的目录!

/tmp中创建要在某处打包的目录结构。就好像/tmp/mypackage是目标文件系统的根,所以放在mypackage/etc中的任何内容都会在安装软件包后显示在/etc中:

mkdir -p /tmp/mypackage/etc
echo "My file contents" > /tmp/mypackage/etc/my_config_file

sshd_config文件粘贴到etc目录中。然后我们将其打包:

fpm -t "deb" -n "mypackage" -s dir /tmp/mypackage

你应该得到类似的东西:

Created package {:path=>"mypackage_1.0_amd64.deb"}

确保使用-a选项设置正确的架构(我不知道WD Sharespace使用的内容)。在NAS上安装该软件包后,配置文件就会显示在那里。

答案 1 :(得分:0)

作为Lenny和许多其他发行版中存在的替代方案是“外星人”命令。它将包从一个分发转换为另一个分发。除了Slackware TGZ软件包非常宽容之外,这一点没什么用处。它将接受任何TGZ文件(pkgname_version.tar.gz),其路径从根目录开始,并将该TGZ转换为普通的deb文件进行安装。

它有几个选项来定制包(设置版本标签等),但最终结果是一个包可以安装/删除或替换系统上的任何包而不会有麻烦。