Intereting Posts
Почему Disk Utility (Palimpsest) по умолчанию, а не GParted? SSD: поддержка SATA 3.1 и «поставленный в очередь TRIM» Я хотел бы установить 127.0.0.1 в моем resolv.conf Переключить меню lxpanelctrl в lubuntu? Скопируйте пул Unity от одного пользователя ко всем пользователям Почему контекстные меню «Копировать в» и «Переместить в» в Nautilus предлагают только «Домашний» и «Рабочий стол» в качестве параметров? Как проверить, что syndaemon отключает сенсорную панель во время ввода? Ubuntu 12.04 OpenCL с Intel и Radeon? Нужна помощь Установка Ubuntu. Мышь и клавиатура не работают во время установки, но IOMMU прерывает мою установку Установка tightvnc на Ubuntu Как подключить дисковод гибких дисков в Ubuntu 13.04? Что означает «Обработка триггеров для …» после установки / деинсталляции? grub-install: эта метка раздела GPT не содержит загрузочного раздела BIOS Как начать добычу свести к минимуму, только с помощью значка в области подноса (области уведомлений)? Проблемы с ноутбуком Wifi

Как найти самую последнюю версию пакета в репозиториях?

Как найти самую последнюю версию пакета в репозиториях в сценарии оболочки? Если я использую apt-cache-policy , я получаю установленную версию как «Кандидат», а не самую последнюю из репозиториев.

apt-cache policy nvidia-current показывает:

 nvidia-current: Installed: 280.13-0ppa~natty1 Candidate: 280.13-0ppa~natty1 Version table: *** 280.13-0ppa~natty1 0 100 /var/lib/dpkg/status 270.41.06-0ubuntu1 0 500 http://archive.ubuntu.com/ubuntu/ natty/restricted amd64 Packages 

Похоже, что установленная версия отмечена знаком *** , поэтому нужно игнорировать. Возможно, есть awk-скрипт, который можно использовать?

Я предлагаю следующий скрипт awk, к которому выводит вывод политики кэша фида:

 #!/usr/bin/awk -f /^ [^ ]/ { version = $1 } /^ \*\*\* [^ ]/ { version = $2 } /^ [^ ]/ { server = $2 if (server !~ /^\//) { print version exit } } 

Команда ниже работает:

 LANG=C apt-cache policy nvidia-current | grep '^ [^ ]' |\ sort | awk '{print $1}' | head -1 

LANG=C гарантирует, что выход согласован в разных локалях. grep соответствует набору пробелов, за которым следует непространственный символ (например, версия). awk отображает версию, которая является первым блоком без пробелов. Затем результат сортируется, и самая последняя версия должна быть доступна сверху, которая берется head .

Вы можете посмотреть на rmadison

 #! /bin/bash DEFAULT_DIST="$(ubuntu-distro-info --stable)" PACKAGE="$1" TARGET_DIST="$2" ARCH="$(dpkg --print-architecture)" if [ -z "$1" ]; then echo "Usage: $0 <PACKAGE> <DIST>" exit fi if [ -z "$TARGET_DIST" ]; then TARGET_DIST=$DEFAULT_DIST echo "Target dist not specified. Assuming $DEFAULT_DIST." fi VERSION="$(rmadison $PACKAGE -a $ARCH | grep $TARGET_DIST | cut -d "|" -f 2)" echo $VERSION 

Или однострочный:

 rmadison nvidia-current -a amd64 | grep natty | cut -d "|" -f 2