Cuando agrego un PPA y quiero instalar parte de su contenido, es bastante molesto volver a actualizar toda mi lista de apt usando apt-get update
.
¿Es posible sincronizar solo el contenido de un repositorio dado?
fuente
Cuando agrego un PPA y quiero instalar parte de su contenido, es bastante molesto volver a actualizar toda mi lista de apt usando apt-get update
.
¿Es posible sincronizar solo el contenido de un repositorio dado?
sí, apt-get puede hacer eso, y puede hacerlo de una manera agradable.
Añadir siguiente a ~/.bash_funcs
update-repo() {
for source in "$@"; do
sudo apt-get update -o Dir::Etc::sourcelist="sources.list.d/${source}" \
-o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
done
}
Añadir siguiente a ~/.bashrc
if [ -f $HOME/.bash_funcs ]; then
. $HOME/.bash_funcs
fi
Añadir siguiente a ~/.bash_completion
# Debian user-defined completion -*- shell-script -*-
_ppa_lists(){
local cur
_init_completion || return
COMPREPLY=( $( find /etc/apt/sources.list.d/ -name "*$cur*.list" \
-exec basename {} \; 2> /dev/null ) )
return 0
} &&
complete -F _ppa_lists update-repo
Luego busca los archivos
. ~/.bashrc
. ~/.bash_completion
Listo y comienza a dispararlo
update-repo <tab> <tab>
Puede actualizar un solo repositorio de ppa sin tener que actualizar toda la fuente de apt, con la implementación de bash-complete.
update-repo _init_completion: command not found
Si el repositorio está configurado en un archivo específico en el directorio /etc/apt/sources.list.d/
, por ejemplo myrepo.list
, puede actualizar ese repositorio único con el comando:
sudo apt-get update -o Dir::Etc::sourcelist="sources.list.d/myrepo.list" \
-o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
Sin embargo, esto no es muy conveniente.
Esto se puede simplificar definiendo una función bash
update_repo() {
sudo apt-get update -o Dir::Etc::sourcelist="sources.list.d/$1.list" \
-o Dir::Etc::sourceparts="-" -o APT::Get::List-Cleanup="0"
}
para que puedas simplemente correr
update_repo myrepo
sourceparts
no debe usarse. Ver github.com/Debian/apt/blob/master/apt-pkg/sourcelist.cc#L313 . Sin embargo, podría estar equivocado, no pude encontrar un documento adecuado que explicara el '-'.
Y PPA Manager viene con una herramienta de línea de comandos llamada update-ppa
que le permite actualizar un solo PPA.
Por ejemplo:
sudo update-ppa ppa:nilarimogard/webupd8
Además, al agregar un PPA a través de Y PPA Manager, la fuente de PPA se actualiza automáticamente (solo para ese PPA). En una versión futura, también habrá una GUI para actualizar manualmente los PPA individuales.
Más información sobre Y PPA Manager, AQUÍ .
sudo add-apt-repository ppa:webupd8team/y-ppa-manager
entonces sudo apt-get update
y finalmentesudo apt-get install y-ppa-manager
Para actualizar un repositorio específico, use -o
, por ejemplo:
apt-get update -o Dir::Etc::sourcelist=/path/to/repo.list
Aquí hay una actualización de una línea que solo ha agregado recientemente el repositorio de apt
find /etc/apt/sources.list.d -type f -name '*.list' -exec sudo apt-get update -o Dir::Etc::sourcelist="{}" ';'
Es mucho más rápido que actualizar todos los repositorios, especialmente durante el aprovisionamiento de VM después de agregar nuevos.
/path/to
La -u
opción se agregó en 15.10 . De 15.10 a 17.10, puede usar -u
para actualizar automáticamente solo el repositorio específico que está agregando:
add-apt-repository -u my-ppa
Lo tonto es que esta opción no se agregó man
hasta el 18.04 (sin embargo, se documentó add-apt-repository --help
). ¡Pero en 18.04, esta funcionalidad fue eliminada! (Nuevamente, no adentro man
, pero puedes ver adentro add-apt-repository --help
).
En 18.04, la funcionalidad de actualización se cambió para hacer siempre un completo apt-get update
después add-apt-repository
. La -u
opción fue eliminada efectivamente. Permanece allí para la sintaxis heredada, pero siempre se establece en options.update = False
. En 18.04, tiene la opción de -n, --no-update
, que es como el comportamiento anterior. Pero es todo o nada, no puede actualizar un solo repositorio desde 18.04.
add-apt-repository -u
-u
en Ubuntu (15.x) Vivid por lo que puedo decir.add-apt-repository --help
. Abra un error que solicite corregir la página de manual.-u
funcionalidad se eliminó desde el 18.04. Ver askubuntu.com/questions/65245/…