วิธีการใช้ zypper ในสคริปต์ทุบตีสำหรับคนที่มาจาก apt-get?


12

ฉันมีคำถามสองสามข้อเกี่ยวกับการย้ายจาก apt-get ถึง zypper ใน bash script

สิ่งนี้เทียบเท่ากับอะไร?

sudo apt-get install curl --assume-yes

(ในกรณีที่ขดอาจเป็นแพคเกจใด ๆ )

ผมพบว่าแผ่น 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 หรือไม่? หรือไม่จำเป็นต้องใช้ gdebi กับ "ตัวแก้ไขความพึงพอใจอันทรงพลัง" ของ zypper? ฉันใช้ gdebi สำหรับสถานการณ์ที่ฉันจำเป็นต้องติดตั้งแพคเกจในเวอร์ชั่นที่เก่ากว่าและฉันมีไฟล์. deb อยู่แล้ว (แต่ไม่ได้ขึ้นอยู่กับการพึ่งพาทั้งหมด)

คำตอบ:


10

โดยทั่วไปคุณควรใช้--non-interactiveโหมดทางลัด-nเมื่อใช้ zypper แบบไม่โต้ตอบ:

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'

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แพ็คเกจเฉพาะนั้นมีสาเหตุบางอย่างที่ขาดหายไปใน repo ของคุณ โดยส่วนตัวแล้วฉันไม่ชอบลักษณะที่สับสนของตัวเลือกสั้น ๆ และไม่ค่อยใช้ในสคริปต์หรือสิ่งอื่นที่บางคน (เช่นฉัน) อาจต้องอ่านในภายหลัง : D
dannysauer

8

คุณมีตัวเลือก - ไม่โต้ตอบ จากหน้าคน:

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คำสั่งซึ่งจะล้างการพึ่งพาได้ทันที (แต่ไม่ใช่หลังจากนั้น)


เป็นไปได้ที่จะเพิ่มตัวเลือกดังกล่าวในzypper.confการยืนยันอย่างถาวรเช่นเดียวกับผู้จัดการแพคเกจอื่น ๆ ?

ฉันไม่รู้ ฉันไม่ได้ใช้งาน suse ซักพักแล้วดังนั้นฉันไม่สามารถตรวจสอบได้
mat

ดูเหมือนว่าเป็นไปไม่ได้สำหรับ zypper ซึ่งแตกต่างจาก pacman, apt, และ yum /

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.