如何验证存储库是否已添加

如何验证存储库是否已添加

我有两个存储库,我想用脚本来验证它们是否在系统上。如何通过命令行验证存储库是否已添加到系统中,如果没有,则添加它们?

答案1

您可以使用以下命令在终端中查看所有启用的存储库(它将打印以deb或开头的所有存储库行deb-src

find /etc/apt/ -name *.list | xargs cat | grep  ^[[:space:]]*deb

解释:首先在目录中find找到所有带有.list扩展名的文件并输入列表,然后依次将所有这些文件上的所有文本打印到显示设备(即监视器)。然后选择以 开头的行。我使用了额外的步骤来包括以空格字符而不是 开头的行。/etc/aptxargsgrepdebdeb

如果您只想查看包含二进制包而不是源包(deb-src)的存储库,请使用另一个 grep 来排除deb-src类似这样的条目:

find /etc/apt/ -name *.list | xargs cat | grep  ^[[:space:]]*deb | grep -v deb-src

要使用命令行添加存储库,只需使用这种命令:

(我假设你的存储库源代码行是这样的deb http://mydomain.com/ubuntu precise main

echo deb http://mydomain.com/ubuntu precise main | sudo tee -a /etc/apt/sources.list

此命令使用用于tee从标准输入读取和写入标准输出的程序。在这里,它获取回显的 repo 行并将该行放在文件末尾,/etc/apt/sources.list该文件是主存储库源文件。

请注意,如果不使用-a选项,tee整个内容sources.list将被刚刚回显的行替换。

或者,你可以使用自己的文件作为自定义仓库,而无需修改sources.list文件。例如,

echo deb http://mydomain.com/ubuntu precise main | sudo tee -a /etc/apt/sources.list.d/teles.list

它将在/etc/apt/sources.list.d目录中创建一个名称teles.list包含行的文件deb http://mydomain.com/ubuntu precise main

请注意,要将存储库源添加到系统,您的脚本需要以 root 权限运行

答案2

我只会使用grep,如果存储库名称是REPO变量,则执行以下操作:

if ! grep -q "$REPO" /etc/apt/sources.list; then
  # do something if repo is not installed
fi

答案3

我不知道这是否是你需要的,但是输入

software-properties-gtk

在终端或 dash-command 窗口中将打开软件源列表。

使用此命令添加您的 PPA

sudo add-apt-repository ppa:YOUR PPA HERE

希望有帮助

sudo nano /etc/apt/sources.list编辑:如果需要,您可以使用编辑文件。nano是一个终端文本编辑器,您可能必须先执行此操作

sudo apt-get install nano

安装它。

相关内容