Вопрос или проблема
Меня сразу же беспокоит статусная строка в apt upgrade
/ apt update
, которая имеет желтый цвет — так как я использую светлый фон, она почти нечитаема…
Я посмотрел страницу man по apt
, но /colou?r
не выдает никаких совпадений.
Я попробовал Google, но то, что я нашел, это что-то на StackExchange, где был дан ответ на конкретный случай, отличный от моего, и не было ссылки на документацию.
Мне хотелось бы получить конкретный ответ на мою проблему, но больше всего я хотел бы ссылку на какую-то (не)официальную документацию, которая объясняет цвета в apt
и как изменить каждое значение по умолчанию.
Заранее спасибо
ps apt
как утилита командной строки — базовая инфраструктура пакетов дистрибутивов на базе Debian это Apt.
Вот частичный ответ, courtesy of David Kalnischkies из APT на OFTC’s #debian-apt.
apt update -o APT::Color::Yellow="$(printf '\e[36m')"
Я думаю, что этот цвет — циан. Для других цветов смотрите https://github.com/shiena/ansicolor/blob/master/README.md
Чтобы добавить это в конфигурацию APT на постоянной основе, вы можете сделать (например):
printf "APT::Color::Yellow \"\e[36m\";\n" >> /etc/apt/apt.conf
Что добавит, как выглядит следующий фрагмент (если вы читаете файл с помощью less
) в /etc/apt/apt.conf
:
APT::Color::Yellow "ESC[36m";
Спасибо @sebasth за то, что предложил это printf
заклинание.
Самый простой способ — просто отключить все цвета.
Создайте файл /etc/apt/apt.conf.d/80colors
, содержащий строку: Binary::apt::APT::Color "0";
Запустите это:
echo 'Binary::apt::APT::Color "0";' | sudo tee /etc/apt/apt.conf.d/80colors
Поскольку выглядит так, что есть повторяющиеся вопросы (включая тот, который привел меня сюда) о цветах в apt и не так много документации по этому, я подумал, что будет полезно немного углубиться в это. Следующее расширяет ответ Фаима Миты.
Исходный код apt содержит определения цветов для выделения и нейтрального, а также несколько цветов (красный, зеленый и т. д.) в apt-private/private-output.cc. Определения выглядят так:
APT::Color::Yellow "[33m";
Код внутри кавычек — это последовательность управляющих символов ANSI, комбинация шестнадцатеричных цифр, воспринимаемая многими терминальными оболочками, в данном случае для желтого цвета переднего плана. Первый символ в кодах цвета имеет шестнадцатеричное значение 1B. Печатаемого эквивалента нет. Если вы посмотрите на код, шестиугольная цифра может отобразиться как карет (^) или нечеткий квадрат или как ESC или вовсе не отображаться (как здесь), в зависимости от того, что отправляет вывод и куда.
Несмотря на наличие определения нескольких цветов, apt в настоящее время (1.8.2) не использует большинство из них. Выделение и нейтраль используются в нескольких местах, но ни один из цветов, кроме желтого, не используется. Он появляется в одной строке в acqprogress.cc в качестве цвета вывода для статуса.
Таким образом, “Желтый” можно рассматривать как заполнитель для цвета статусной строки. Если цвет не подходит (желтый на белом, например), изменение кода для “Желтого” — скажем, на синий:
([34m)
и затем добавление его в конец /etc/apt/apt.conf
с помощью подхода printf в ответе Фаима Миты исправит это:
printf "APT::Color::Yellow \"\e[34m\";\n" >> /etc/apt/apt.conf
В качестве альтернативы, вы можете использовать шестнадцатеричный редактор (Oktata в моем случае), чтобы напрямую изменить /etc/apt/apt.conf
. Обратите внимание, что apt.conf может не существовать; apt будет нормально работать без него, но будет читать его, если он там.
Вот почему изменение цветов в оболочке перед запуском apt не имеет никакого влияния. Apt жестко закодирован, чтобы использовать свое определение “Желтого”.
Наконец, выполнение
apt-config dump
в терминале выведет любые коды цвета в apt.conf (среди прочего). Каждый код, в свою очередь, изменит цвета терминала. Если последняя или единственная строка в apt.conf — это “Желтый”, терминал будет установлен на то, что присвоено “Желтому”. Это можно избежать, помещая код сброса (который apt называет нейтральным)
"[0m";
после нового определения “Желтого” в конце файла. Используя подход printf, это:
printf "APT::Color::Neutral \"\e[0m\";\n" >> /etc/apt/apt.conf
Вы можете настроить apt, редактируя файл /etc/apt/apt.conf
Примеры предоставлены в /usr/share/doc/apt/examples/configure-index.gz
Каждый терминальный эмулятор должен иметь какой-то редактор цветовых схем.
Просто задайте цвета, которые неприемлемы, на более подходящие.
Ответ или решение
Для настройки цветов в утилите apt
, чтобы решить проблему с трудночитаемой желтой цветовой схемой на светлом фоне, вы можете выполнить несколько шагов. Ниже приведены инструкции по изменению настроек цветов, а также ссылки на документацию для вашего удобства.
Изменение цвета статуса
-
Чтобы изменить конкретный цвет (например, желтый), используйте следующую команду:
apt update -o APT::Color::Yellow="$(printf '\e[34m')"
В этом примере цвет изменяется на синий, но вы можете выбрать любой другой цвет, изменив код.
-
Если вы хотите сделать это изменение постоянным, добавьте следующую строку в файл конфигурации
apt
:printf "APT::Color::Yellow \"\e[34m\";\n" | sudo tee -a /etc/apt/apt.conf
Это добавит строку в файл
apt.conf
, в которой будет указано новое значение для цвета «Yellow».
Отключение цветов
Если вы решите, что удобнее полностью отключить цветовое форматирование, это можно сделать, создав файл /etc/apt/apt.conf.d/80colors
и добавив в него строку:
echo 'Binary::apt::APT::Color "0";' | sudo tee /etc/apt/apt.conf.d/80colors
Понимание кодов цветов
Цвета в apt
управляются с помощью последовательностей символов ANSI. Например:
- Желтый цвет обозначается как
"[33m"
, - Синий цвет обозначается как
"[34m"
, - Нейтральный цвет, который обнуляет последние изменения, обозначается как
"[0m"
.
Если вы хотите увидеть все текущие значения конфигурации, вы можете выполнить команду:
apt-config dump
Это покажет все параметры конфигурации apt
, включая цвета.
Документация и ресурсы
Для более глубокого понимания конфигурации apt
и описания цветов, вы можете ознакомиться с примерами конфигурации по следующему пути:
/usr/share/doc/apt/examples/configure-index.gz
Также вы можете обратиться к исходному коду apt
, который содержит определения цветов. Например, они находятся в файле apt-private/private-output.cc
. Однако изменения в исходном коде — это более сложный процесс и требует понимания C++.
Редактирование терминала
Не забывайте, что у каждого терминала есть своя система управления цветами. Возможно, вам стоит проверить настройки цвета вашего терминала, чтобы выделить недоступные или неуместные цвета.
Надеюсь, эти инструкции помогут вам решить вашу проблему с цветами в apt
. Если у вас есть дополнительные вопросы, пожалуйста, не стесняйтесь задавать их!