apt-getから来た人のbashスクリプトでzypperを使用する方法は?


12

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の代替品はありますか?あるいは、gypbiの「強力な充足可能性ソルバー」では、gdebiは必要ありませんか?古いバージョンにパッケージをインストールする必要があり、すでに.debファイルを持っている(ただし、すべての依存関係ではない)場合は、gdebiを使用します。

回答:


10

一般に、zypperを非対話的に実行するとき--non-interactiveは、ショートカット-nでモードを使用する必要があります。

zypper -n install curl

これは、から来た人を混乱させるかもしれませんapt-get install -y curl。一部のzypperサブコマンドは/のエイリアスとしてコマンド固有の-y/ --no-confirmオプションもサポートしますが、すべてのサブコマンドがサポートするわけではありません。コマンドがそれを実装しています、このコマンドは、上記と同等です。-n--non-interactiveinstall

zypper install -y curl

グローバルオプションはサブコマンドのに来るのに対し、はの-y来る必要があることに注意してください(別の意味です。そのためのマニュアルページをお読みください)。 install-nzypper install -n

[編集]以下のセクションは正確ではなくなりましたが、履歴参照のために残されています。現在のzypperは、--gpg-auto-import-keys新しいリポジトリに関連付けられたgpgキーを自動的にインポートして信頼するオプションをサポートしています。


ドキュメントよると、対話モードなしでGPGキーを受け入れる方法はありません:

新しいキーは、対話モードでのみ信頼またはインポートできます

でも、と--no-gpgp-checksGPGキーが拒否されます。

スクリプトの回避策はパイプとを使用することechoです:

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

1
マジ?あります  -nオプションと  -yオプションが、彼らは同じことを意味しますが、それらは、コマンドラインの異なる位置に配置する必要がありますか?はい、混乱します。(明確にするために、私はメッセンジャーを撮影していません。開発者はユーザビリティの問題についてもっと考えるべきだったと言っています。)
G-Manは 'Reinstate Monica'を

@ G-Man-そうですね。:) オプションzypperがあり-nます。installサブコマンドは両方持っている-y世界的にエイリアスという便利ですオプション-nオプションは、また、独自のを持っている-nため、短いであるが--name。機能別にパッケージをインストールすることが可能です。したがって、zypper install -n blah指定されたパッケージのみを解決し、blah提供する パッケージを考慮しないことを指定しますblah。それがなければ、zypperはRPMの提供セクション(バージョン比較を含む)に基づいて解決できるため、依存関係の解決が容易になります。zypper install 'python>3.5'例えば。
dannysauer

の主な用途zypper install -nは、名前が他の人から提供された機能である特定のパッケージをインストールする場合です。たとえば、いくつかのvi実装があり、特定のviパッケージが何らかの理由でリポジトリに存在しない場合、解決策をgvim(viを提供)にフォールバックせずに、viという名前の特定のパッケージのみが必要な場合があります。個人的に、私は短いオプションの混乱する性質を嫌い、スクリプトや他の誰か(私のような)が後で読む必要があるかもしれない何かでそれらを使用することはめったにありません。:D
dannysauer

8

--non-interactiveオプションがあります。manページから:

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のautoremoveに実際の対応はありません。最も近いのは、コマンドの--clean-depsオプションですremove。これは、依存関係をすぐに(ただし、後でではなく)クリーンアップします。


zypper.conf他のパッケージマネージャーと同様に、永続的な確認のためにそのようなオプションを追加することは可能ですか?

知りません。しばらくsuseを使っていないので確認できません。
マット


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


2

これは私のために働きました(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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.