如何为来自 apt-get 的人在 bash 脚本中使用 zypper?

如何为来自 apt-get 的人在 bash 脚本中使用 zypper?

我有一些关于在 bash 脚本中从 apt-get 迁移到 zypper 的问题。

这相当于什么?

sudo apt-get install curl --assume-yes

(其中curl可以是任何包)

我找到了Zypper 备忘单 - openSUSE。很不错!但我很欣赏这里的经验之声——在我想自动同意所有提示而不跳过需要响应的内容的脚本中使用 zypper 的正确方法是什么?

由于我缺乏经验,我很想使用:

sudo zypper --non-interactive --no-gpg-checks --quiet install --auto-agree-with-licenses curl

但这真的相当于吗--assume-yes

这些的等价物又如何呢?

sudo apt-get autoremove -y
sudo apt-get autoclean -y

表明没有一个...

gdebi-core 有替代品吗?或者 zypper 的“强大的可满足性求解器”不需要 gdebi 吗?我在需要在旧版本上安装软件包并且已经有 .deb 文件(但不是所有依赖项)的情况下使用 gdebi。

答案1

一般来说,当以非交互方式运行 zypper 时,您应该--non-interactive在快捷方式中使用模式:-n

zypper -n install curl

对于来自 的人来说,这可能会让人感到困惑apt-get install -y curl。某些 zypper 子命令还支持命令特定的-y/--no-confirm选项作为-n/ 的别名--non-interactive,但并非所有子命令都支持。由于该install命令确实实现了这一点,因此该命令相当于上面的命令:

zypper install -y curl

注意一定-y要来 install,而全局-n选项来了子命令(zypper install -n意味着不同的东西;请阅读手册页)。

[编辑]以下部分不再准确,但保留以供历史参考。当前 zypper 支持--gpg-auto-import-keys自动导入和信任与新存储库关联的 gpg 密钥的选项。


根据文件如果没有交互模式,就无法接受 GPG 密钥:

新密钥只能在交互模式下信任或导入

即使有--no-gpgp-checksGPG密钥也会被拒绝。

脚本的解决方法是使用管道和echo

zypper addrepo http://repo.example.org my_name | echo 'a'

答案2

您有 --non-interactive 选项。从手册页:

Switches  to  non-interactive  mode. 
In this mode zypper doesn't ask user to type answers to various prompts, but uses default answers automatically. 
The  behaviour of this option is somewhat different than that of options like '--yes', since zypper can answer different answers to different questions. 
The answers  also  depend on other options like '--no-gpg-checks'.

与 apt-get 的自动删除没有真正的对应关系。最接近的是命令--clean-deps的选项remove,它立即清除依赖项(但不是之后)。

答案3

这是一个样本

zypper --non-interactive --quiet addrepo --refresh -p 90 http://packman.inode.at/suse/openSUSE_Leap_15.0/ 'packman'
zypper --gpg-auto-import-keys refresh
zypper --non-interactive dist-upgrade --allow-vendor-change --from packman
zypper --non-interactive install vlc vlc-codecs

当然,您可以包含更多选项,例如--auto-agree-with-licenses但请记住,如果在之前或之后,这会有所不同install

答案4

这对我有用(在 SLES12SP3 上检查过):

zypper --non-interactive --quiet ar -C http://myrepo myrepo
zypper --gpg-auto-import-keys ref

注意.-C/--no-checkzypper ar

现在您可以安装软件包:

zypper in -y --auto-agree-with-licenses vim

相关内容