파일을 사용하여 apt-get으로 패키지 설치


9

brewfiles, caskfiles, dockerfiles, package.json 등과 같은 패키지 파일을 통해 새 컴퓨터에 패키지를 설치하는 것이 매우 편리하다는 것을 알았습니다.

나는 여전히
커맨드 라인을 통해 그것을 사용하기 때문에 apt-get에 대한 대안이 있습니까?

apt-get install pkg1 pkg2 pkg3…

?


2
필요합니까? 당신은 사용할 수 있습니다 xargs: xargs -P1 apt-get install < list-of-packages.
muru

@muru 잘 xargs가 어떻게 작동하는지 잘 모르지만 (지금 읽는 사람) 패키지가 하나의 파일로 중앙 집중화되는 솔루션이라고 생각하지 않습니까? 세 개의 패키지가있는 .txt 파일을 사용하기 때문에 <다음에 파일을 수동으로 나열해야합니다 (Debian에서 테스트)
thibmaek

1
<쉘 리디렉션입니다. 여러 파일의 경우 다음을 사용하십시오.cat file1 file2 .. | xargs -P1 apt-get install
muru

답변:


13

질문의 의견에 명시된 바와 같이, packages.txt설치할 패키지를 나열 하는 간단한 텍스트 파일을 빌드 할 수 있습니다 .

iceweasel
terminator
vim

다음 명령을 실행하십시오.

cat packages.txt | xargs sudo apt-get install

xargs는 packages.txt파일에서 명령 행으로 패키지 이름을 전달하는 데 사용됩니다 . 매뉴얼 페이지에서 :

xargs는 표준 입력에서 항목 (공백 (작은 따옴표 나 백 슬래시 또는 백 슬래시로 보호 할 수 있음) 또는 개행 문자로 구분됨)을 읽고, 초기 인수와 함께 명령 (기본값은 / bin / echo)을 한 번 이상 실행합니다. 표준 입력에서 읽은 항목 별.


9

@ ortomala-lokni의 대답을 조금 개선하면 파일을 다음과 같은 인수로 직접 지정할 수 있습니다 xargs.

xargs -a packages.txt sudo apt-get install

선택적 으로 공백이 아닌 문자가 포함되지 않은 경우 통화 가 전혀 실행 되지 않도록 xargs하는 -r옵션을 제공 할 수 있습니다 .apt-getpackages.txt


이것은 Alpine / BusyBox의 특징 일 수 있지만 -a인수는 문서화되어 있지 않으며 거기서 작동하지 않는 것 같습니다 xargs: unrecognized option: a. 내 버전 출력은 다음과 같습니다BusyBox v1.27.2 (2017-12-12 10:41:50 GMT) multi-call binary.
Taylor Edmiston

수락 된 답변을 사용하면 apt의 Y / n 쿼리가 중단되었습니다. 이것을 사용하면 효과가 있습니다. 감사!
Ok Letsdothis

1

여기에 이미지 설명을 입력하십시오

그것은 나를 위해 두 가지 방법으로 작동하거나 최신 xargs가 있는지 확인하거나 그렇지 않으면 help 옵션을 사용하여 -a 옵션이 있는지 여부를 확인하십시오 (xargs --help)


5
이 답변에는 접근성 문제가 있습니다. 이미지의 텍스트는 시각 장애인이 읽을 수 없습니다.
ctrl-alt-delor

0

보다 일반적인 스크립팅 솔루션뿐만 아니라 deb 패키지를 만들 수 있습니다.

필요할 것이예요

  • equivs-build, 토론을 구축합니다. deb는 종속성 만 포함 할 수 있습니다. 이것은 단순화 된 deb 빌더입니다.
  • gdebi deb를 설치합니다.

이것은 모든 데비안 기반 시스템 (apt / deb 파일을 사용하는 시스템)에서 작동합니다.

쉘 스크립트와 달리 deb 파일로 파일을 사용하면 실행 취소가 훨씬 쉽고, deb를 제거하거나, deb를 다시 구성하고, 다시 설치할 수 있습니다 (파일이 손상 될 수 있음) 추가 및 제거).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.