Удалена информация об установленных пакетах

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

Так всетаки, во что переименовывает пакман конфиги? На будущее чтоб знать.
Да, результат тот же, но я бы не сказал, что он менее трудозатратен. Так или иначе, мне надо парсить лог pacman'а и собирать список пакетов. А дальше, не все ли равно, искать по этому списку папки с пакетами и копировать их или по списку выкачивать с инета пакеты по новой (если в кеше их нет) и делать поиск-замену рабочих конфигов на дефолтовые.
 
Зарегистрироваться или войдите чтобы оставить сообщение.