Для ваших попыток 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]
.
Вам также необходимо сообщить PAM
, что вы хотите разрешить пустые пароли. Это описывается в некотором устаревшем руководстве . Но вкратце:
sudo sed -i 's/nullok_secure/nullok/' /etc/pam.d/common-auth
должен работать.
Чтобы правильно защитить ssh-доступ, вы должны не разрешать вход без аутентификации. Настройте ключ RSA для аутентификации, и тогда клиент сможет использовать его вместо пароля.