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


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

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.


1

Ahora es posible eliminar el repositorio antes de agregarlo:

sudo add-apt-repository -r $REPO
sudo add-apt-repository $REPO
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.