通过终端一次安装多个ppas而不使用脚本

Par*_*rto 9 bash ppa

我想将这四个 ppa 添加到我的机器中。

sudo add-apt-repository ppa:noobslab/malys-themes
sudo add-apt-repository ppa:alecive/antigone
sudo add-apt-repository ppa:nitrux/nitrux-artwork
sudo add-apt-repository ppa:upubuntu-com/themes
Run Code Online (Sandbox Code Playgroud)

与其一次一个添加它们,我想我会一个接一个地列出它们——就像我们在安装应用程序时所做的那样。

sudo add-apt-repository ppa:noobslab/malys-themes ppa:alecive/antigone ppa:nitrux/nitrux-artwork ppa:upubuntu-com/themes
Run Code Online (Sandbox Code Playgroud)

但它返回了一个错误: Error: need a repository as argument

我四处搜索,看到这个问题如何一次安装多个 PPA 和应用程序?但它提出了一个 bash 脚本作为解决方案。

有没有办法在不使用脚本的情况下一次添加多个 ppa?


编辑
只是好奇,为什么不

sudo add-apt-repository ppa:noobslab/malys-themes ppa:alecive/antigone ppa:nitrux/nitrux-artwork ppa:upubuntu-com/themes
Run Code Online (Sandbox Code Playgroud)

工作但是

sudo apt-get install moka-icon-theme moka-icon-theme-blue moka-icon-theme-dark malys-deda awoken-icon-theme nitrux-icon-theme nouvegnomegray
Run Code Online (Sandbox Code Playgroud)

作品?

编辑 2
是否有任何解决方法

sudo add-apt-repository ppa:noobslab/malys-themes ppa:alecive/antigone ppa:nitrux/nitrux-artwork ppa:upubuntu-com/themes
Run Code Online (Sandbox Code Playgroud)

可以工作吗?
我完全理解这里的风险。

Rma*_*ano 11

它不起作用,因为谁编写了原始脚本(您可以查看它,它是一个 python 脚本)认为这没有用。

理由可能是添加存储库是一件最好慢慢完成的事情。例如,您应该检查签名 --- 并仔细检查您是否真的想要它。

所以这基本上是一个设计决定。如果需要,您可能可以轻松修改脚本,或者在命令行上重复该命令...

for i in ppa:noobslab/malys-themes ppa:alecive/antigone ppa:nitrux/nitrux-artwork ppa:upubuntu-com/themes; do sudo add-apt-repository $i; done
Run Code Online (Sandbox Code Playgroud)

(那是不是剧本?玫瑰是另一个名字的玫瑰吗?)

不要这样做,但是...... unix 以让用户用脚射击自己而闻名,所以......

如果您真的希望您的“多个 add-apt-repository”(1) 工作,请执行以下操作:

1) 找到 add-apt-repository 的位置。

(0)samsung-romano:~% which add-apt-repository
/usr/bin/apt-add-repository
Run Code Online (Sandbox Code Playgroud)

2)重命名

(0)samsung-romano:~% sudo mv /usr/bin/add-apt-repository /usr/bin/add-apt-repository.real
Run Code Online (Sandbox Code Playgroud)

3)用一个简单的脚本替换它:

(0)samsung-romano:~% sudo gedit /usr/bin/add-apt-repository 
Run Code Online (Sandbox Code Playgroud)

内容:

#! /bin/bash
# 
for i in "$@"; do
   /usr/bin/add-apt-repository.real "$i"
done
Run Code Online (Sandbox Code Playgroud)

4)使其可执行:

(0)samsung-romano:~% chmod a+rx /usr/bin/add-apt-repository
Run Code Online (Sandbox Code Playgroud)

5) 现在你可以使用你的命令了:

(0)samsung-romano:~% sudo add-apt-repository ppa:noobslab/malys-themes ppa:alecive/antigone ppa:nitrux/nitrux-artwork ppa:upubuntu-com/themes
Run Code Online (Sandbox Code Playgroud)

为什么你不应该这样做?因为下次对包含原始 的包进行更新时apt-add-repository,就会出现问题。就像你的脚本被覆盖或(最糟糕的)没有更新包。

实际上,避免接触系统程序并简单地将脚本~/bin以另一个名称放入您的脚本中会好得多,例如my_aptadd. 你现在是安全和快乐的。

或者,如果您真的很喜欢原始名称,则可以在您的主文件夹中创建一个目录,例如~/override,将其添加到您的 PATH 中.profile(例如export PATH=$HOME/override:$PATH),然后将脚本保存在那里 --- 显然带有完整路径,其中的原始路径/usr/bin/add-apt-repository 为避免无限循环。当有人将一个名为“ls”的文件放入其中并包含内容exe rm $*(2) 时,您会后悔的,但是嘿...

那我为什么写在这里呢?因为有时这确实是一种有用的技术,可以“修复”否则将无法运行的程序。例如,我有这个来向程序添加环境变量,否则这些程序会行为不端,并且被我不能或不会修改的其他程序调用。


脚注

(1) 我以前从未注意到,但在我的系统中甚至存在apt-add-repository,它是add-apt-repository. 我能理解为什么,但这是一个等待发生的混乱的呼吁......

(2) 错了。故意。