iliander |
|
Темы:
2
Сообщения:
11
Участник с: 24 октября 2008
|
Я, как и товарищ в http://archlinux.org.ru/arch_forum/viewtopic.php?f=6&t=491 тоже затер /var/lib/pacman. Откуда мы такие умные беремся, мне не известно =) Но вопрос вот в чем - возможно ли как-то восстановить базу пакетов? У меня слишком многое в системе установлено, чтобы можно было по логу восстанавливать базу… Заранее благодарен! |
h4tr3d |
|
Темы:
34
Сообщения:
2656
Участник с: 12 июля 2007
|
по логу восстанавливать базу.
systemd должен умереть.
|
iliander |
|
Темы:
2
Сообщения:
11
Участник с: 24 октября 2008
|
Я уже понял… Т.к. пакетов очень много, то я пытаюсь это дело автоматизировать. Но у меня все никак не получается, т.к. опыт написания скриптов на bash практически нулевой. К чему я пришел: Если я правильно понял, то все, что мне необходимо - это просто скопировать каталоги с необходимым софтом (а точнее, с данными о нем) из “/var/lib/pacman/sync/” в “/var/lib/pacman/local/”. Беспокойства за различие версий отпадают, т.к. система была обновлена где-то минут за 30 до “происшествия”. Пытаемся автоматизировать. Командой cat /var/log/pacman.log|grep installed|cut -f4 -d" ">>~/pacma Дальше у меня есть команда find /var/lib/pacman/sync/ -name '*zsh*' find /var/lib/pacman/sync/ -name <~/pacma find: отсутствует аргумент у `-name'. Если же убираю аргумент -name, т.е. передаю просто строки, то на выходе получаю список папок с файлами внутри, что мне не нужно. Это первая заминка моя. Дальше, если я получу правильный вывод от предыдущей команды, и у меня будет файл с полными путями к папкам установленных на моей машине, согласно логу, софтин, то мне необходимо написать скрипт, в котором команде cp -rf Вот тут у меня совсем ступор, я уже более часа мучаюсь с этим скриптом. Я не могу передать команде “cp” строку из файла с путями. Надеюсь, хоть кто-то мне поможет, я и так уже сижу кофе пью который час. Заранее благодарен! |
iliander |
|
Темы:
2
Сообщения:
11
Участник с: 24 октября 2008
|
Я нашел выход из ситуации. Несколько не доделал этот скрипт, но все же свое я получил =) Итак, как я уже говорил, в начале получаем список пакетов с лога pacman: cat /var/log/pacman.log|grep installed|cut -f4 -d" ">~/pacma find /var/lib/pacman/sync/* -type d <pacma >~/fld Дальше я это все запихнул в простенький скрипт, с которым я очень долго не мог разобраться: #!/bin/bash basd=`/bin/cat fld` casd='/home/iliander/pacrest/' cp -rf $basd $casd Вот, в общем-то, и все. Следует сказать, что если при обновлении будут проблеммы с установкой некоторых пакетов, то просто запускаем pacman с ключем -f и он ставит пакет поверх существующих файлов. Всякое бывает =) |
strafer |
|
Темы:
18
Сообщения:
336
Участник с: 11 мая 2007
|
А не проще просто пакеты поверх поставить с форсированием перезаписи? Конфиги по идее не перетрет - будут *.pacnew. |
iliander |
|
Темы:
2
Сообщения:
11
Участник с: 24 октября 2008
|
Не проще, т.к. конфиги он таки пытается затереть. Старые переименовывает, а новыми заменяет существующие. Все бы хорошо, но мне проще таким образом восстановить базу, чем возвращать на место кучу конфигов. |
strafer |
|
Темы:
18
Сообщения:
336
Участник с: 11 мая 2007
|
IlianderПереименовывает во что, типа *.pacold? Может find с mv после установки поверх спасет отца русской демократии? |
iliander |
|
Темы:
2
Сообщения:
11
Участник с: 24 октября 2008
|
Тоже вариант, конечно. Я подумаю над ним =) В принципе, меня устраивает и нынешнее положение вещей, система знает какие пакеты у неё установлены, а это уже хорошо =) |
strafer |
|
Темы:
18
Сообщения:
336
Участник с: 11 мая 2007
|
Конечно, вариантов решения много, и это прекрасно. Просто мой метод менее трудозатратен, но результат тот же ;) Так всетаки, во что переименовывает пакман конфиги? На будущее чтоб знать. |
iliander |
|
Темы:
2
Сообщения:
11
Участник с: 24 октября 2008
|
Да, результат тот же, но я бы не сказал, что он менее трудозатратен. Так или иначе, мне надо парсить лог pacman'а и собирать список пакетов. А дальше, не все ли равно, искать по этому списку папки с пакетами и копировать их или по списку выкачивать с инета пакеты по новой (если в кеше их нет) и делать поиск-замену рабочих конфигов на дефолтовые. |