Jak używać zyppera w skryptach bash dla kogoś pochodzącego z apt-get?

12

Mam kilka pytań na temat przejścia z apt-get na zypper w skryptach bash.

Co to jest równoważne?

sudo apt-get install curl --assume-yes

(gdzie curl może być dowolnym pakietem)

Znalazłem Zypper Cheat Sheet - openSUSE . Bardzo dobrze! Ale doceniłbym tutaj głos doświadczenia - jaki jest właściwy sposób użycia zyppera w skrypcie, w którym chcę automatycznie zgadzać się na wszystkie monity i nie pomijać rzeczy wymagających odpowiedzi?

Z moim niedoświadczeniem skusiłbym się użyć:

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

Ale czy to naprawdę ekwiwalent --assume-yes?

Co z ich odpowiednikiem?

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

To sugeruje, że nie ma ...

Czy istnieje zamiennik gdebi-core? Czy też gdebi nigdy nie jest potrzebny z „potężnym narzędziem do rozwiązywania problemów zypper”? Używam gdebi w sytuacjach, w których muszę zainstalować pakiet na starszej wersji i mam już plik .deb (ale nie wszystkie zależności).

MountainX
źródło

Odpowiedzi:

10

Ogólnie rzecz biorąc, powinieneś używać --non-interactivetrybu, w skrócie -n, gdy zypper działa nieinteraktywnie:

zypper -n install curl

To może wydawać się mylące dla kogoś pochodzącego apt-get install -y curl. Niektóre pod-komendy zypper obsługują również opcję -y/ specyficzną dla komendy --no-confirmjako alias dla -n/ --non-interactive, ale nie wszystkie z nich wykonują. Ponieważ installpolecenie to implementuje, polecenie to jest równoważne z powyższym:

zypper install -y curl

Zauważ, że -ymusi nastąpić później install , podczas gdy -nopcja globalna pojawia się przed podkomendą ( zypper install -noznacza coś innego; przeczytaj stronę podręcznika).

[Edytuj] Poniższa sekcja nie jest już dokładna, ale została zachowana do celów historycznych. Obecny zypper obsługuje --gpg-auto-import-keysopcję automatycznego importowania i ufania kluczom gpg skojarzonym z nowym repozytorium.


Zgodnie z dokumentacją nie ma sposobu, aby zaakceptować klucz GPG bez trybu interaktywnego:

nowego klucza można zaufać lub zaimportować tylko w trybie interaktywnym

Nawet z --no-gpgp-checkskluczem GPG zostanie odrzucony.

Obejściem dla skryptów jest użycie potoku i echo:

zypper addrepo http://repo.example.org my_name | echo 'a'
Tombart
źródło
1
Poważnie? Istnieje  -nopcja i  -yopcja, które oznaczają to samo, ale muszą być umieszczone w różnych pozycjach w linii poleceń? Tak, to mylące. (Żeby było jasne: nie strzelam do posłańca; mówię, że deweloper powinien był więcej pomyśleć o problemach z użytecznością.)
G-Man mówi „Przywróć Monikę”
@ G-Man - cóż, w pewnym sensie. :) zypperma -nopcję. Polecenie installsub ma zarówno -yopcję, która jest wygodą aliasu do -nopcji globalnej , jak i swoją własną, -nktórej jest skrótem --name. Możliwe jest instalowanie pakietów według możliwości. zypper install -n blahOkreśla więc, aby rozstrzygać tylko pakiet o nazwie blahi nie brać pod uwagę pakietów, które go udostępniają blah . Bez tego program zypper może rozstrzygać na podstawie sekcji dostarczania z RPM (w tym porównań wersji), co może ułatwić rozwiązywanie zależności. zypper install 'python>3.5'na przykład.
dannysauer
Głównym zastosowaniem zypper install -njest, jeśli chcesz zainstalować konkretny pakiet, którego nazwa jest funkcją udostępnianą przez innych. Na przykład, być może istnieje kilka implementacji vi, a chcesz tylko określony pakiet o nazwie vi bez rozdzielczości wracający do gvim (który zapewnia vi) w przypadku, gdy viz jakiegoś powodu brakuje określonego pakietu w repozytorium. Osobiście nie podoba mi się myląca natura krótkich opcji i rzadko używam ich w skryptach lub cokolwiek innego, co ktoś (jak ja) może przeczytać później. : D
dannysauer
8

Masz opcję --nieinteraktywną. Ze strony podręcznika:

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'.

Nie ma prawdziwej korespondencji z autorove apt-get. Najbliższa jest --clean-depsopcja removepolecenia, która natychmiast usuwa zależności (ale nie później).

mata
źródło
czy można dodać taką opcję w zypper.confcelu stałego potwierdzenia, jak w innych menedżerach pakietów?
Nie wiem Od jakiegoś czasu nie używałem suse, więc nie mogę tego sprawdzić.
mat
wydaje się to niemożliwe dla zyppera w przeciwieństwie do pacmana, apta i yum /
3

To jest próbka

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

Oczywiście możesz podać więcej opcji, --auto-agree-with-licensesale pamiętaj, że to robi różnicę, jeśli jest to przed, czy poinstall

Marcelo Atie
źródło
2

To zadziałało dla mnie (sprawdzone na SLES12SP3):

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

Uwaga -C/--no-checkdla zypper ar.

Teraz możesz zainstalować pakiety:

zypper in -y --auto-agree-with-licenses vim
amaslenn
źródło