我想安装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
升级
答案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
希望这对某人有所帮助。