script de shell para agregar condicionalmente el repositorio apt

8

Quiero escribir un script de shell que agregará un repositorio apto.
Sé que puedo hacerlo usando sudo add-apt-repository -y <repo>.

Mi pregunta es si puedo hacerlo solo si el repositorio no se ha agregado ya, algo como:

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

Gracias

Itay
fuente
add-apt-repositorysolo lo agregará una vez; Lo interesante es hacer apt-get updatecondicionalmente.
Beni Cherniavsky-Paskin
¿Incluso has intentado agregar un repositorio dos veces? Lo que he hecho ahora es add-apt-repositorypara un tema dos veces, pero eso resultó en un solo archivo en. ¿ /etc/apt/sources/sources.list.dTal vez ya hace las comprobaciones?
Sergiy Kolodyazhnyy
Ha pasado un tiempo desde que lo probé, pero IIRC duplica la línea en el archivo de la lista del repositorio
Itay

Respuestas:

5

Cambié la función de Itay para que maneje múltiples parámetros:

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
}

Ser llamado así:

add_ppa webupd8team/atom xorg-edgers/ppa ubuntu-wine/ppa
Ugo Hed
fuente
44
Si desea mejorar otra respuesta, sugiérale que la edite y no cree una nueva respuesta.
David Foerster
5

Terminé escribiendo una función para tratar con repositorios de 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
}

Me pregunto si hay alguna forma más elegante.

Itay
fuente
1

Ahora es posible eliminar el repositorio antes de agregarlo:

sudo add-apt-repository -r $REPO
sudo add-apt-repository $REPO
Mike Shiyan
fuente