如何临时启用存储库或目标并在不使用 vim/sed/etc 的情况下轻松禁用它?

如何临时启用存储库或目标并在不使用 vim/sed/etc 的情况下轻松禁用它?

我希望能够暂时启用它们non-freecontrib但我不想一直保持它们处于启用状态,因为我尝试尽可能多地利用开源软件。

答案1

如果你已经拥有或可以安装software-properties-common它,它会为你提供一个非常棒且简单的命令行工具来执行此操作。如果你使用 PPA(个人软件包存档)在系统上安装了额外的软件,那么你可能已经拥有它,否则你可以运行

sudo apt update
sudo apt install software-properties-common -y # the -y accepts a prompt for you

我在尝试安装 mbrola 及其语音时遇到了这个问题。建议获取这些非免费组件的网站似乎已关闭,因此我寻找替代方案,最终发现它们是为 Debian/Ubuntu 打包的,只是在默认源中不可用。

首先,您可以检查现有源,看看是否已启用 non-free 或 contrib。此命令以递归方式使用“-r”在所有与 sources.list* 匹配的文件中搜索任何内容,其中包括 sources.list.d/ 及其中的所有文件,并打印出每个文件的每一行,前面是文件名。

grep -r '' /etc/apt/sources.list*
# we'll also save this list to a file to easily see which files get updated
grep -r '' /etc/apt/sources.list* > /tmp/apt-lists-before.txt

现在要启用contribnon-free,它们位于不同的行上,因为此工具要求您一次只指定一个。

sudo add-apt-repository non-free
sudo add-apt-repository contrib

然后再次检查您的 sources.list* 文件。

grep -r '' /etc/apt/sources.list*
# we'll also save this list to a file to easily see which files get updated
grep -r '' /etc/apt/sources.list* > /tmp/apt-lists-after.txt
# compare the two lists
diff /tmp/apt-lists-*

如果您对它添加的预期新目标感到满意,您可以运行sudo apt updateapt search mbrola查看以前没有的新包的示例。

sudo apt update
apt search mbrola

现在您可以安装所需的软件,然后禁用non-freecontrib源,这将允许软件工作,但不会自动更新。 如果某个常规软件包的新版本导致非免费软件包出现问题,您可以重复此过程以non-free再次启用存储库,然后查看是否sudo apt update有针对该软件包的更新sudo apt --upgradable

sudo apt install mbrola mbrola-us1 -y # the -y accepts a prompt for you
sudo add-apt-repository --remove contrib
sudo add-apt-repository --remove non-free

另请参阅这个出色的问答,其中描述了仅允许某些非免费软件包更新,同时阻止其余软件包更新。

https://unix.stackexchange.com/a/534340/103652

相关内容