为了从 10.04 顺利升级到 10.10,我想删除所有不在默认存储库中的软件包(例如 Chromium PPA 和第三方存储库)。查找和删除这些软件包的最简单方法是什么(最好是 CLI)?
编辑:这个问题不仅限于 PPA,我还有一个 x2go 存储库,所以我正在寻找一个通用命令来删除属于某个存储库的软件包。对于 PPA,问题如何删除 PPA有很好的答案。
答案1
查看ppa 清除。
用法:
ppa-purge -purge <nameofppa> [-s hostserver]
主机服务器默认为ppa.launchpad.net
。
以下是命令手册ppa-purge
页以供参考。
答案2
克服aptitude
ppa-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 脚本),我们可以看到,这意味着默认行为是优先选择aptitude
,apt-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 的人有所帮助。步骤简单易懂。
打开突触包管理器。如果没有安装,则通过以下方式安装:
sudo apt-get install synaptic
打开后点击起源左下方的按钮。它会在左上角列出所有存储库。选择要删除软件包的特定存储库。它会列出该存储库下的所有软件包。单击第一个字段,即年代或者安装版本字段首先显示已安装的包。
现在选择所有要删除的包。
标记为删除的提示:
选择第一个包,然后按住Shift键并再次选择最后一个包以全选。然后右键单击正方形框并选择标记为删除或者标记为彻底删除。
或选择任意包并按Ctrl+A以选择全部。然后右键单击正方形框并选择标记为删除或者标记为彻底删除。
就是这样。它会毫无问题地被移除。我还附上了图片以使其更清晰。希望这会有所帮助。:)