Как восстановить glibc на Дуге Linux?

Какую систему Вы используете?

LC_ALL=C sort < your-file.txt

Где your-file.txt текст, который Вы отправили в кодировании utf-8, виды как:

[#ゆうかりんちゃんねる]
[10th Avenue Cafe]
[2nd Flush]
[ALTERNATIVE]
[Alstroemeria Records & Cradle]
[Amateras Records]
[Analyze]
[Z.S.G TRAXXX]
[anagram]
[α music]
[Яiselied]
[ぞめ]
[ほねとかわとがはなれるおと]
[アルトノイラント - Altneuland]
[サディスティックブラウニー]
[セブンスヘブンAmmy's]
[チ→ム♂ツナギ]
[一人華飯スペシャル]
[七瀬屋]

В моей системе (вид от GNU coreutils 8.13, Debian EGLIBC 2.13-38). Который при передаче по каналу к cut -c2 | tr -d \\n | recode ..dump дает:

UCS2   Mne   Description

0023   Nb    number sign
0031   1     digit one
0032   2     digit two
0041   A     latin capital letter a
0041   A     latin capital letter a
0041   A     latin capital letter a
0041   A     latin capital letter a
005A   Z     latin capital letter z
0061   a     latin small letter a
03B1   a*    greek small letter alpha
042F   JA    cyrillic capital letter ya
305E   zo    hiragana letter zo
307B   ho    hiragana letter ho
30A2   A6    katakana letter a
30B5   Sa    katakana letter sa
30BB   Se    katakana letter se
30C1   Ti    katakana letter ti
4E00
4E03

То же в более старой системе с sort от GNU coreutils 7.4, 2.11.1-0ubuntu7.12 EGLIBC

8
23.05.2017, 15:39
1 ответ

Перекомпилировать glibc с помощью пользовательских DTV_SURPLUS и переопределить существующую версию:

  1. Скопировать /var/abs/core/glibc в другую директорию, чтобы можно было записывать в нее, не будучи корневой, а затем cd в эту директорию.
  2. Используйте makepkg -o для загрузки и извлечения исходного кода без сборки (потому что мы отредактируем исходный код перед сборкой).
  3. Редактирование DTV_SURPLUS находится в src/glibc-<версия>/sysdeps/generic/ldsodefs.h. Вы можете просто изменить номер в строке, содержащей DTV_SURPLUS.
  4. Постройте его с makepkg -e.
  5. Установите пользовательскую версию с помощью sudo pacman -U <пакетный файл>. Это переопределит ранее установленный официальный пакет.

Если вы не хотите переопределять существующую версию, вы можете использовать chroot, или, возможно, LD_PRELOAD также будет работать.

Однако я не уверен, что должно быть DTV_SURPLUS.

2
27.01.2020, 20:13

Теги

Похожие вопросы