我确信我已经在 wsl 上正确安装了 ROS(发行版是 melodic),并且我知道我已经按照每个步骤正确下载了完整软件包,但使用命令行 roslaunch 或任何与 roslaunch 相关的东西只会让我回到这个消息
Command 'roslaunch' not found, but can be installed with:
sudo apt install python-roslaunch
如果我进入命令行
sudo apt install python-roslaunch
这会引导我
Reading package lists... Done
Building dependency tree
Reading state information... Done
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:
python-roslaunch : Depends: python-roslib but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
安装 python-roslib 会导致另一个与上述类似的错误。我什么都试过了。从重新安装所有内容到触碰 rootf 目录中找到的文件,但到目前为止都不起作用。任何至少能帮助我找出问题所在的东西都会很感激。
答案1
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get update --fix-missing
$ sudo apt-get autoclean
$ apt-get clear cache
答案2
这些是一些快速简便的修复you have held broken packages
错误的方法。
打开 sources.list 文件
/etc/apt/sources.list
,检查是否存在与您当前使用的 Ubuntu 版本不同的 Ubuntu 版本的软件源。如果您在 sources.list 中发现任何不正确的版本行,请使用 打开 sources.list 文件,sudoedit /etc/apt/sources.list
在 sources.list 中用一个字符注释掉不正确的行#
,保存 sources.list 文件,然后运行sudo apt update
以更新可用软件包列表。选择修复损坏的软件包Synaptic 包管理器中的选项。运行以下命令安装 Synaptic。
sudo apt update sudo apt upgrade sudo apt install synaptic
打开 Synaptic 并在 Synaptic 中选择编辑->修复损坏的软件包然后重复编辑->修复损坏的软件包第二次。
在 Synaptic 的左侧窗格中单击自定义过滤器按钮,如下图所示,鼠标光标标记。从左上角的列表中选择破碎的。中心窗格将列出任何仍需修复的损坏包。
Select the broken packages one at a time. Select a broken package, and then open the terminal and run <code>apt policy <b><package-name></b></code>. The results of this command will tell you if that broken package was installed from the default Ubuntu repositories or from some other source. If the broken package was installed from some other source, maybe that package can be removed along with its software source and replaced by a different version of the same package from the default Ubuntu repositories. Usually this means fixing a broken package by downgrading that package to an older version.
如果您收到此错误消息:
Try 'apt-get -f install' with no packages (or specify a solution)
运行以下命令:
sudo apt update sudo apt upgrade sudo apt-get -f install
手动移除破损的包装。
查找您的包裹
/var/lib/dpkg/info
ls -l /var/lib/dpkg/info | grep <package>
将包文件夹移动到另一个位置。
cd /tmp && sudo mkdir new-package-location sudo mv /var/lib/dpkg/info/<package>.* /tmp/new-package-location/
运行以下命令:
sudo dpkg --remove --force-remove-reinstreq <package>
如果所有这些方法都不起作用,则损坏的软件包可能是由操作系统中嵌入太深的东西引起的,这些方法都无法对其产生任何影响。寻找这种深深嵌入的“东西”的第一个明显的地方是 中的软件源/etc/apt/sources.list
。检查 sources.list 文件以查看它是否包含可能导致损坏软件包错误的任何非标准行。标准的 Ubuntu sources.list 文件看起来像 sources.list 文件这个答案。
删除 sources.list 中可疑行的正确方法是将其前面加上一个字符,将其注释掉#
。然后运行sudo apt update
以刷新可用软件列表。