dpkg -s
자동 설치를 통한 프로그래밍 방식 사용법
내가 좋아하는 dpkg -s
그 상태로 종료로 1
패키지 중 하나가 설치되어 있지 않은 경우 쉽게 자동화 할 수 그것을 만드는 :
pkgs='qemu-user pandoc'
if ! dpkg -s $pkgs >/dev/null 2>&1; then
sudo apt-get install $pkgs
fi
man dpkg
불행히도 종료 상태를 문서화하지는 않지만 그것에 의존하는 것이 합리적으로 안전해야한다고 생각합니다.
-s, --status package-name...
Report status of specified package.
주목해야 할 것은 실행 중입니다.
sudo apt remove <package-name>
일부 패키지에 대해 반드시 모든 파일을 즉시 제거 할 필요는 없지만 (다른 이유는 확실하지 않습니까?) 패키지를 제거 대상으로 표시합니다.
이 상태에서는 패키지를 계속 사용할 수 있으며 파일이 여전히 존재하지만 나중에 제거하도록 표시되어 있습니다.
예를 들어 다음을 실행하는 경우 :
pkg=certbot
sudo apt install -y "$pkg"
dpkg -s "$pkg"
echo $?
sudo apt remove -y "$pkg"
dpkg -s "$pkg"
echo $?
ls -l /usr/lib/python3/dist-packages/certbot/reporter.py
sudo apt remove --purge certbot
dpkg -s "$pkg"
echo $?
ls -l /usr/lib/python3/dist-packages/certbot/reporter.py
그때:
처음 두 echo $?
출력 0
, 세 번째 출력 만1
첫 번째 출력 dpkg -s certbot
에는 다음이 포함됩니다.
Status: deinstall ok installed
두 번째는 말합니다 :
Status: deinstall ok config-files
퍼지 후에 만 사라집니다.
dpkg-query: package 'certbot' is not installed and no information is available
파일 /etc/logrotate.d/certbot
은 이후에도 시스템에 존재 apt remove
하지만 이후 에는 존재하지 않습니다.--purge
.
그러나 파일 /usr/lib/python3/dist-packages/certbot/reporter.py
은 이후에도 계속 존재 --purge
합니다.
이유를 이해하지 못하지만 hello
두 번째 패키지 dpkg
이후에 apt remove
패키지가 이미 제거되지 않은 것으로 나타났습니다 --purge
.
dpkg-query: package 'hello' is not installed and no information is available
다음과 같은 문서도 매우 명확하지 않습니다.
sudo apt dselect-upgrade
제거하지 않은 certbot
것처럼이 표시 될 때 deinstall
, 비록 man apt-get
나타 내기 위해 같다 :
dselect-upgrade
전통적인 데비안 패키징 프론트 엔드, dselect (1)와 함께 사용됩니다. dselect-upgrade는 dselect (1)가 사용 가능한 패키지의 Status 필드로 변경 한 내용을 따르고 해당 상태를 실현하는 데 필요한 작업 (예 : 이전 패키지 제거 및 새 패키지 설치)을 수행합니다.
또한보십시오:
우분투에서 테스트 19.10.
파이썬 apt
패키지
사전 설치된 Python 3 패키지가 있습니다. apt
Python apt 인터페이스를 제공하는 Ubuntu 18.04 있습니다!
패키지가 설치되어 있는지 확인하고 찾을 수없는 경우 설치하는 스크립트 : python-apt API를 사용하여 패키지를 설치하는 방법
다음은 참조 용 사본입니다.
#!/usr/bin/env python
# aptinstall.py
import apt
import sys
pkg_name = "libjs-yui-doc"
cache = apt.cache.Cache()
cache.update()
cache.open()
pkg = cache[pkg_name]
if pkg.is_installed:
print "{pkg_name} already installed".format(pkg_name=pkg_name)
else:
pkg.mark_install()
try:
cache.commit()
except Exception, arg:
print >> sys.stderr, "Sorry, package installation failed [{err}]".format(err=str(arg))
PATH
대신 실행 파일이 있는지 확인하십시오.
Bash 스크립트에서 프로그램이 있는지 어떻게 확인합니까?를 참조하십시오.