Alpine과 "일반" Linux(예: Ubuntu) 간의 coreutils 비호환성 찾기

Alpine과 "일반" Linux(예: Ubuntu) 간의 coreutils 비호환성 찾기

작동하지 않는 gitlab 빌드로 인해 어려움을 겪고 있었습니다.

인쇄할 수 없는 일부 콘텐츠를 제거하여 psql의 출력을 정리해야 했는데 다음 명령을 찾았습니다.

<psql invoke> | tr -cd [:print:]

로컬(Ubuntu)에서 테스트해 보았는데 변경 사항을 커밋했지만 파이프라인이 실패했습니다. 디버그 출력을 추가하려고 몇 번 시도한 후 (Alpine 기반) 이미지에 로그인 docker:latest했는데 .tr[:print:]

coreutils를 호출하는 스크립트가 여러 개 있는데 이제 모두 Alpine과 호환되지 않을 수 있습니다. Alpine의 coreutil과 Ubuntu와 같은 일반 Linux의 coreutil 사이에 어떤 비호환성이 있는지 확인하는 방법은 무엇입니까? 두 가지 모두에서 쉘 스크립트를 실행하려면 어떤 조정이 필요합니까?

답변1

우분투는 GNU coreutils를 사용합니다. 알파인은 비지박스를 사용합니다. Busybox는 작은 실행 파일 제공을 강조하므로 GNU 유틸리티보다 더 효율적인 경향이 있습니다. Alpine에서 무엇이 실행될지 결정하는 가장 확실한 방법은 busybox 프로젝트의 매뉴얼 페이지나 기타 문서를 읽거나 busybox 자체를 사용하여 설치하고 테스트하는 것입니다. 일반적으로 를 입력하는 경우 대신 사용 tr하여 busybox tr결과가 예상한 것과 같은지 확인하세요.

비지박스에 주목하세요하다POSIX 스타일 문자 클래스( [:upper:]및 친구)를 지원하지만원천, [:print:]그리고 [:graph:]"TODO"입니다. 다음 클래스만 지원됩니다 : alpha, alnum, digit, lower, upper, space, blank, punctcntrl. xdigit링크된 소스 상단의 저작권 날짜는 1997년임을 참고하시기 바랍니다. 이것은 내가 찾은 첫 번째 사본입니다. 그 이후로 업데이트가 있었을 것입니다.

관련 정보