Mou*_*inX 14 bash opensuse apt package-management zypper
我有一些关于在 bash 脚本中从 apt-get 移动到 zypper 的问题。
这相当于什么?
sudo apt-get install curl --assume-yes
Run Code Online (Sandbox Code Playgroud)
(其中 curl 可以是任何包)
我找到了Zypper Cheat Sheet - openSUSE。非常好!但我很感激这里的经验之声——在我想自动同意所有提示而不跳过需要响应的事情的脚本中使用 zypper 的正确方法是什么?
由于我的经验不足,我很想使用:
sudo zypper --non-interactive --no-gpg-checks --quiet install --auto-agree-with-licenses curl
Run Code Online (Sandbox Code Playgroud)
但这真的等同于--assume-yes
吗?
这些等价物呢?
sudo apt-get autoremove -y
sudo apt-get autoclean -y
Run Code Online (Sandbox Code Playgroud)
这表明没有一个...
gdebi-core 有替代品吗?或者 zypper 的“强大的可满足性求解器”永远不需要 gdebi?我将 gdebi 用于需要在旧版本上安装软件包并且我已经有一个 .deb 文件(但不是所有依赖项)的情况。
Tom*_*art 13
通常,当以非交互--non-interactive
方式-n
运行 zypper 时,您应该使用mode, in shortcut :
zypper -n install curl
Run Code Online (Sandbox Code Playgroud)
对于来自apt-get install -y curl
. 一些zypper的子命令还支持命令特有-y
/--no-confirm
选项为的别名-n
/ --non-interactive
,但不是所有的子命令执行。由于该install
命令确实实现了这一点,因此该命令等效于上述命令:
zypper install -y curl
Run Code Online (Sandbox Code Playgroud)
请注意,-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'
Run Code Online (Sandbox Code Playgroud)
您有 --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'.
Run Code Online (Sandbox Code Playgroud)
apt-get 的自动删除没有真正的对应。最接近的是命令的--clean-deps
选项remove
,它立即清除依赖项(但不是之后)。