我有两个存储库,我想用脚本来验证它们是否在系统上。如何通过命令行验证存储库是否已添加到系统中,如果没有,则添加它们?
答案1
您可以使用以下命令在终端中查看所有启用的存储库(它将打印以deb
或开头的所有存储库行deb-src
)
find /etc/apt/ -name *.list | xargs cat | grep ^[[:space:]]*deb
解释:首先在目录中find
找到所有带有.list
扩展名的文件并输入列表,然后依次将所有这些文件上的所有文本打印到显示设备(即监视器)。然后选择以 开头的行。我使用了额外的步骤来包括以空格字符而不是 开头的行。/etc/apt
xargs
grep
deb
deb
如果您只想查看包含二进制包而不是源包(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
安装它。