Как проверить от удара, если пакет существует в Debian

Вы не можете ожидать использовать собственное nvidia инструменты драйвера, когда Вы выполняете открытый исходный код nouveau драйвер.

10
20.02.2017, 06:44
4 ответа

(Ниже приведен из Ubuntu, но та же техника, очевидно, также работает на Debian)

$ apt-cache show screen
Package: screen
Priority: optional
Section: misc
Installed-Size: 950
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Axel Beckert <abe@debian.org>
Architecture: amd64
Version: 4.1.0~20120320gitdb59704-9
Depends: libc6 (>= 2.15), libpam0g (>= 0.99.7.1), libtinfo5
Suggests: iselect (>= 1.4.0-1) | screenie | byobu
Filename: pool/main/s/screen/screen_4.1.0~20120320gitdb59704-9_amd64.deb
Size: 645730
...

, если пакет существует, информация будет отображаться. Если нет, вы увидите что-то вроде:

$ apt-cache show foobar
N: Unable to locate package foobar
E: No packages found

дополнительно, выходной код APT-кэш будет не равен нулю, если совпадающие пакеты не найдены.

Дополнительное примечание: Если вы используете PACK SHOW APT-CACHEL , в котором пакет является виртуальным (тот, который не существует, но есть, например, на связи с другими пакетами) , Вы получите:

N: Can't select versions from package 'package' as it is purely virtual
N: No packages found

Выходной код это равен нулю (который немного вводит в заблуждение на мой взгляд.)

12
27.01.2020, 20:01

Я бы использовал DPKG -L MySQL-сервер &> / dev / null && echo "mysql-сервер установлен" .

Это будет проверять, установлен ли MySQL-сервер пакет, и если это так, он печатает этот факт на экран. Более сложное решение было бы, в Bash (непроверенная):

function package_exists() {
    return dpkg -l "$1" &> /dev/null
}

Так можно сделать в скрипте:

if ! package_exists mysql-server ; then
    echo ”Please install mysql-server!"
fi
4
27.01.2020, 20:01

En una -línea:

apt-cache pkgnames | grep -q "\<$your_package_name\>"

sale con 0 si está presente, 1 si no.

Bono:verificación eficiente para múltiples paquetes, enumerados en el archivo "paquetes _que _queremos", uno por línea, ordenado consort:

apt-cache --no-generate pkgnames | sort | comm -13 - packages_we_wantenumera todos los paquetes que desea, pero no existen en los repositorios.

apt-cache --no-generate pkgnames | sort | comm -12 - packages_we_wantenumera todos los paquetes que desea y existen en los repositorios.

1
27.01.2020, 20:01

Мое решение

function package_exists() {
    dpkg -s "$1" &> /dev/null
    return $?
}
if package_exists abra; then
    CLIENT=abra
elif package_exists cadabra; then
    CLIENT=cadabra
else
     echo 'Client not found!'
     exit 1
fi
1
06.07.2020, 20:29

Теги

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