Skip to content

Instantly share code, notes, and snippets.

@ifokeev
Created July 22, 2016 17:58
Show Gist options
  • Save ifokeev/9ff64123e6d79d86211867597d956403 to your computer and use it in GitHub Desktop.
Save ifokeev/9ff64123e6d79d86211867597d956403 to your computer and use it in GitHub Desktop.
updating ubuntu repos and gpg
#!/bin/bash
# Эта пара строк не претендует на что-либо, но давно хотел это написать, а тут как раз и повод подвалил. :)
# Короче, это маленький скриптик для убунтоводов, автоматический запрашивающий GPG-ключи с keyserver.ubuntu.com для всех неподпписанных репозиториев. Будет полезен после добавления каждого нового PPA, чтобы не заниматься каждый раз копипастой фингерпринта и ручным вводом команды apt-key со всеми параметрами. Кроме того, наверное, будет полезен после переноса старого sources.list в свежеустановленную систему, когда внезапно оказывается, что репозитории-то перенесены, а ключи — нет.
# Запускать вместо apt-get update.
# Специально для http://welinux.ru/post/5160/
# Делаем разделитель строк, а не слов
OLDIFS=$IFS
IFS=$'\n'
# Получаем строки с ошибками, где не найдены ключи репозиториев
lines=`sudo apt-get update 2>&1 | grep "NO_PUBKEY"`
# Проходимся по каждой строчке
for line in $lines
do
# Вынимаем отпечаток, записанное в конце строки (16-значный код, ну и плюс там конец строки)
key=`echo $line | tail --bytes=17`
# Собственно, получаем ключ по отпечатку
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $key
# Запоминаем, что какой-то ключ был получен
SOMETHINGDONE="true"
done
# Возвращаем исходный разделитесль строк
IFS=$OLDIFS
# Если хоть что-то изменено, то делаем update заново, чтобы новые ключи уже использовались
if [ $SOMETHINGDONE ]
then
sudo apt-get update
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment