Вы не можете ожидать использовать собственное nvidia
инструменты драйвера, когда Вы выполняете открытый исходный код nouveau
драйвер.
(Ниже приведен из 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
Выходной код
это равен нулю (который немного вводит в заблуждение на мой взгляд.)
Я бы использовал 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
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_want
enumera todos los paquetes que desea, pero no existen en los repositorios.
apt-cache --no-generate pkgnames | sort | comm -12 - packages_we_want
enumera todos los paquetes que desea y existen en los repositorios.
Мое решение
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