Любовь ответа от @kbeta. Однако subprocess.check_output()
был только представлен в python 2.7 - таким образом, вот версия offlineimap.py
это будет работать с более старыми версиями Python:
import os
import subprocess
def mailpasswd(acct):
acct = os.path.basename(acct)
path = "/home/hamish/.passwd/%s.gpg" % acct
args = ["gpg", "--use-agent", "--quiet", "--batch", "-d", path]
proc = subprocess.Popen(args, stdout=subprocess.PIPE)
output = proc.communicate()[0].strip()
retcode = proc.wait()
if retcode == 0:
return output
else:
return ''
Определенно ничего не сломано. Когда пакет установлен, часто есть другие пакеты, от которых он зависит. Они будут автоматически установленными apt-get
. Раньше вам приходилось использовать отдельную программу, если вы хотели отслеживать эти пакеты, и удалять их, если вы когда-либо удаляли исходную программу, которую вы установили.
Теперь apt
реализует флаг состояния Автоустановка
, чтобы отслеживать эти пакеты, которые никогда не устанавливались явно.Когда вы удаляете пакет, вы можете добавить опцию - auto-remove
, чтобы дополнительно удалить все пакеты, для которых установлен флаг Auto-Installed
и больше нет пакетов, которые от него зависят. наличие (пакет также может быть сохранен, если другой предлагает или рекомендует его, в зависимости от значения параметров конфигурации APT :: AutoRemove :: RecommendsImportant
и APT :: AutoRemove :: SuggestsImportant
).
Я бы посмотрел на список пакетов и решил, стоит ли их хранить, иногда пакеты, которые вы можете оставить, по умолчанию помечены Автоустановленные
. Вы можете получить информацию о том, что делают различные пакеты, выполнив apt-cache show package_name
. Если вы решите оставить себе,вы можете использовать apt-mark manual
, за которым следует имена пакетов, которые вы хотите сохранить.
Обратите внимание, что обычно вам нужно иметь пакеты библиотек (большинство пакетов, начинающихся с lib
), помеченных как Автоустановка
, поскольку существует несколько причин для установки этих пакетов отдельно - для других программ обычно требуются другие библиотеки, но от них мало пользы. Даже если вы компилируете программное обеспечение для библиотеки, вам понадобится пакет разработки (оканчивающийся на -dev
), который зависит от самой библиотеки, поэтому нет необходимости явно устанавливать библиотеку.
Также используя aptitude
, вы можете выполнить aptitude unmarkauto
из командной строки или изменить в интерфейсе curses. В списках пакетов в интерфейсе все автоматически устанавливаемые пакеты имеют рядом с собой A
. Вы можете изменить это состояние, используя m
, чтобы пометить автоматически установленный пакет как ручной, и M
, чтобы снова пометить его как ручной (также l
, чтобы открыть диалоговое окно поиска и Введите
, чтобы просмотреть сведения о пакете).
Почему бы не удалить их с помощью команды, предложенной apt-get, то есть apt-get autoremove
?
Если они были установлены в Kali по умолчанию и использовались предыдущим веб-браузером, и больше не используются сейчас, когда вы удалили этот браузер, это не будет проблемой.
Кроме того, если когда-нибудь снова понадобится один из пакетов, установите его явно с помощью apt-get
, и он не будет отображаться как «устанавливается автоматически и больше не требуется».
Другим решением может быть установка их вручную. Они больше не будут помечены как «автоматически устанавливаются и больше не требуются» в apt-get, но у вас будут бесполезные пакеты, что не является лучшим решением IMO.
Чтобы пометить все эти пакеты, чтобы они важны и не были удалены, сделайте это:
apt-mark showauto | xargs sudo apt-get -y install
в основном, рассказывая APT
для установки программы, которую вы это говорите Что вы хотите, чтобы он остался на системе постоянно.