Поиск пакетов в различных состояниях с помощью aptitude

В оболочке установка переменных будет выполняться с помощью:

var1=toto
var2="$(echo toto | othercommand)"

У вас не может быть пробелов между вашим именем переменной, символом равенства и значением, которое вы присваиваете своей переменной.

Затем, чтобы отобразить переменную, вы должны сделать:

echo $var
echo "$var"
echo "${var}"

Символ & в bash / sh используется для «управления заданиями», что является еще одной темой, ...

Вместо этого начните с использования следующего, расскажите нам, как это происходит:

#! /bin/sh

while true;do
    var="$(echo "RDTEMP1" | netcat -q2 sanderpi 5033)"
    echo "$var"
    echo "$(date +%Y-%m-%d%t%H:%M:%S)"
done
2
18.11.2016, 01:45
2 ответа

Для ваших попыток aptitude важно отметить, что ~ не означает «ищите следующее flags в статусе пакета '. ~ i - это сокращение для ~ installed , а затем d интерпретируется как литерал d , то есть пакеты, имена которых содержат буква d . Я просмотрел документацию для aptitude ( / usr / share / doc / aptitude / html / en / index.html в моей системе) для шаблона поиска, который удовлетворил бы ваш вопрос, но я не уверен, что это возможно. ~ action может помочь вам на полпути, но я тоже не уверен в получении статуса.


Альтернативой использованию aptitude является использование dpkg-query с grep .

dpkg-query -Wf '$ {db: Status-Abbrev} $ {Package} \ n' | grep ^ r

Это будет искать пакеты, которые находятся в состоянии удалено , но не очищены.

dpkg-query -Wf '$ {db: Status-Abbrev} $ {Package} \ n' | grep ^ i [^ i]

Это будет искать пакеты, отмеченные как установленные , но не полностью установленные. Если вы не хотите включать пакеты, ожидающие обработки триггерами, вы можете вместо этого использовать ^ i [ncHUF] .


Чтобы получить только второй столбец вывода (имя пакета), вы можете использовать sed :

dpkg-query -Wf '$ {db: Status-Abbrev} $ {Package} \ п '| sed -n 's / ^ rR \? \ s * // p'

для поиска удаленных пакетов и

dpkg-query -Wf '$ {db: Status-Abbrev} $ {Package} \ n' | sed -n 's / ^ i [^ i] R \? \ s * // p'

, чтобы найти пакеты, которые нужно установить, но не полностью.


Чтобы немного подробнее рассказать об этом, пакеты Debian состоят из двух частей:

  • Действие , предназначенное для выполнения над пакетом. Это может быть установка пакета, удаление пакета, удержание пакета или очистка пакета.

  • статус пакета , который описывает фактическое состояние пакета в вашей системе.

Вышеупомянутый вызов dpkg-query перечисляет действие и статус пакета, по одному символу каждый, продолжая имя пакета в начале каждой строки.

Чтобы найти пакеты, которые были удалены, но не очищены, мы просто ищем пакеты с действием «удалить»: grep ^ r . Чтобы найти пакеты, которые установлены или предназначены для установки, но еще не настроены, мы ищем пакеты, действие которых равно установить , но статус которых отличается от установлен : grep ^ i [^ i] .

2
27.01.2020, 22:04

Удален, но не очищен: ~ c (? Config-files ).

Установленные, но не настроенные, отслеживаются не apt, а только dpkg. У пакета есть два состояния: актуальное и желаемое. Apt заботится только о желаемом состоянии. Установлено желаемое состояние пакета, который установлен, но не настроен.

См. ответ Дилана Фрезе для запросов dpkg.

1
27.01.2020, 22:04

Теги

Похожие вопросы