DEB安装程序 - 依赖检查

使用第三方安装生成工具,我为我的应用程序创建了一个.deb包。
用户的Linux操作系统上需要安装一些依赖项,以使我的应用程序正常运行。具体来说,需要安装"make"和几个".so"库,如libgcc.solibc.so等。
并非所有的Ubuntu用户在运行我的软件包安装程序之前都已经安装了所需的依赖项。
我使用的这个第三方安装工具生成的DEB包没有包含依赖项检查。
作为Ubuntu社区的成员,你们能否就不带依赖项检查的自定义.DEB包在Linux-Ubuntu用户中的接受程度发表评论?
提供一个不检查依赖项的自定义应用程序的.deb文件是否足够可接受?或者这种做法是否足够罕见以至于会“激怒”Linux用户?
2个回答

免责声明:这与我的其他答案几乎完全相同。
由于您的程序无法生成依赖信息,我们将自行添加。例如,您需要编辑以Depends:开头的行,格式如下:
 Depends: package1, package2|package3

如果你需要套餐一,以及套餐二或套餐三中的一个。
打开 gedit 或 nano 并粘贴:
#!/bin/bash

if [[ -z "$1" ]]; then
  echo "Syntax: $0 debfile"
  exit 1
fi

DEBFILE="$1"
TMPDIR=`mktemp -d /tmp/deb.XXXXXXXXXX` || exit 1
OUTPUT=`basename "$DEBFILE" .deb`.modfied.deb

if [[ -e "$OUTPUT" ]]; then
  echo "$OUTPUT exists."
  rm -r "$TMPDIR"
  exit 1
fi

dpkg-deb -x "$DEBFILE" "$TMPDIR"
dpkg-deb --control "$DEBFILE" "$TMPDIR"/DEBIAN

if [[ ! -e "$TMPDIR"/DEBIAN/control ]]; then
  echo DEBIAN/control not found.

  rm -r "$TMPDIR"
  exit 1
fi

CONTROL="$TMPDIR"/DEBIAN/control

MOD=`stat -c "%y" "$CONTROL"`
vi "$CONTROL"

if [[ "$MOD" == `stat -c "%y" "$CONTROL"` ]]; then
  echo Not modfied.
else
  echo Building new deb...
  dpkg -b "$TMPDIR" "$OUTPUT"
fi

rm -r "$TMPDIR"

将文件保存为debedit.sh,并使用chmod +x debedit.sh命令使其可执行。
然后,运行debedit.sh deb_file_output.deb来处理该文件,并编辑正确的行(或添加新行)。保存后,使用您新创建的.deb文件进行分发。
来源:http://ubuntuforums.org/showthread.php?t=636724

一条答案已经告诉你如何添加依赖项,我将试着回答你关于没有依赖检查的DEB文件的问题:
在我看来,DEB文件有两个原因(在这个上下文中):
1. 提供了“tar”、“make”和“make install”的组合。 我的意思是,软件以单个文件的形式提供,就像其他软件以tar存档的形式提供,并且可以用一个命令安装,就像其他软件一样,通常会带有安装脚本。 所以 `aunpack <packagename>.tar.gz; cd <packagename>; make; make install` 可以用 `dpkg -i <packagename>.deb` 替代。
2. 通过依赖关系和对操作系统版本的先前测试,确保一切正常工作,并且一切都可以管理(安装、卸载)而无问题。
尽管第一点中的命令比其替代方案稍微短一些,但从我的角度来看,它不值得麻烦,只有第二点才使deb包变得有用。
如果你想创建一个DEB软件包,你必须同时注意两个方面:依赖检查和与操作系统版本的测试。如果你不包括依赖检查或测试,你的用户(Ubuntu或Debian用户)会非常失望。创建一个没有依赖检查的DEB软件包就像作弊一样,让用户相信你为他们做了某些事情,而实际上并没有这样做。
我的建议是:如果你不想手动添加检查,请根本不要生成DEB软件包。提供一行简短的信息,例如“通过运行install.sh安装软件”。然后用户就知道可以期待什么。

非常感谢您的回答。这给了我对这个主题的很好的洞察力。非常感激。 - user98662
谢谢。请随意给我的答案点赞,这通常是说“答案很好”的方式。如果过了一段时间你觉得有一个答案已经足够好,以至于可以被视为已回答的问题,你也可以接受其中一个答案(然后点击问题旁边的勾号)。 - xubuntix