패키지 목록을 가져오는 명령을 어떻게 실행합니까?

패키지 목록을 가져오는 명령을 어떻게 실행합니까?

아래와 같이 데비안 테스트에서 Gnome 3를 설치해 봅니다.이 설명. 그러나 이것은 작동하지 않으며 GUI가 없습니다.

현재 문제를 해결하려고 시도한 결과 수동 설치로 표시된 패키지 목록이 길다는 것을 깨달았습니다. 제 생각에는 자동 설치로 표시되어야 하는 패키지 목록(거의 모든 패키지)을 (개행으로 구분하여) 저장합니다.

apt-mark auto이제 나는 이 목록 에 출마하고 싶습니다 .

어떻게 해야 하나요?

추신: 누군가가 나에게 이것이 좋은 생각이 아니라고 말한다면(그렇지 않다면) 나도 감사하겠습니다.

답변1

xargs를 사용할 수 있습니다.

 cat /path/to/file | xargs apt-mark auto

이 방법은 텍스트 파일의 한 줄에 하나의 패키지 이름만 있는 경우에 작동합니다 /path/to/file.

또 다른 옵션은 for 루프를 사용하는 것입니다.

 for pkg in `cat /path/to/file`; do apt-mark auto $pkg; done

두 번째 접근 방식은 인수 목록을 사용하여 명령을 호출할 수 없지만 각 인수에 대해 한 번씩 호출해야 하는 유사한 문제가 있는 경우 유용할 수 있습니다. 그러나 귀하의 경우에는 확실히 그렇게 우아하지 않습니다... :)

그런데, 나는 당신이 bash를 사용하고 있다고 가정합니다.

노트:내 시스템에서는 apt-mark --help다음과 같이 말합니다.

Usage: apt-mark [options] {markauto|unmarkauto} packages...

그리고:

apt-mark is deprecated, use apt-get markauto/unmarkauto.

답변2

apt-mark auto한 번에 파일 목록을 파일로 덤프 하려는 것 같습니다 . 다음 의사코드를 사용하면 시작됩니다.

while read pkgname; do apt-mark auto $pkgname; done <list_of_packages

답변3

다음 스크립트를 실행하세요.python scriptname.py list-of-packages.txt 루트 사용자로:

import subprocess
import sys

filename = sys.argv[1]
with open(filename) as f:
    packages = f.read()
    packages = packages.split()
    packages = " ".join(packages)
    cmd = "apt-mark auto " + packages
    subprocess.call(cmd, shell=True)

이것이 문제가 되지 않기를 바랍니다.GNOME이 있다는 것은 이미 Python이 설치되어 있다는 의미입니다..

관련 정보