我有一些关于在 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-checks
GPG密钥也会被拒绝。
脚本的解决方法是使用管道和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-check
zypper ar
现在您可以安装软件包:
zypper in -y --auto-agree-with-licenses vim