0010 — Apt Key Deprecated
Раньше типовая инструкция по подключению стороннего репозитория в Debian выглядела так (взято с сайта PostgreSQL):
# Create the file repository configuration:
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt `
`$(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
# Import the repository signing key:
wget \
--quiet \
-O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | \
sudo apt-key add -
# Update the package lists:
sudo apt-get update
# Install the latest version of PostgreSQL.
# If you want a specific version, use 'postgresql-12' or similar instead of 'postgresql':
sudo apt-get -y install postgresql
Обратите внимание на установку ключа цифровой подписи. Просто берёшь и без задней мысли делаешь apt-key add
. Однако, в Debian 11 Bullseye разработчики решили улучшить систему настолько, что сломали этот механизм. Сейчас правильный путь такой (взято с сайта Docker):
curl -fsSL https://download.docker.com/linux/debian/gpg | \
sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo \
"deb [arch=$(dpkg --print-architecture) `
`signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] `
`https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
Вместо apt-ket add
используется команда gpg --dearmor
. Ещё интереснее дальше: в свойствах репозитория прописывается, каким ключом подписаны пакеты.
Если переписать инструкцию для PostgreSQL, то она будет выглядеть примерно так:
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | \
sudo gpg --dearmor -o /usr/share/keyrings/postgresql-keyring.gpg
sudo echo \
"deb [signed-by=/usr/share/keyrings/postrgresql-keyring.gpg] `
`http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" \
> /etc/apt/sources.list.d/pgpg.list
Тут, кстати, ещё одна тонкость. Недавно для себя открыл, что бектики (`) в командах оболочки можно использовать для красивого оформления скриптов. Если в одной строке идёт много всего, а хочется, чтобы было красиво, можно поставить 2 бектика — один в конце первой строки и один в нужном месте второй. Всё, что между ними, будет проигнорировано.
Использование wget
Лично мне использование wget
кажется более предпочтительным, т. к. эта утилита по умолчанию есть практически везде. Установка ключа выглядит так:
wget -O- <URL>.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/<ключ>.gpg