apt는 "불안정한 CLI 인터페이스"경고를 제공


63

이 줄을 쓴 패키지 정보가 들어있는 파일을 읽어야하는 스크립트를 작성 중입니다.

apt show $PACKAGE_NAME > pack_info.txt

그러나 이것은 pack_info.txt파일을 생성하지 않으며 항상 다음 경고를 제공합니다.

경고 : apt에는 안정적인 CLI 인터페이스가 없습니다. 스크립트에서주의해서 사용하십시오.

당분간 나는 리디렉션 STDOUTSTDERR사용을 시도 하고 우리가 필요한 &>파일을 제공하기 위해 노력했습니다 pack_info.txt.

나는 또한 내용을 얻으려고 노력 dpkg했고 그것은 또한 효과가 있었다 :

dpkg -s $PACKAGE_NAME > pack_info.txt

경고 나 오류가 표시되지 않는 것이 좋습니다.

우리가 dpkg를 사용하지 않고 apt의 STDOUT 만 파일로 리디렉션하기를 원한다는 것은 나쁜 일입니다.

그래서 세 가지 질문이 있습니다.

  1. 안정적인 CLI 인터페이스 란 정확히 무엇을 의미합니까?
  2. 스크립트에서 이러한 명령을 안전하고 오류없이 사용하는 방법은 무엇입니까? [예를 들어 설명해주세요]
  3. STDOUT을 apt show파일 로만 리디렉션하는 방법이 있습니까?

답변:


80

apt터미널 용이며 동시에 아름다운 출력을 제공 apt-get하고 apt-cache스크립트하고 안정적인, 구문 분석 출력을 제공합니다. apt show따라서 명령 과 동등한 스크립트 는 다음과 같습니다.

apt-cache show $PACKAGE_NAME >pack_info.txt

이제 질문에 하나씩 답하십시오.

안정적인 CLI 인터페이스 란 정확히 무엇을 의미합니까?

apt의 출력은 스크립트에서 잘 사용할 수 없습니다. 예를 들어 apt install(와 비교 apt-get install)는 스크립트에 쓸모없는 진행률 표시 줄을 표시하며 출력을 구문 분석 할 때 오류가 발생할 수 있습니다. apt show firefox스크립트에서 전혀 쓸모없는 추가 레코드에 대한 힌트를 보여줍니다. 모든 레코드 를 단순히 출력하기를 원합니다 apt-cache show firefox. man apt그것에 대해 무엇 을 말해야 하는지 보자 .

APT (8) 커맨드는 최종 사용자 도구로 설계이며 버전 간의 동작을 변경할 수있다. 이전 버전과의 호환성을 유지하려고 시도하지 않지만 대화식 사용에 변경 사항이 도움이되는 경우에도 보장되지 않습니다.

apt (8) 의 모든 기능은 apt -get (8) 및 apt-cache (8) 와 같은 전용 APT 도구에서도 사용할 수 있습니다. apt (8)은 일부 옵션의 기본값을 변경합니다 ( apt.conf (5) 및 특히 이진 범위 참조). 따라서 가능한 한 이전 버전과의 호환성을 유지하므로 스크립트에서 이러한 명령을 사용하는 것이 좋습니다 (일부 추가 옵션이 활성화 된 경우).


스크립트에서 이러한 명령을 안전하고 오류없이 사용하는 방법은 무엇입니까?

그냥 사용 apt-get또는 apt-cache대신 일반의 각각 apt. :) 해당 목록을 보려면 이 답변 을 참조하십시오 .


apt show의 STDOUT을 파일로만 리디렉션하는 방법이 있습니까?

이미 올바르게 수행 >file했거나 1>filestdout을 2>file리디렉션하고 stderr를 &>file리디렉션하고 둘 다로 리디렉션합니다 file.

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