LINUX.ORG.RU
ФорумTalks

В Slackware оперативно устранили древний баг из SLS

 , ,


0

2

https://www.linuxquestions.org/questions/slackware-14/wrong-default-configuration-of-less-1-breaks-git-and-mercurial-4175699887/

Из-за установления переменной окружения LESS в /etc/profile программы, которые используют less(1), такие как git и hg, запускают less(1) неправильно, что приводит к эскейп мусору на экране.

Патрик таки читает linuxquestions.org

Для Ъ https://slackware.uk/slackware/slackware64-current/ChangeLog.txt

Mon Aug 30 18:22:08 UTC 2021
a/etc-15.0-x86_64-15.txz:  Rebuilt.
  /etc/profile: Don't define a $LESS variable, but provide a commented-out
  example of "-M -R". As far as I can tell, setting $LESS to -M is something
  that we picked up from SLS's /etc/profile at the very beginning and then
  kept it because it wasn't causing any problems. Personally, I'll be
  uncommenting this because it's nice to get the extra output from less
  provided by -M concerning your place in the file, but we'll leave it up
  to the end user how to handle this.
  Thanks to krown, marav, LockyWolf, and drgibbon.

Патрик таки читает linuxquestions.org

Конечно читает, не только же пиво варить, но и рыбу надо ловить

luke ★★★★★ ()

Не все то баг, что блестит ;-)

man less
...
-m or --long-prompt
Causes less to prompt verbosely (like more), with the percent into the file. By default, less prompts with a colon.

-M or --LONG-PROMPT
Causes less to prompt even more verbosely than more.


Вывод с ANSI последовательностями, коим без причины грешат помянутые git да hg, в нем включается несколько иначе и считается небезопасным (не зря)

man less
...
-r or --raw-control-chars
Causes «raw» control characters to be displayed. The default is to display control characters using the caret notation; for example, a control-A (octal 001) is displayed as «^A». Warning: when the -r option is used, less cannot keep track of the actual appearance of the screen (since this depends on how the screen responds to each type of control character). Thus, various display problems may result, such as long lines being split in the wrong place.

-R or --RAW-CONTROL-CHARS
Like -r, but only ANSI «color» escape sequences are output in «raw» form. Unlike -r, the screen appearance is maintained correctly in most cases. ANSI «color» escape sequences are sequences of the form:
ESC [ ... m

where the "..." is zero or more color specification characters For the purpose of keeping track of screen appearance, ANSI color escape sequences are assumed to not move the cursor. You can make less think that characters other than «m» can end ANSI color escape sequences by setting the environment variable LESSANSIENDCHARS to the list of characters which can end a color escape sequence. And you can make less think that characters other than the standard ones may appear between the ESC and the m by setting the environment variable LESSANSIMIDCHARS to the list of characters which can appear.


Кликбейт как он есть ;-)
Популярность тем про Slackware удвоилась.

bormant ★★★★★ ()
Последнее исправление: bormant (всего исправлений: 1)
Ответ на: комментарий от ergo

«оперативно» и «древний» немного противоречат друг другу :)

Оперативно с момента открытия соответствующей темы на linuxquestions.org

hummer ()
Ответ на: комментарий от splinter

Поспешил Патрик, ох поспешил.

Почему же поспешил? Вполне разумно решил не устанавливать LESS для всех и каждого по умолчанию. Кому надо сами выставят как хотят.

hummer ()
Ответ на: комментарий от ergo

А мне вот интересно, каким образом это древнее наследие SLS смогло прожить так долго почти без изменений? Ведь и Git и Mercurial появились не вчера и наверняка есть ещё и другие программы, запускающие less c цветными текстами. Может быть это признак старпёрости большинства пользователей Slackware? В смысле, что новых пользователей мало, а старики застряли на старых привычках и либо выключают цвет совсем, либо вообще сидят на CVS/SVN?

hummer ()
Ответ на: комментарий от hummer

в любых больших проектах есть «темные» места, куда никто не заглядывает годами. так что это нормально.

ergo ★★ ()
Ответ на: комментарий от ergo

в любых больших проектах есть «темные» места, куда никто не заглядывает годами. так что это нормально.

Куда это не заглядывают годами? В команды типа git log, git status? Прочие дистрибутивы постоянно пробуются новыми людьми, среди которых немало разработчиков. И вот представь себе, устанавливает такой разработчки себе какую нибудь Федору или Убунту или Зузю, а у него Git выдаёт мусор в терминале. Сколько, по твоему, такой баг проживёт в вышеперечисленных дистрибутивах? То есть это не тёмные места, а всего лишь забвение. Вот с выходом Slackware 15 интерес к этому дистрибутиву, скорее всего, снова увеличится хотя бы временно и возможно ешё несколько таких тёмных мест будет выявлено и устранено.

hummer ()
Ответ на: у меня такое было от Andrew-R

погуглил и кажется вот этим советом пофиксил..

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

hummer ()
Последнее исправление: hummer (всего исправлений: 1)
Ответ на: комментарий от luke

Неужели они заботливо копируют свой локальный профайл из системы в систему? В других дистрибутивах люди обычно просто устанавливают систему, начинают пользоваться и если что-то базовое не работает как ожидалось, жалуются разработчикам.

hummer ()
Ответ на: комментарий от hummer

Неужели они заботливо копируют свой локальный профайл из системы в систему?

Хомяк ведь тот же, зачем тебе разные хомяки?

luke ★★★★★ ()
Ответ на: комментарий от hummer

интересно, каким образом это древнее наследие SLS смогло прожить так долго почти без изменений?

Colors in Git
Git fully supports colored terminal output, which greatly aids in visually parsing command output quickly and easily. A number of options can help you set the coloring to your preference.

color.ui
Git automatically colors most of its output, but there’s a master switch if you don’t like this behavior. To turn off all Git’s colored terminal output, do this:

$ git config --global color.ui false

The default setting is auto, which colors output when it’s going straight to a terminal, but omits the color-control codes when the output is redirected to a pipe or a file.

You can also set it to always to ignore the difference between terminals and pipes. You’ll rarely want this; in most scenarios, if you want color codes in your redirected output, you can instead pass a --color flag to the Git command to force it to use color codes. The default setting is almost always what you’ll want.

Кто включал цветной вывод, тот добавлял в LESS "-R" или "-r" для себя или на уровне системы. Наряду с правкой lang.sh и прочими аналогичными.

Обычное действие. Даже сначала не понял, что бы тут могло привлечь внимание... А потом как понял — так там же надо текстовым редактором, да в текстовые файлы настроек ;-)

bormant ★★★★★ ()
Ответ на: комментарий от luke

Я про установку новой системы с нуля. Допустим купил ты новый комп, накатил туда любимую Слаку и пробуешь как оно там ещё до копирования данных со старого компа и тут у тебя вылазят кракозяблы. Или у слакварщиков особый ритуал и так делать некошерно?

hummer ()
Ответ на: комментарий от bormant

Кто включал цветной вывод…

Уже ошибочное утверждение. Цветной вывод там включён по-умолчанию.

Обычное действие. Даже сначала не понял, что бы тут могло привлечь внимание… А потом как понял — так там же надо текстовым редактором, да в текстовые файлы настроек ;-)

Что, до сих пор зудит после той темы?

hummer ()
Ответ на: комментарий от hummer

и пробуешь

А чего пробовать, слака без настройки под себя смысла не имеет. Хочешь попробовать дефолтную конфигурацию, ну так создай под это отдельного юзера.

luke ★★★★★ ()
Ответ на: комментарий от luke

А чего пробовать, слака без настройки под себя смысла не имеет.

Спорное утверждение. В любом случае лечит явные баги настроек по умолчанию простынями собственных локальных настроек - такое себе решение.

Хочешь попробовать дефолтную конфигурацию, ну так создай под это отдельного юзера.

Ну вот любой, пробующий Слаку, начинает как раз с такого юзера.

hummer ()
Ответ на: комментарий от hummer

А зачем ставить заново? В новый комп можно вставить диск из старого или перелить все его содержимое rsyncом. А потом только перекомпилировать ядро под новое железо и все.

pandrey ★★ ()
Ответ на: комментарий от hummer
$ wc -l .bashrc .bash_profile 
  26 .bashrc
  22 .bash_profile

З.Ы. LESS выставлен в .bash_profile, потому что выхлоп git log и меня подзадолбал в своё время.

luke ★★★★★ ()
Последнее исправление: luke (всего исправлений: 2)
Ответ на: комментарий от pandrey

Ну разные у людей ситуации. Старый комп может ещё продолжать использоваться какое-то время.

hummer ()
Ответ на: комментарий от luke

А где именно эта LESS переменная вообще используется, кроме git/hg? man вроде как использует свою переменную и по умолчанию работает как с -M.

hummer ()
Ответ на: комментарий от hummer

Мало ли кому ещё нужны опции для less. В мане эта переменная описана, значит её можно использовать другими программами. Вон, journalctl же как-то играется с SYSTEMD_PAGER.

luke ★★★★★ ()
Ответ на: комментарий от luke

Ну вот Патрик сказал, что себе её раскоментирует, а для каких программ не сказал. Прямо тайна какая-то.

hummer ()
Ответ на: комментарий от hummer

где именно эта LESS переменная вообще используется, кроме git/hg?

Вопрос поставлен некорректно.
Используется переменная окружения LESS ровно в одном месте, внутри less, который смотрит в полученное при запуске окружение, и если видит там эту переменную, считает ее содержимое частью своей командной строки.

$ man less
Environment Variables
Environment variables may be specified either in the system environment as usual, or in a lesskey (1) file. If environment variables are defined in more than one place, variables defined in a local lesskey file take precedence over variables defined in the system environment, which take precedence over variables defined in the system-wide lesskey file.
...
LESS
Options which are passed to less automatically.

bormant ★★★★★ ()
Последнее исправление: bormant (всего исправлений: 1)
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)