在我们运行 Debian Lenny 的 NAS 上,我在 sshd_config 中愚蠢地将 PermitRootLogin 设置为无密码,而没有先正确设置密钥,现在被锁定了。这是一个 WD Sharespace 并且阅读它看起来我恢复 root SSH 访问的最佳方法是创建一个覆盖原始 sshd_config 文件的 deb 包。我发现描述 deb 包创建的网站非常繁琐。我需要这个包做的就是覆盖一个文件。有没有一种简单的方法可以做到这一点?
2 回答
有一些工具可以更轻松地进行一些简单的打包,但打包是一项根本上复杂的任务,因为包可以做很多事情(写出二进制文件、配置文件、运行安装后脚本等)
也就是说,如果您需要做的只是打包一个文件以显示在特定位置,那么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"}
确保使用该选项设置正确的架构(我不知道 WD Sharespace 使用什么)-a
。在 NAS 上安装该软件包后,配置文件应该会显示在那里。
作为 Lenny 和许多其他发行版中存在的替代方案是“外星人”命令。它将软件包从一种发行版转换为另一种发行版。除了它对 Slackware TGZ 软件包非常宽容之外,这并没有多大用处。它将接受路径从根目录开始的任何 TGZ 文件 (pkgname_version.tar.gz),并将该 TGZ 转换为纯 deb 文件以进行安装。
它有几个选项来定制包(设置版本标签等),但最终的结果是一个包可以安装/删除或替换系统上的任何包而没有麻烦。