Ошибка обновления Google Chrome

Если вы пользуетесь браузером Google Chrome, то после недавних обновлений вы могли увидеть следующую ошибку при работе команды apt-get update:

root@xxx:~# apt-get update
Hit:1 http://linux.teamviewer.com/deb stable InRelease
Ign:2 http://dl.google.com/linux/chrome/deb stable InRelease
Hit:3 http://security.debian.org buster/updates InRelease
Hit:4 http://linux.teamviewer.com/deb preview InRelease
Get:5 http://dl.google.com/linux/chrome/deb stable Release [943 B]
Get:6 http://dl.google.com/linux/chrome/deb stable Release.gpg [819 B]
Hit:7 https://repo.skype.com/deb stable InRelease
Hit:8 https://download.docker.com/linux/debian stretch InRelease
Hit:9 https://download.virtualbox.org/virtualbox/debian stretch InRelease
Hit:10 http://http.us.debian.org/debian buster InRelease
Hit:11 http://http.us.debian.org/debian buster-updates InRelease
Hit:12 https://download.sublimetext.com apt/stable/ InRelease
Reading package lists... Done
E: Repository 'http://dl.google.com/linux/chrome/deb stable Release' changed its 'Origin' value from 'Google, Inc.' to 'Google LLC'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.

Решается данная проблема очень просто:

root@xxx:~# apt update
Ign:1 http://dl.google.com/linux/chrome/deb stable InRelease
Hit:2 http://linux.teamviewer.com/deb stable InRelease
Hit:3 http://security.debian.org buster/updates InRelease
Get:4 http://dl.google.com/linux/chrome/deb stable Release [943 B]
Hit:5 http://linux.teamviewer.com/deb preview InRelease
Hit:6 http://http.us.debian.org/debian buster InRelease
Get:7 http://dl.google.com/linux/chrome/deb stable Release.gpg [819 B]
Hit:8 https://download.docker.com/linux/debian stretch InRelease
Hit:9 https://repo.skype.com/deb stable InRelease
Hit:10 https://download.virtualbox.org/virtualbox/debian stretch InRelease
Hit:11 http://http.us.debian.org/debian buster-updates InRelease
Hit:12 https://download.sublimetext.com apt/stable/ InRelease
E: Repository 'http://dl.google.com/linux/chrome/deb stable Release' changed its 'Origin' value from 'Google, Inc.' to 'Google LLC'
N: This must be accepted explicitly before updates for this repository can be applied. See apt-secure(8) manpage for details.
Do you want to accept these changes and continue updating from this repository? [y/N] y
Get:13 http://dl.google.com/linux/chrome/deb stable/main amd64 Packages [1,131 B]
Fetched 1,950 B in 9s (221 B/s)
Reading package lists... Done
Building dependency tree
Reading state information... Done
All packages are up to date.

И обновляйтесь дальше без ошибок. 😉

Компиляция и сборка ядра linux 4.17

Теперь для автоматический сборки новых версий ядра Linux потребуются следующие установленные пакеты:

apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison

Скрипт автоматический сборки немного поменялся:

#!/bin/sh

# unpack and prepare
cd /usr/src

# check for new file
kernelfile=`wget -O - 2>&1 https://www.kernel.org | grep "latest_link" -A 2 | grep -o 'https://[^"]*'`
newkernel="`echo $kernelfile | grep -o 'linux-.*\.tar\.xz' | cut -b 7- - | cut -b -5 -`"
currentkernel="`cat /proc/version | grep -o 'Linux version [^ ]*' | cut -b 15- -`"

# check new kernel version
if [ "$newkernel" != "$currentkernel" ];
then
    echo "New kernel found!"
    /usr/bin/wget -c $kernelfile
    archname=`find *.xz`
    tar xxf $archname
    dirsrc=`find -P linux-* -maxdepth 0 -type d | head -n 1`
    rm linux
    ln -s $dirsrc linux

    # compile
    cd /usr/src/linux
    make clean && make mrproper
    cp /boot/config-`uname -r` ./.config
    make menuconfig
    make-kpkg clean
    startdate=`date`
    make deb-pkg
    finishdate=`date`

    rm -rf $dirsrc

    echo "Начало: $startdate"
    echo "Завершение: $finishdate"
else
    echo "No new kernel found"
fi

Блог скорее мёртв, чем жив, но автор пока живее всех живых. 🙂

Доработанный скрипт автоматизированной компиляции ядра Linux

А вот и доработанная версия скрипта автоматизированной компиляции ядра Linux. Эта версия умеет самостоятельно проверять наличие новой версии на сайте и скачивать её.

#!/bin/sh

# unpack and prepare
cd /usr/src

# check for new file
kernelfile=`wget -O - 2>&1 https://www.kernel.org | grep "latest_link" -A 2 | grep -o 'https://[^"]*'`
newkernel="`echo $kernelfile | grep -o 'linux-.*\.tar\.xz' | cut -b 7- - | cut -b -5 -`"
currentkernel="`cat /proc/version | grep -o 'Linux version [^ ]*' | cut -b 15- -`"

# check new kernel version
if [ "$newkernel" != "$currentkernel" ];
then
    echo "New kernel found!"
    /usr/bin/wget -c $kernelfile
    archname=`find *.xz`
    tar xxf $archname
    dirsrc=`find -P linux-* -maxdepth 0 -type d | head -n 1`
    rm linux
    ln -s $dirsrc linux

    # compile
    cd /usr/src/linux
    make clean && make mrproper
    cp /boot/config-`uname -r` ./.config
    make menuconfig
    make-kpkg clean
    startdate=`date`
    fakeroot make deb-pkg
    finishdate=`date`

    cd /usr/src
    rm -rf $dirsrc

    echo "Начало: $startdate"
    echo "Завершение: $finishdate"
else
    echo "No new kernel found"
fi

Ротация логов процессов в supervisord

Если вы пользуетесь supervisord, то наверняка сталкивались с неудобством ротации логов в нём.

Типичная настройка в конфигурационном файле процесса в /etc/supervisor.d/ выглядит так:

stdout_logfile=/var/log/progam/process_%(process_num)02d.log
stdout_logfile_maxbytes=100MB
stdout_logfile_backups=50

Логи складываются в отдельные файлы и ротируются по достижении размера в 100 мегабайт. Данный способ не очень удобен, особенно если нужно искать логи за определённую дату.

В этом случае на помощь приходит logrotate.

В конфигурационном файле процесса меняем опции логов:

stdout_logfile_maxbytes=0
stdout_logfile_backups=0

И добавляем в /etc/logrotate.d/processname:

/var/log/program/process_*.log {
    create 0600 root root
    su root root
    daily
    copytruncate
    compress
    missingok
    notifempty
}

Теперь логи будут складываться в «суточные» файлы и автоматически сжиматься.

Скрипт автоматизированной компиляции ядра Linux

Я уже давно писал, что компиляция ядра — это просто. Со времени написания той записи прошло более семи лет. И я решил поделиться своим скриптом, который автоматизирует процесс сборки нового ядра.

Всё, что нужно, это скачать исходник очередной версии ядра в каталог /usr/src:

cd /usr/src
wget -c https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.8.10.tar.xz

И запустить скрипт build.sh, который у меня лежит там же в /usr/src. Содержимое скрипта:

#!/bin/sh

# unpack and prepare
cd /usr/src
archname=`find *.xz -type f`
tar xxf $archname
dirsrc=`find -P linux-* -maxdepth 0 -type d | head -n 1`
rm linux
ln -s $dirsrc linux

# compile
cd /usr/src/linux
make clean && make mrproper
cp /boot/config-`uname -r` ./.config
make menuconfig
make-kpkg clean
startdate=`date`
fakeroot make deb-pkg
finishdate=`date`

rm -rf $dirsrc

echo "Start time: $startdate"
echo "Finish time: $finishdate"

После работы скрипта на выходе получаются готовые .deb пакеты, которые остаётся только установить.

Если у вас есть идеи по улучшению этого скрипта — с удовольствием прочту их в комментариях.