Похоже, вы перевели свою систему в странное частично обновленное состояние, но частичные обновления не поддерживаются .Решение состоит в следующем:
Простой pacman -Syu для правильно синхронизированного зеркала решит проблему, если pacman не сломан.
Ваша проблема в том, что pacman
кажется сломанным. Возможно, вам повезет, и вы сможете исправить ситуацию, просто отключив подписку пакет . Если вас беспокоит безопасность, вы можете вручную загрузить нужные вам пакеты на другой компьютер, проверить их подписи, а затем добавить их в кеш пакетов на сломанном компьютере.
Если на самом деле pacman
не работает, вам необходимо вручную переустановить pacman . Это в основном требует, чтобы вы загрузили зависимости pacman и вручную извлекли их в нужные места. Какие пакеты необходимо переустановить, зависит от точного состояния вашей системы.
new_file="$(find dir/ -type f -exec stat --printf='%n\0%Y\n' {} + | sort -k2,2 -nt '\0' | tail -n1 | cut -d '' -f1)"; tar -zcf foo.tar.gz dir/; touch -r "$new_file" foo.tar.gz
Пример того, что происходит
tar -zcf foo.tar.gz dir /; touch -r fileX foo.tar.gz
Вы должны изменить foo.tar.gz , dir / в приведенной выше команде
Она
Вероятно, не существует единственного варианта (во всяком случае, в POSIX). Я использую скрипт (touch-dirs) для установки временных меток каталогов в соответствии с самой последней временной меткой файлов в каталоге, а затем использую эту временную метку для результирующего архива.
Этот последний шаг можно сделать, используя опцию -r
(ссылка) в touch
. На самом деле я тоже не использую эту опцию, а вместо нее пользуюсь утилитой (cpd
).