我希望能够暂时启用它们non-free
,contrib
但我不想一直保持它们处于启用状态,因为我尝试尽可能多地利用开源软件。
答案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
现在要启用contrib
或non-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 update
并apt search mbrola
查看以前没有的新包的示例。
sudo apt update
apt search mbrola
现在您可以安装所需的软件,然后禁用non-free
或contrib
源,这将允许软件工作,但不会自动更新。 如果某个常规软件包的新版本导致非免费软件包出现问题,您可以重复此过程以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
另请参阅这个出色的问答,其中描述了仅允许某些非免费软件包更新,同时阻止其余软件包更新。