Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为Ubuntu/Debian分发应用程序,以便在脱机安装时使用尚未支持的软件包_Ubuntu_Installation_Debian_Packages - Fatal编程技术网

为Ubuntu/Debian分发应用程序,以便在脱机安装时使用尚未支持的软件包

为Ubuntu/Debian分发应用程序,以便在脱机安装时使用尚未支持的软件包,ubuntu,installation,debian,packages,Ubuntu,Installation,Debian,Packages,我们在为Ubuntu/Debian部署应用程序时面临两个挑战: 1。脱机安装 我们的许多用户(比如说50%)需要离线安装。他们将没有互联网连接。因此,我们需要在安装CD/DVD上包含所有可能的依赖项(运行时/第三方库等)。看起来APT on CD可能是一个解决方案,但我阅读的文档并不完全清楚 2。尚未支持的软件包版本 “官方”Ubuntu存储库还不支持某些依赖项。例如,软件中心提供了特定库的4.2版,但我的应用程序需要4.4版——这是一个稳定的版本,只是不在官方存储库包中。(Debian的稳定发

我们在为Ubuntu/Debian部署应用程序时面临两个挑战:

1。脱机安装

我们的许多用户(比如说50%)需要离线安装。他们将没有互联网连接。因此,我们需要在安装CD/DVD上包含所有可能的依赖项(运行时/第三方库等)。看起来APT on CD可能是一个解决方案,但我阅读的文档并不完全清楚

2。尚未支持的软件包版本

“官方”Ubuntu存储库还不支持某些依赖项。例如,软件中心提供了特定库的4.2版,但我的应用程序需要4.4版——这是一个稳定的版本,只是不在官方存储库包中。(Debian的稳定发行版甚至更落后,仍在版本3中。)

  • 然后,我应该首先为这些创建自己的.deb包,还是将这些库安装在
    /usr/lib/myapp
    之类的地方
  • 如果我创建了自己的.deb,我应该给它起一个与官方软件包相同(可能)的名字吗?也就是说,我预计这些软件包中的许多(如果不是全部的话)将在将来某个时候正式提供。因此,理想情况下,安装过程(在线情况下)将首先查看库的官方存储库,但如果需要,可以退回到CD/DVD。这是可能的,还是我只是通过包装来命名完全不同的东西,让它永久地生活在一起

处理这些安装难题的最佳做法是什么?

脱机安装:您尝试过吗

Debian测试和不稳定是某些包的更新版本的重要来源。Debian stable没有得到太多的更新—这些软件包要么是经过修补的。只有上游发布了一个bug修复版本,stable才有可能获得新的更改

如果您想为某个应用程序获得更新的软件包,理想情况下,您应该下载源软件包并自己构建它(这不需要您提供任何软件包)

您可以使用debuild或pbuilder(pbuilder更好,因为它下载构建依赖项本身并使用洁净室环境进行构建)

最后,对于在不稳定(sid)或测试(目前也称为挤压)中获取debian软件包的源软件包来说,软件包跟踪系统是一个很好的地方(查看左侧边栏,您将找到指向“不稳定和测试”中软件包版本的链接。此链接指向.dsc文件。使用
dget
下载整个软件包,可从
devscripts
软件包获得

http://packages.qa.debian.org/name-of-source-package

用自建的新版本改写库是不明智的,因为这可能会破坏系统上的其他应用程序。更新的版本可能包含回归或二进制不兼容。如果可能的话,考虑花费额外的努力使它与分发的版本一起工作。否则,使用一个私有版本。不要被其他应用程序使用。小心那些可能存在安全漏洞的库——你还需要升级私有版本。

对你的应用程序进行静态构建,你就完成了

这是典型的专有软件(如Skype)通常的做法,尽管后者有动态和静态版本。

1)如果您在某种媒体上有软件包,就不需要使用apt,只需使用简单的dpkg-i/where/your/media/is/mounted/*。deb应该足以安装东西了吗

2) 如果您的发行版还不支持软件包,但要使您的客户发行版与他们拥有的任何软件兼容,另一种选择是重新打包这些依赖项。通过向包添加前缀来更改包的名称,并更改安装目录,例如/opt/prefix/而不是/usr


使用-rpath标志编译您的应用程序,该标志指向提供所需库的位置(afaik debian规则不允许使用rpath),或使您的应用程序仅从shell脚本启动,该脚本在启动实际应用程序之前设置了正确的LD_LIBRARY_路径。

不幸的是,这不是我们的选项。根据LGPL许可证限制,某些库必须共享。这也使得我们无法发送小的热修复程序,这是我们希望保持开放的。
http://packages.qa.debian.org/name-of-source-package