MySQL 서버를 설치하려는 설치 bash 스크립트를 작성하고 싶습니다.
Linux Mint에서는 다음 코드를 따랐습니다.
apt-get -y --force-yes install mysql-server-5.6
하지만 새 데비안 8을 설치했는데 설치되지 않았습니다 . mysql-server
대신에 .mariadb
패키지가 존재하는지 확인하는 방법은 무엇입니까?
나는 dpkg -s
패키지가 설치되었는지 알 수 있는 것을 하나만 알고 있습니다.
답변1
(다음은 Ubuntu에서 가져온 것이지만 동일한 기술이 Debian에도 분명히 적용됩니다.)
$ apt-cache show screen
Package: screen
Priority: optional
Section: misc
Installed-Size: 950
Maintainer: Ubuntu Developers <[email protected]>
Original-Maintainer: Axel Beckert <[email protected]>
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-cache
0이 아닙니다.
추가 정보:apt-cache show package
더미 패키지(존재하지 않지만 다른 패키지에서 참조됨)를 사용하는 경우 다음을 얻게 됩니다.
N: Can't select versions from package 'package' as it is purely virtual
N: No packages found
이것은 exit code
0입니다. (약간 오해의 소지가 있는 것 같습니다.)
답변2
나는 그것을 사용할 것이다 dpkg -l mysql-server &> /dev/null && echo "mysql-server is installed"
.
패키지가 설치되어 있는지 확인 mysql-server
하고 설치되어 있으면 이 사실을 화면에 인쇄합니다. 더 복잡한 솔루션은 bash에 있습니다(테스트되지 않음).
function package_exists() {
return dpkg -l "$1" &> /dev/null
}
따라서 스크립트에서 다음을 수행할 수 있습니다.
if ! package_exists mysql-server ; then
echo ”Please install mysql-server!"
fi
답변3
한 줄에:
apt-cache pkgnames | grep -q "\<$your_package_name\>"
존재하면 0으로 종료하고 존재하지 않으면 1로 종료합니다.
보너스:"packages_we_want" 파일에 나열된 여러 패키지를 한 줄에 하나씩 다음 기준으로 효과적으로 검사합니다 sort
.
apt-cache --no-generate pkgnames | sort | comm -13 - packages_we_want
원하는 모든 패키지를 나열하지만원하지 않는다저장소에 존재합니다.
apt-cache --no-generate pkgnames | sort | comm -12 - packages_we_want
저장소의 모든 필수 패키지를 나열합니다.
답변4
내 솔루션