LINUX.ORG.RU

Хочу установить русские man-страницы от AltLinux. Ошибка при установке пакета.

 , , , ,


0

1

По какой-то неведомой причине, в Debian давно выпилили русскоязычные страницы (они были в wheezy, и это было очень удобно).

Решил сейчас попробовать поставить пару пакетов от AltLinux в Dabian Stable 9. Пакеты беру вот отсюда:

https://packages.altlinux.org/ru/search?utf8=✓&branch=Sisyphus&query=...

Имена пакетов:

man-pages-ru-4.16-alt1.noarch.rpm
man-pages-ru-extra-0.1-alt6.noarch.rpm

Преобразую их в Deb-пакеты командами:
alien --to-deb man-pages-ru-4.16-alt1.noarch.rpm
alien --to-deb man-pages-ru-extra-0.1-alt6.noarch.rpm

В результате генерируются пакеты с именами:
man-pages-ru_4.16-1_all.deb
man-pages-ru-extra_0.1-1_all.deb

При попытке установки что одного что другого пакета, появляется ошибка:
Installing /home/xi/work/misc/anydata/alt-linux-packages/man-pages-ru_4.16-1_all.deb
Выбор ранее не выбранного пакета man-pages-ru.
(Чтение базы данных … на данный момент установлено 313766 файлов и каталогов.)
Подготовка к распаковке …/man-pages-ru_4.16-1_all.deb …
Распаковывается man-pages-ru (4.16-1) …
Настраивается пакет man-pages-ru (4.16-1) …
chown: неверный пользователь: «cacheman:man»
dpkg: ошибка при обработке пакета man-pages-ru (--install):
 подпроцесс установлен сценарий post-installation возвратил код ошибки 1
Обрабатываются триггеры для man-db (2.7.6.1-2) …
/usr/bin/mandb: не удалось выполнить функцию chmod /var/cache/man/ru/cat1: Операция не позволена
/usr/bin/mandb: не удалось выполнить функцию chmod /var/cache/man/ru/cat2: Операция не позволена
/usr/bin/mandb: не удалось выполнить функцию chmod /var/cache/man/ru/cat3: Операция не позволена
/usr/bin/mandb: не удалось выполнить функцию chmod /var/cache/man/ru/cat4: Операция не позволена
/usr/bin/mandb: не удалось выполнить функцию chmod /var/cache/man/ru/cat5: Операция не позволена
/usr/bin/mandb: не удалось выполнить функцию chmod /var/cache/man/ru/cat6: Операция не позволена
/usr/bin/mandb: не удалось выполнить функцию chmod /var/cache/man/ru/cat7: Операция не позволена
/usr/bin/mandb: не удалось выполнить функцию chmod /var/cache/man/ru/cat8: Операция не позволена
/usr/bin/mandb: не удалось выполнить функцию chmod /var/cache/man/ru/cat9: Операция не позволена
При обработке следующих пакетов произошли ошибки:
 man-pages-ru


Вопрос: как обойти эту ошибку, и поставить пакет так, чтобы в системе стали работать русскоязычные маны?

★★★★★

Последнее исправление: Xintrea (всего исправлений: 1)

Не для всех выпилили. Тот же

man useradd
выдает на русском.

Может можно их ручками в /opt или /usr/local засунуть?

Я бы попробовал /usr/local/share/man

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

Ну я сделал следующее. Добавил такого пользователя в /etc/passwd:

cacheman:x:1001:12:cacheman:/var/cache/man:/usr/sbin/nologin

где 12 - это группа man.

Стала появляться другая ошибка:
Настраивается пакет man-pages-ru (4.16-1) …
chown: невозможно получить доступ к '/var/cache/man/ru/whatis': Нет такого файла или каталога
dpkg: ошибка при обработке пакета man-pages-ru (--install):
 подпроцесс установлен сценарий post-installation возвратил код ошибки 1
Обрабатываются триггеры для man-db (2.7.6.1-2) …
/usr/bin/mandb: не удалось выполнить функцию chmod /var/cache/man/ru/cat1: Операция не позволена
/usr/bin/mandb: не удалось выполнить функцию chmod /var/cache/man/ru/cat2: Операция не позволена

Тогда сделал вручную каталог, /var/cache/man/ru/whatis, задал ему пользователей таких же как и у других каталогов рядом:
chown root:man whatis

После чего при установке пакета явных ошибок нет, но остались такие проблемы:
Настраивается пакет man-pages-ru (4.16-1) …
Обрабатываются триггеры для man-db (2.7.6.1-2) …
/usr/bin/mandb: не удалось выполнить функцию chmod /var/cache/man/ru/cat1: Операция не позволена
/usr/bin/mandb: не удалось выполнить функцию chmod /var/cache/man/ru/cat2: Операция не позволена
/usr/bin/mandb: не удалось выполнить функцию chmod /var/cache/man/ru/cat3: Операция не позволена
/usr/bin/mandb: не удалось выполнить функцию chmod /var/cache/man/ru/cat4: Операция не позволена
/usr/bin/mandb: не удалось выполнить функцию chmod /var/cache/man/ru/cat5: Операция не позволена
/usr/bin/mandb: не удалось выполнить функцию chmod /var/cache/man/ru/cat6: Операция не позволена
/usr/bin/mandb: не удалось выполнить функцию chmod /var/cache/man/ru/cat7: Операция не позволена
/usr/bin/mandb: не удалось выполнить функцию chmod /var/cache/man/ru/cat8: Операция не позволена
/usr/bin/mandb: не удалось выполнить функцию chmod /var/cache/man/ru/cat9: Операция не позволена

А при попытке запуска команды:
man ldd

Появляется ошибка:
man: предупреждение: /usr/share/man/ru/man1/ldd.1.xz.gz: игнорируется фальшивое имя файла

И открывается английский man.

Вот, как это обойти пока не придумал.

Xintrea ★★★★★
() автор топика
Ответ на: комментарий от Vsevolod-linuxoid

Попробовал еще дать команду mandb:

# mandb
Обработка справочных страниц в /usr/share/man/ru...
Обработка справочных страниц в /usr/local/man...
В 0 man-подкаталогах содержатся более новые справочные страницы.
Добавлено 0 справочных страниц.
Добавлено 0 побочных cat-страниц.
Вычищено 0 старых записей базы данных.

То есть она тоже ничего не сделала. И при попытке отобразить man ldd все так же появляется сообщение:
man: предупреждение: /usr/share/man/ru/man1/ldd.1.xz.gz: игнорируется фальшивое имя файла

И страница на английском открывается.

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

А что будет, если распаковать вручную в /usr/local/man и запустить mandb? Правда не приходит других идей в голову.

Vsevolod-linuxoid ★★★★★
()

Там же их вроде перекодировать из кои8р надо ещё. А вообще конечно маны могут быть только на английском.

anonymous
()
Ответ на: комментарий от Vsevolod-linuxoid

Так, кажется, нащупал.

Файлы, устанавливаемые из этих пакетов, имеют расширение *.xz.gz. А родные файлы man-страниц в Debian имеют расширение *.gz.

То есть, в следующем списке два верхних файла родные, два нижних - из AltLinux:

# cd /usr/share/man/ru/man1
# ls -l
...
-rw-r--r-- 1 root root   7129 сен 30  2017 vim.1.gz
-rw-r--r-- 1 root root   1230 сен 30  2017 vimdiff.1.gz
-rw-r--r-- 1 root root   1583 май  4  2017 w.1.xz.gz
-rw-r--r-- 1 root root   1283 май  4  2017 wc.1.xz.gz
...

Вот на эти *.xz.gz команда man и ругается.

Пока не решил как исправить.

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

В общем, дал в каталоге /usr/share/man/ru команду:

find . -iname "*.xz.gz" -exec gunzip {} \;

В результате получились файлы с расширением *.xz, но их man нормально видит и может показать.

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

Вылезла еще одна проблема. В подкаталогах /usr/share/man/ru man1, man2 и т.д. еще есть куча линков. Когда переименовывались «настоящие» файлы «*.xz.gz», то в этот момент не переименовывались файлы-линки, т.к. они становились некорректными.

Поэтому пришлось написать скрипт (в баше совсем не силен, посему php), который надо от рута выполнить в каталоге /usr/share/man/ru:

<?php 

$output=shell_exec('find . -iname "*.xz.gz" -type l');

echo $output;

$fileNames=explode("\n", $output);

foreach($fileNames as $fileName) {

    // Имя файла
    echo "File: ".$fileName."\n";

    // Информация о файле
    $info=exec('file '.$fileName);
    echo "Info: ".$info."\n";

    // Имя файла, куда указывает линк
    $chunks=explode(" ", $info);
    $linkFileName="./".$chunks[ count($chunks)-1 ];
    echo "Link: ".$linkFileName."\n";

    // Новые правильные имя файла и имя линка
    $newFileName=substr($fileName, 0, -3);
    $newLinkFileName=substr($linkFileName, 0, -3);

    echo "New File: ".$newFileName."\n";
    echo "New Link: ".$newLinkFileName."\n";

    exec('rm -f '.$fileName); // Старый файл-линк удаляется
    exec('ln -s '.$newLinkFileName.' '.$newFileName); // И создается новый
}

?>
После выполнения данного скрипта надо запустить команду mandb. Она найдет новые переводы, правда немного поругается:
# mandb
Обновление индексного кэша для пути `/usr/share/man/ru/man3'. Ждите...mandb: предупреждение: /usr/share/man/ru/man3/atol.3.xz ссылается на несуществующий объект
Обновление индексного кэша для пути `/usr/share/man/ru/man8'. Ждите...mandb: предупреждение: /usr/share/man/ru/man8/tcb_convert.8.xz: whatis анализ tcb_convert(8) не удался
mandb: предупреждение: /usr/share/man/ru/man8/tcb_unconvert.8.xz: whatis анализ tcb_unconvert(8) не удался
mandb: предупреждение: /usr/share/man/ru/man8/pam_unix.8.xz: whatis анализ pam_unix(8) не удался
mandb: предупреждение: /usr/share/man/ru/man8/pam_tcb.8.xz: whatis анализ pam_tcb(8) не удался
Обновление индексного кэша для пути `/usr/share/man/ru/man5'. Ждите...mandb: предупреждение: /usr/share/man/ru/man5/passwd.5*: конкурирующие расширения
mandb: предупреждение: /usr/share/man/ru/man5/tcb.5.xz: whatis анализ tcb(5) не удался
Обновление индексного кэша для пути `/usr/share/man/ru/man1'. Ждите...mandb: предупреждение: /usr/share/man/ru/man1/su.1*: конкурирующие расширения
mandb: предупреждение: /usr/share/man/ru/man1/login.1*: конкурирующие расширения
mandb: предупреждение: /usr/share/man/ru/man1/passwd.1*: конкурирующие расширения
завершено.
Проверка побочных cat в /usr/share/man/ru...
Проверка побочных cat в /var/cache/man/ru...
Обработка справочных страниц в /usr/local/man...
В 7 man-подкаталогах содержатся более новые справочные страницы.
Добавлено 1624 справочные страницы.
Добавлено 0 побочных cat-страниц.
Вычищено 0 старых записей базы данных.

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

Т.е. они xz в gz сжимают? Шикардос. Вообще поехавшие.

Это в ваших дебианах alien поехавший, видимо: про xz не в курсе.

AS ★★★★★
()
Ответ на: комментарий от Vsevolod-linuxoid

Не для всех выпилили.

Тут вот в чём дело. Есть маны из man-pages, а есть собственные маны приложений. И они, по идее, не должны пересекаться. Соответственно, если у приложения свои национальные маны есть, они есть, а пакета man-pages-ru (по составу он соответствует man-pages), как я понимаю из данной темы, нет. Ну и всяких надёрганных в man-pages-ru-extra (и отсутствующих в man-pages) тоже нет. Но в этом extra всё достаточно устаревшее, на самом деле. Плюс есть ALT-специфичное.

AS ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.