将编译的应用程序复制到另一个系统

将编译的应用程序复制到另一个系统

我从源代码编译了最新版本的netatalk(3.1.8) 以替换我的 Raspberry Pi 上相当过时的版本。

这是相当成功的,我想在其他 Raspberry Pi 上使用这个版本,但下载所有dev库并重复编译似乎有些过头了。

是否有一个过程可以将编译后的版本及其man文件conf等复制到另一个系统?

答案1

善行难陀回答一般来说是更好的方法;但在netatalk这种情况下,将软件包升级到更新的版本似乎更合适复杂的(至少,在分发的情况下)。

现在您已经安装了本地构建的 版本netatalk,我建议您使用以下方法(我假设您提取netatalk到名为 的目录netatalk-3.1.8,并从那里构建并安装它):

  • tar启动源代码(以及源代码树中构建的二进制文件);
  • 将 tarball 复制到另一个 Raspberry Pi;
  • 在另一个 Raspberry Pi 上安装checkinstall并提取 tarball;
  • 使用安装二进制文件checkinstall

    checkinstall -D make install
    

    (作为root)。

最后一步将安装从您的第一个 Raspberry Pi(不需要任何-dev包)预构建源中复制的二进制文件,并.deb从中构建一个包。然后您可以将.deb包复制到其他 Raspberry Pi 系统...

我不确定如果缺少任何必需的库,这会发挥多大作用,因此您可能需要ldd事先在第一个 Raspberry Pi 上运行二进制文件,并确保相应的lib...软件包(不是-dev!)安装在第二个。

有一个更简单的变体如果netatalk Makefile有一个工作uninstall目标:在这种情况下,在第一个 Raspberry Pi 上,

  • 安装checkinstall;
  • 卸载netatalk

    make uninstall
    
  • 使用以下命令再次安装它checkinstall

    checkinstall -D make install
    

这样您就知道所需的库已安装,并且生成的库.deb应该具有适当的依赖项。

如果checkinstall不起作用,总是有预构建的 tarball 方法:

  • tar启动源代码(以及源代码树中构建的二进制文件);
  • 将 tarball 复制到其他 Raspberry Pi;
  • 在每个 Raspberry Pi 上运行make install;
  • 记下您需要单独安装才能使一切正常运行的库。

答案2

yum这就是、dpkg和等打包工具rpm存在的原因。我不是 Rasbian 用户,我不知道 netatalk 是否可以作为系统包使用(正在检查...好像是)。

  • 如果可用,那将是您的第一个停靠港。
  • 如果可用,但版本太旧,那么我会联系软件包维护者以获取更新。
  • 如果它不可用,或者您只是不想联系维护者,您可以考虑使用 Rasbian 使用的任何包管理系统(似乎是 Debian 包)构建一个包。这是一个指南对于dpkg, 和这是另一个拉斯比亚人链接到他们自己的页面

不使用二进制包意味着您必须自己跟踪所有文件的安装位置,以某种方式将它们打包,然后希望解压该 tar 文件不会覆盖目的地的内容。这些都是包管理工具要做的事情(以及确保满足依赖关系等)

Rasbian 似乎是一个依赖用户参与的小型发行版,因此与软件包维护者的友好对话可能会受到欢迎?

相关内容