无法安装带有“修订号为空”消息的软件包

Hrv*_*e T 3 dpkg kubuntu

在 Kubuntu 17.10 中,我安装了 SafeQ 客户端用于打印管理。我需要安装两个deb包,libcrafter_0.0.2_all.debysoft-client_4.0-87_all.deb这里

但是,现在在 Kubuntu 18.04 中我无法安装这两个软件包。因为libcrafter_0.0.2_all.deb如果我这样做

sudo dpkg -i libcrafter_0.0.2_all.deb
Run Code Online (Sandbox Code Playgroud)

我得到

dpkg: error processing archive libcrafter_0.0.2_all.deb (--install):
 parsing file '/var/lib/dpkg/tmp.ci/control' near line 3 package 'libcrafter':
 error in 'Version' field string '0.0.2-': revision number is empty
Errors were encountered while processing:
 libcrafter_0.0.2_all.deb
Run Code Online (Sandbox Code Playgroud)

我该如何安装这个,不知道是什么?我也试过

sudo dpkg --force-all -i libcrafter_0.0.2_all.deb
Run Code Online (Sandbox Code Playgroud)

“修订号为空”不应成为不安装的原因。这个包是一些学生为他的学士论文做的,我认为它不会更新。

Ste*_*itt 5

不幸的是,这个libcrafter包没有正确构建:它的版本被指定为“0.0.2-”,这在 Debian 中不是一个可接受的版本号(如Debian 政策的相关部分所指定)。dpkg接受此类版本号的旧版本,但在 1.18.19 版中已修复(我很惊讶您能够在 17.10 中安装这些软件包,因为它有dpkg1.18.24)。

但是这是可以修复的:

  1. 下载现有包。
  2. 提取它:

    dpkg-deb -R libcrafter_0.0.2_all.deb libcrafter-0.0.2
    
    Run Code Online (Sandbox Code Playgroud)
  3. 修复它的版本号和软件包的其他几个问题:

    sed -i 's/0.0.2-$/0.0.2-1/;s/all$/amd64/;s/java$/libs/' libcrafter-0.0.2/DEBIAN/control
    
    Run Code Online (Sandbox Code Playgroud)
  4. 重建包:

    dpkg-deb -b libcrafter-0.0.2 .
    
    Run Code Online (Sandbox Code Playgroud)
  5. 安装生成的包:

    sudo dpkg -i libcrafter_0.0.2-1_amd64.deb
    
    Run Code Online (Sandbox Code Playgroud)
  6. 清理:

    rm -rf libcrafter_0.0.2_all.deb libcrafter-0.0.2
    
    Run Code Online (Sandbox Code Playgroud)

    (留下新包供以后重用)。