在我的文件夹中/etc/apt/sources.list.d
有以下文件:
google-chrome-repo.列表:
deb [arch=amd64 signed-by=/usr/share/keyrings/google-chrome-keyring.gpg] https://dl.google.com/linux/chrome/deb/ stable main
deb-src [arch=amd64 signed-by=/usr/share/keyrings/google-chrome-keyring.gpg] https://dl.google.com/linux/chrome/deb/ stable main
在文件夹中/usr/share/keyrings
我有一个名为google-chrome-keyring.gpg
如果我安装 google-chrome:
sudo apt-get install google-chrome-stable
令人厌烦的第二个文件的/etc/apt/sources.list.d
名称为google-chrome.list
,其内容为:
### THIS FILE IS AUTOMATICALLY CONFIGURED ###
# You may comment out this entry, but any other modifications may be lost.
deb [arch=amd64] https://dl.google.com/linux/chrome/deb/ stable main
以及/etc/apt/trusted.gpg.d
文件夹中名为google-chrome.gpg
如果我不删除烦人的自动生成的文件/etc/apt/sources.list.d/google-chrome.list
,那么命令:
sudo apt-get purge google-chrome-stable
会出现以下错误:
E: Conflicting values set for option Signed-By regarding source https://dl.google.com/linux/chrome/deb/ stable: /usr/share/keyrings/google-chrome-keyring.gpg !=
E: The list of sources could not be read.
我的目标是能够根据需要多次执行apt-get install
和删除 google-chrome,而不必每次都先删除自动生成的文件。apt-get purge
我怎样才能得到这个?有没有办法apt-get
忽略该文件?
其他主题中提出的解决方案delete that file
实际上并不实用。
我希望能够apt-get
直接使用上面写的内容而不是脚本或替代函数。
如果有类似这样的内容就好了Dpkg::Options::=
:
Of multiple coincident files in "sources.list.d", only consider the oldest one (the one created first).
答案1
我认为您明确要求的是不可能的(仅使用最旧的源文件)。
但是,您可以创建一个在使用/DPkg::Post-Invoke
后运行的命令来删除您不想要的文件。apt
dpkg
创建文件/etc/apt/apt.conf.d/100post-invoke
(您可以随意命名),内容如下:
# This is a list of shell commands to run after invoking dpkg/apt-get #
DPkg::Post-Invoke { "rm -f /etc/apt/sources.list.d/google-chrome.list"; };
现在,运行任何apt install
或apt purge
命令后,该文件/etc/apt/sources.list.d/google-chrome.list
将被删除(如果不存在,则将被忽略)。
当然,您可以向文件中添加任意数量的命令来定制//etc/apt/apt.conf.d/100post-invoke
的行为。apt
dpkg