일괄 설치를 위해 텍스트 파일에 저장된 패키지 이름을 주석 처리하는 방법은 무엇입니까?

일괄 설치를 위해 텍스트 파일에 저장된 패키지 이름을 주석 처리하는 방법은 무엇입니까?

아래 설명된 대로 "packages.txt"(또는 원하는 항목)에서 apt-get 패키지를 일괄 설치하고 있습니다.파일을 사용하여 apt-get을 통해 패키지 설치.

"terminator" apt 패키지를 주석 처리합니다.

iceweasel
#terminator
vim

오류 발생:

The command '/bin/sh -c xargs -a /tmp/packages.txt apt-get install -y' returned a non-zero code: 123

반대로 여기처럼 Dockerfile 대신 Python에 대해 "requirements.txt"를 입력하면 #.

RUN pip install --no-cache-dir --upgrade pip && \
    pip install --no-cache-dir -r /tmp/requirements.txt

"requirements.txt" 사용:

python3-pip
mysql-client
#mysql-server
libmysqlclient-dev
python3-dotenv

결과: mysql-server건너뛰었습니다.

"packages.txt"에서 적절한 패키지를 어떻게 주석 처리합니까?

답변1

패킷을 보내기 전에 패킷 목록을 필터링하십시오 xargs.

grep -v '^#' /tmp/packages.txt | xargs -r sudo apt-get install -y

호출 -r에 추가하면 모든 행이 주석 처리될 때 아무 일도 일어나지 않도록 합니다.xargspackages.txt

답변2

일반 텍스트 파일 처리를 피하고 싶다면 다음을 packages.txt개발했습니다.sysdep도구바로 이 목적을 위해서입니다. toml일반 텍스트 파일 대신 파일에서 읽는 간단한 도구입니다 . 이것은 다음 과 toml같은 것을 만듭니다 apt.pyproject.tomlcargo.toml

  1. 다음으로 다운로드

    curl -L https://github.com/Benjamin-Tan/sysdep/releases/latest/download/sysdep-$(arch)-unknown-linux-gnu.tar.gz | tar -xz -C ~/.local/bin
    
  2. 만들다system_dependencies.toml

    [dependencies]
    apt = ["libpackage", "libpackage2"]
    
  3. sysdep list종속성을 나열하려면 "libpackage", "libpackage2"가 표시되어야 합니다.

  4. sysdep install설치하세요

  5. sysdep추가 옵션을 보여주는 도움말 페이지

관련 정보