Наиболее заметное отличие - это aptitude
обеспечивает интерфейс меню терминалов (во многом как Синаптический в терминале), тогда как apt-get
не делает.
Рассматривая только интерфейсы командной строки каждого, они весьма схожи, и по большей части, это действительно не имеет значения, какой Вы используете. Последние версии и отследят, какие пакеты были вручную установлены, и которые были установлены как зависимости (и поэтому имеющие право на автоматическое удаление). На самом деле я полагаю, что еще позже, эти два инструмента были обновлены для фактического совместного использования той же базы данных вручную по сравнению с автоматически установленными пакетами, таким образом, случаи, где Вы устанавливаете что-то с Кв. - добираются, и затем способность хочет удалить ее, главным образом вещь прошлого.
Существует несколько незначительных различий:
Существуют другие небольшие различия, но это - самые важные, о которых я могу думать.
Короче говоря, способность более правильно принадлежит категории с Синаптическим и другим высокоуровневым диспетчером пакетов frontends. Это просто, оказывается, также имеет интерфейс командной строки, который напоминает склонный - добираются.
Помните, как я упомянул те "сопутствующие" инструменты как способный кэш и способная метка? Ну, существует набор их, и если Вы используете их много, Вы не могли бы помнить, которые обеспечивают который команды. wajig является одним решением той проблемы. Это - по существу диспетчер, обертка вокруг всех тех инструментов. Это также применяет sudo при необходимости. Когда Вы говорите wajig install foo
, wajig говорит "хорошо, install
обеспечивают apt-get
и требует административных привилегий", и это работает sudo apt-get install foo
. Когда Вы говорите wajig search foo
, wajig говорит "хорошо, search
обеспечивают apt-cache
и не требует административных привилегий", и это работает apt-cache search foo
. Если Вы используете wajig вместо Кв. - добираются, способная метка, способный кэш и другие, то у Вас никогда не будет этой проблемы:
$ apt-get search foo
E: Invalid operation search
Если Вы хотите знать то, что wajig делает негласно, какие инструменты он использует для реализации конкретной команды, он имеет --simulate
и --teaching
режимы.
Два wajig управляют, чтобы я часто использовал, wajig listfiles foo
и wajig whichpkg /usr/bin/foo
.
Для современных версий apt
существует определенный переключатель для этого:
apt list --upgradable
Для старого apt-get
управляйте -u
переключитесь показывает список пакетов, которые доступны для обновления:
# apt-get -u upgrade --assume-no
От apt-get
страница справочника:
- u
- обновленное до шоу Шоу обновило пакеты; Распечатайте список всех пакетов, которые должны быть обновлены. Элемент конфигурации: APT:: Доберитесь:: обновленный до шоу.
- примите - нет Автоматический "нет" ко всем подсказкам. <==, Чтобы препятствовать тому, чтобы он начал устанавливать
Смотрите на пакет "apticron":
apticron - Инструмент Simple к почте о незаконченных обновлениях пакета
Apticron является простым сценарием, который ежедневно посылает электронные письма о незаконченных обновлениях пакета, таких как обновления системы защиты, правильно обрабатывая пакеты в ожидании и dselect и способностью.
Можно работать
aptitude -F%p --disable-columns search ~U
или недокументированное
/usr/lib/update-notifier/apt-check -p; echo
Другой метод с помощью apt-get
моделирование:
apt-get -s dist-upgrade | awk '/^Inst/ { print $2 }'
mypool/home
---------121 склонный--------188152----получает работы dist-обновления-s, хорошие также, и имеет тот же вывод, когда Вы передаете его по каналу через тот awker
– ychaouche
09.02.2017, 11:28
dist-upgrade
но не проигрывают, некоторые пакеты так должны были использовать aptitude
. aptitude install $(apt-get -s dist-upgrade | awk '/^Inst/ { print $2 }')
добился цели!
– Jayen
03.12.2017, 12:18
Другая опция, вдохновленная enzotib:
aptitude search '~U' | wc -l
Эта команда будет использовать способность для вывода новых пакетов и затем туалета, чтобы просто считать строки.
На заметке на полях я нашел, что решение enzotib без одинарных кавычек вокруг ~U не работало на меня. (Хрипящий, ZSH, способность 0.6.8.2)
Обновление:
С новой Кв. можно сделать теперь:
apt list --upgradable
apt-get --just-print upgrade
Не читается, что легко, ниже жемчуг один лайнер для парсинга способного-get's вывода:
apt-get --just-print upgrade 2>&1 | perl -ne 'if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "PROGRAM: $1 INSTALLED: $2 AVAILABLE: $3\n"}'
Это должно произвести что-то как:
PROGRAM: grub-pc INSTALLED: 1.99-21ubuntu3.1 AVAILABLE: 1.99-21ubuntu3.9
Надо надеяться, это поможет кому-то еще,
column
как это: apt-get --just-print upgrade 2>&1 | perl -ne 'if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "PROGRAM: $1 INSTALLED: $2 AVAILABLE: $3\n"}' | column -s " " -t
– AntonioK
14.07.2015, 14:35
apt-get update && apt-get -s upgrade
перечислит доступные обновления без фактической установки.
Сначала индексные файлы пакета обновлений команды, прежде чем моделируется (таким образом-s) обновление сделаны. "-s" сделает моделируемый показ обновления пакеты, которые были бы установлены, но ничего на самом деле не установят.
Наоборот "-u" вместо "-s" на самом деле установил бы после подтверждения.
-s, --simulate, --just-print, --dry-run, --recon, --no-act
, переобманный и пробный прогон является моими любимыми.
– ThorSummoner
17.12.2015, 19:24
Мне нужна была полная информация о возможных обновлениях, поэтому я использовал модификацию ответа Jasonwryan:
apt-get -V -u upgrade
Она проста и имеет разумное форматирование по IMO.
files=$(echo $line/processed/*)
yafc ftp://blabla@192.168.178.54 <<**
put $files
close
quit
**
Команда find
разделяет найденные файлы на новые (по одному файлу на строку). Поскольку вам фактически не нужна функциональность поиска, вы можете использовать files = $ (echo $ line/processed/*)
.
Здесь документ расширен до
put file1
file2
file3
...
Когда вы пробовали цикл, вы не использовали кавычки, поэтому новые строки были интерпретированы как разделители полей, и поэтому каждый файл был разделен добавляемым космосом.
При использовании простого files = $ (echo $ line/processed/*)
$ files
теперь просто имеет места между файлами, поэтому положить $ files
должны делать то, что вы хотите.
Это действительно плохая идея , но вы можете передать пароль при стандартном вводе:
passwd --stdin test-user <<< "Password here?"
-121--146154- Просто отфильтруйте вывод
apt-get update && apt-get -s -V -u upgrade
, чтобы в журнале была только предпочитаемая информация.
Скорее всего, вам понадобится красивая часть после строки
...
Следующие пакеты будут обновлены:
...
, которая имеет мало места в начале.
Вызовите еще одного на линию, вдохновленный этим ответом :
function a { read input;dpkg -l ${input} | grep " ${input} " | awk '{$1=$2=$3=$4="";print $0}' | sed 's/^ *//';unset input;};{ apt-get --just-print upgrade 2>&1 | perl -ne 'if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "$1 (\e[1;34m$2\e[0m -> \e[1;32m$3\e[0m)\n"}';} | while read -r line; do echo -en "$line $(echo $line | awk '{print $1}' | a )\n"; done;
Выход выглядит так (цветной):
locales (2.13-38+deb7u7 -> 2.13-38+deb7u8) Embedded GNU C Library: National Language (locale) data [support]
linux-headers-3.2.0-4-amd64 (3.2.65-1+deb7u1 -> 3.2.65-1+deb7u2) Header files for Linux 3.2.0-4-amd64
linux-headers-3.2.0-4-common (3.2.65-1+deb7u1 -> 3.2.65-1+deb7u2) Common header files for Linux 3.2.0-4
sudo (1.8.5p2-1+nmu1 -> 1.8.5p2-1+nmu2) Provide limited super user privileges to specific users
Если вы не хотите, чтобы короткое описание использовалось это:
{ apt-get --just-print upgrade 2>&1 | perl -ne 'if (/Inst\s([\w,\-,\d,\.,~,:,\+]+)\s\[([\w,\-,\d,\.,~,:,\+]+)\]\s\(([\w,\-,\d,\.,~,:,\+]+)\)? /i) {print "$1 (\e[1;34m$2\e[0m -> \e[1;32m$3\e[0m)\n"}';} | while read -r line; do echo -en "$line\n"; done;
Выход:
locales (2.13-38+deb7u7 -> 2.13-38+deb7u8)
linux-headers-3.2.0-4-amd64 (3.2.65-1+deb7u1 -> 3.2.65-1+deb7u2)
linux-headers-3.2.0-4-common (3.2.65-1+deb7u1 -> 3.2.65-1+deb7u2)
sudo (1.8.5p2-1+nmu1 -> 1.8.5p2-1+nmu2)
Написав предупреждение на ответ @ jasonwryan, я хочу предоставить свое собственное решение:
apt-get dist-upgrade --assume-no
К сожалению, это не работает с debian wheezy, и мне пришлось проверить некоторые контейнеры lxc, которые все еще не обновлены. Эта форма будет работать всегда:
apt-get dist-upgrade </dev/null
Наконец, я также хотел переформатировать вывод. Я решил изменить вызов еще раз (используя - пробный прогон
, но игнорируя весь дополнительный вывод), потому что это кажется более безопасным:
apt-get --dry-run dist-upgrade | awk '
BEGIN{p=0}
/^The/{p=1;t=$0}
/no longer required/{p=0}
#optional: /been kept back/{p=0}
p && t{print t;t=""}
/^ / && p{print $0}
'
Возвращает:
The following packages have been kept back:
iproute
The following packages will be upgraded:
unzip
apt-check
, вероятно, самый эффективный метод написания сценариев.
/usr/lib/update-notifier/apt-check 2>&1 | cut -d ';' -f 1
Очень небольшая модификация показывает только обновления безопасности.
/usr/lib/update-notifier/apt-check 2>&1 | cut -d ';' -f 2
В качестве варианта я использую следующее:
apt-get -V -s dist-upgrade \
|grep -E "^ .*=>.*" \
|awk 'BEGIN {
ul=sprintf("%*s",40,""); gsub(/ /,"-",ul);
printf "%-30s %-30s %-30s\n", "Package", "Installed", "Available";
printf "%-30.30s %-30.30s %-30.30s\n", ul, ul, ul;
}
{
printf "%-30s %-30s %-30s\n",
$1,
substr($2,2),
substr($4,1,length($4)-1)
}'
Вставьте его в сценарий с именем apt-updates
, и вы можете затем вызвать apt-updates
, чтобы получить список всех обновлений независимо от пользователя.
Вам по-прежнему нужно вызвать apt-get update
с привилегированным доступом.
apt-get update > /dev/null && apt-get --just-print upgrade | grep "Inst "
является самым простым для писем cron; нет пользовательской итерации, а если нет обновлений, то нет и вывода.
Мне нравится использовать это:
apt-get -qq update && apt-get -qq -s upgrade
Вы получите вывод, подобный этому:
Inst linux-base [3.5] (4.5~deb8u1 Debian-Security:8/oldstable [all])
Conf linux-base (4.5~deb8u1 Debian-Security:8/oldstable [all])
, если есть доступные обновления, и нет, если их нет. Таким образом, вы можете просто соединить его с решением для мониторинга.
-u
опция по умолчаниюapt-get
– Daniel Alder 01.11.2015, 15:17