【问题标题】:Simple deb package for Debian Lenny?Debian Lenny 的简单 deb 包?
【发布时间】:2014-12-20 10:04:01
【问题描述】:

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

【问题讨论】:

    标签: debian deb sshd lenny


    【解决方案1】:

    作为替代存在于 Lenny 和许多其他发行版中的是“alien”命令。它将包从一种发行版转换为另一种发行版。除了它对 Slackware TGZ 软件包非常宽容之外,这并没有多大用处。它将接受路径从根目录开始的任何 TGZ 文件 (pkgname_version.tar.gz),并将该 TGZ 转换为纯 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"}
      

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

      【讨论】:

      • 这看起来很完美。非常感谢。确认有效后,我会点击“已回答您的问题”。
      • 完美运行。感谢您提供明确的说明,尤其是 -a 选项。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多