安装 libsystemd 标头

安装 libsystemd 标头

我想安装libsystemd标题,但是不能。

输出apt-cache policy systemd

# apt-cache policy systemd
systemd:
  Installed: 229-4ubuntu13
  Candidate: 229-4ubuntu13
  Version table:
 *** 229-4ubuntu13 100
        100 /var/lib/dpkg/status
     229-4ubuntu4 500
        500 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 Packages

以下是输出apt-cache policy libsystemd0

# apt-cache policy libsystemd0
libsystemd0:
  Installed: 229-4ubuntu13
  Candidate: 229-4ubuntu13
  Version table:
 *** 229-4ubuntu13 100
        100 /var/lib/dpkg/status
     229-4ubuntu4 500
        500 http://us.archive.ubuntu.com/ubuntu xenial/main amd64 Packages

以下是我这样做时发生的情况apt-get install libsystemd-dev

# apt-get install libsystemd0 libsystemd-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libsystemd0 is already the newest version (229-4ubuntu13).
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 libsystemd-dev : Depends: libsystemd0 (= 229-4ubuntu4) but 229-4ubuntu13 is to be installed
E: Unable to correct problems, you have held broken packages.

输出grep "^deb " /etc/apt/sources.list

# grep "^deb " /etc/apt/sources.list
deb http://us.archive.ubuntu.com/ubuntu/ xenial main restricted
deb http://us.archive.ubuntu.com/ubuntu/ xenial universe
deb http://us.archive.ubuntu.com/ubuntu/ xenial multiverse
deb http://archive.canonical.com/ubuntu xenial partner
deb http://download.virtualbox.org/virtualbox/debian xenial contrib

答案1

您的源文件不完整,请从中获取备份:

sudo cp /etc/apt/sources.list{,.my-bk}

然后使用 nano 打开它:

sudo nano /etc/apt/sources.list

添加以下几行:

deb http://archive.ubuntu.com/ubuntu/ xenial main universe multiverse
deb http://archive.ubuntu.com/ubuntu/ xenial-updates main universe multiverse
deb http://security.ubuntu.com/ubuntu xenial-security main universe multiverse
deb http://download.virtualbox.org/virtualbox/debian xenial contrib

然后运行:

sudo apt update

然后尝试安装您想要的包。

如果仍然有问题,请首先尝试升级您的系统:

sudo apt dist-upgrade

或者修复依赖关系(如果有):

sudo apt install -f

答案2

我不知道您是如何使用这些软件包源获得 systemd 库的 229-4ubuntu13 版本的。Xenial“发布”中唯一的版本是 229-4ubuntu4。“安全”(229-4ubuntu10) 和“更新”(229-4ubuntu17) 中也有较新的版本,但它们也与您的版本不匹配。

您可以回滚到“发布”存储库中的软件包,或者启用“更新”存储库并升级系统上的软件包。

回滚

  • 如果您知道系统上安装的所有 systemd 软件包,则可以使用以下命令:

    sudo apt-get install {<PACKAGE>,<PACKAGE>,...}=229-4ubuntu4
    
  • 如果您不知道它们,您可以使用以下命令来解析软件包描述和已安装软件包的列表,以便为您选择和安装它们:

    apt-cache showsrc systemd |
    sed -nre '/^Package-List:/,/^\S/{s/^ (\S+) .*$/\1/p;}' | sort -u |
    xargs dpkg-query -Wf '${Status;1} ${Package}\n' 2>&- |
    sed -nre 's/^i (\S+)$/\1=229-4ubuntu4/p' |
    xargs sudo apt install
    

升级

  1. 启用“更新”存储库。

    打开软件特性,导航至更新选项卡并启用复选框推荐更新

    软件属性截图

  2. 更新软件包列表并执行系统升级:

    sudo apt update && sudo apt full-upgrade
    

答案3

对我来说,我使用 手动在 apt 缓存中搜索 libsystemd,sudo apt search libsystemd它返回 libsystemd-dev(即 libsystemd 开发文件)、libsystemd0(即 systemd 的实用程序库)和 lua-systemd(即 lua 的系统绑定)。然后我使用 安装了它们sudo apt install libsystemd0 libsystemd-dev。我没有包括 lua-systemd,因为我不太明白为什么或者我是否需要它。之后,当我运行时,我没有得到与我得到的相同的错误(“无法找到 libsystemd 和 libsystemd-dev 的匹配发行版”)pip3 install -r requirements.txt 希望这对某人有所帮助。

相关内容