克服aptitude​ppa-purge

克服aptitude​ppa-purge

为了从 10.04 顺利升级到 10.10,我想删除所有不在默认存储库中的软件包(例如 Chromium PPA 和第三方存储库)。查找和删除这些软件包的最简单方法是什么(最好是 CLI)?

编辑:这个问题不仅限于 PPA,我还有一个 x2go 存储库,所以我正在寻找一个通用命令来删除属于某个存储库的软件包。对于 PPA,问题如何删除 PPA有很好的答案。

答案1

查看ppa 清除安装 ppa-purge

用法:

ppa-purge -purge <nameofppa> [-s hostserver]

主机服务器默认为ppa.launchpad.net

以下是命令手册ppa-purge手册页图标以供参考。

答案2

克服aptitudeppa-purge

通常情况下,瓦迪姆·鲁特科夫斯基塔卡特解释, 跑步ppa-purge使用默认语法是删除 PPA 提供的所有软件包的有效方法,并尽可能将它们正确降级为其他配置软件源中提供的版本。

然而,正如 Takkat 所指出的,错误 831768无法ppa-purge正常工作以删除多架构软件包(例如安装在 64 位系统上的 32 位软件包)。这是因为aptitude无法处理多架构软件包中的冲突依赖关系(这就是错误的原因),并且的默认行为ppa-purge是使用aptitude降级软件包。

幸运的是,ppa-purge接受该-i标志使其更喜欢apt-get作为aptitude其后端。正如错误报告中所记录的,使用apt-get是手动调用的有效替代方法aptitude,因此ppa-purge使用-i标志运行应该是删除/降级 PPA 提供的所有软件包(包括多架构软件包)的有效解决方法

怎么做

语法如下:

sudo ppa-purge -i ppa:ppaowner/ppaname

-i与往常一样(与不使用该标志时相同):

  • ppaowner被 PPA 的所有者取代。
  • /ppaname是可选的。如果存在,ppaname替换为 PPA 的名称。如果没有,则默认为ppa

例如,假设我有适用于 qBittorrent 不稳定版本的 PPA安装后,我想彻底删除它,然后自动将 qBittorrent 降级到其他软件源中可用的版本使用apt-get幕后而不是aptitude.然后我会运行:

sudo ppa-purge -i ppa:hydr0g3n/qbittorrent-unstable

记录在哪里

由于某种原因,一些有用的选项ppa-purge没有记录在它的手册页,包括-i。但您可以通过运行ppa-purge -h(或ppa-purge不带任何参数)获取有关它们的信息:

ek@Del:~$ ppa-purge -h
Usage: sudo ppa-purge [options] <ppa:ppaowner>[/ppaname]

ppa-purge will reset all packages from a PPA to the standard
versions released for your distribution.

Options:
    -p [ppaname]        PPA name to be disabled (default: ppa)
    -s [host]       Repository server (default: ppa.launchpad.net)
    -d [distribution]   Override the default distribution choice.
    -y          Pass -y --force-yes to apt-get or -y to aptitude
    -i          Reverse preference of apt-get upon aptitude.
    -h          Display this help text

Example usage commands:
    sudo ppa-purge xorg-edgers
    will remove https://launchpad.net/~xorg-edgers/+archive/ppa

    sudo ppa-purge -p xorg-testing sarvatt
    will remove https://launchpad.net/~sarvatt/+archive/xorg-testing

    sudo ppa-purge ppa:ubuntu-x-swat/x-updates
    will remove https://launchpad.net/~ubuntu-x-swat/+archive/x-updates

Notice: If ppa-purge fails for some reason and you wish to try again,
(For example: you left synaptic open while attempting to run it) simply
uncomment the PPA from your sources, run apt-get update and try again.

“apt-get 相对于 aptitude 的反向偏好”有点神秘。通过查看相关源代码ppa-purge毕竟只是一个 shell 脚本),我们可以看到,这意味着默认行为是优先选择aptitudeapt-get而该-i标志会反转这种偏好。

答案3

该脚本可以列出来自特定服务器/分支的所有包(修改两个声明的变量):

#!/bin/bash

server="http://it.archive.ubuntu.com/ubuntu/"
branch="maverick-updates/main"

apt-cache policy $(dpkg -l | awk 'NR >= 6 { print $2 }') |
  awk -v server="$server" -v branch="$branch" \
    '/^[^ ]/      { split($1, a, ":"); pkg = a[1] }
    nextline == 1 { nextline = 0; if ($2 == server && $3 == branch) print pkg }
    /\*\*\*/      { nextline = 1 }'

如果您需要列出所有不是来自特定服务器的软件包,独立于分支,请将倒数第二行替换为:

nextline == 1 { nextline = 0; if ($2 != server) print pkg }

答案4

以下是使用 GUI 的方法。希望这对不喜欢 CLI 的人有所帮助。步骤简单易懂。

  1. 打开突触包管理器。如果没有安装,则通过以下方式安装:

    sudo apt-get install synaptic
    
  2. 打开后点击起源左下方的按钮。它会在左上角列出所有存储库。选择要删除软件包的特定存储库。它会列出该存储库下的所有软件包。单击第一个字段,即年代或者安装版本字段首先显示已安装的包。

  3. 现在选择所有要删除的包。

    标记为删除的提示:

    1. 选择第一个包,然后按住Shift键并再次选择最后一个包以全选。然后右键单击正方形框并选择标记为删除或者标记为彻底删除

    2. 或选择任意包并按Ctrl+A以选择全部。然后右键单击正方形框并选择标记为删除或者标记为彻底删除。

就是这样。它会毫无问题地被移除。我还附上了图片以使其更清晰。希望这会有所帮助。:)

图像

相关内容