LINUX.ORG.RU

История изменений

Исправление 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, :

Вылезла еще одна проблема. В подкаталогах /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); // И создается новый
}

?>