เชลล์สคริปต์เพื่อเพิ่มพื้นที่เก็บข้อมูล apt แบบมีเงื่อนไข


8

ฉันต้องการเขียนเชลล์สคริปต์ที่จะเพิ่มที่เก็บ apt ฉันรู้ว่าฉันสามารถทำได้โดยใช้
sudo add-apt-repository -y <repo>

คำถามของฉันคือฉันสามารถทำได้ก็ต่อเมื่อพื้นที่เก็บข้อมูลไม่ได้ถูกเพิ่มไปแล้วสิ่งที่ชอบ:

if repo was not added yet:
  sudo add-apt-repository -y <repo>
  sudo apt-get update

ขอบคุณ


add-apt-repositoryจะเพิ่มเพียงครั้งเดียว ส่วนที่น่าสนใจคือทำตามapt-get updateเงื่อนไข
Beni Cherniavsky-Paskin

คุณเคยลองเพิ่มที่เก็บสองครั้งหรือไม่? สิ่งที่ฉันทำไปแล้วตอนนี้มีadd-apt-repositoryไว้สำหรับธีมสองครั้ง แต่นั่นส่งผลให้มีเพียงไฟล์เดียวในไฟล์/etc/apt/sources/sources.list.dอาจตรวจสอบแล้วหรือไม่
Sergiy Kolodyazhnyy

เป็นเวลานานแล้วที่ฉันลองมัน แต่ IIRC มันทำซ้ำบรรทัดในไฟล์รายการของที่เก็บ
Itay

คำตอบ:


5

ฉันเปลี่ยนฟังก์ชั่นของ Itay เพื่อให้สามารถจัดการพารามิเตอร์หลายตัวได้:

add_ppa() {
  for i in "$@"; do
    grep -h "^deb.*$i" /etc/apt/sources.list.d/* > /dev/null 2>&1
    if [ $? -ne 0 ]
    then
      echo "Adding ppa:$i"
      sudo add-apt-repository -y ppa:$i
    else
      echo "ppa:$i already exists"
    fi
  done
}

ที่จะถูกเรียกเช่นนี้:

add_ppa webupd8team/atom xorg-edgers/ppa ubuntu-wine/ppa

4
หากคุณต้องการปรับปรุงคำตอบอื่น ๆ โปรดแนะนำการแก้ไขและอย่าสร้างคำตอบใหม่
David Foerster

5

ฉันสิ้นสุดการเขียนฟังก์ชันเพื่อจัดการกับที่เก็บ ppa

add_ppa() {
  grep -h "^deb.*$1" /etc/apt/sources.list.d/* > /dev/null 2>&1
  if [ $? -ne 0 ]
  then
    echo "Adding ppa:$1"
    sudo add-apt-repository -y ppa:$1
    return 0
  fi

  echo "ppa:$1 already exists"
  return 1
}

ฉันสงสัยว่ามีวิธีที่สง่างามกว่านี้ไหม


1

ตอนนี้เป็นไปได้ที่จะลบที่เก็บก่อนเพิ่ม:

sudo add-apt-repository -r $REPO
sudo add-apt-repository $REPO
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.