Linux에서 GNU coreutils를 대체 할 수있는 옵션이 있습니까?


20

Linux 시스템에서 GNU Coreutils의 사용을 중단하려고 생각했지만 다른 많은 GNU 구성 요소와 달리 솔직히 말해서 다른 대안 (Linux의 경우) 은 생각할 수 없습니다 . GNU coreutils에는 어떤 대안이 있습니까? 둘 이상의 패키지가 필요합니까? 프로젝트에 대한 링크는 배포 패키지의 이름을 지정하는 데 반드시 필요한 보너스 포인트입니다.

또한 Linux에서 작동하고 지침을 참조 할 수 있다는 것을 알지 않는 한 제안하지 마십시오 . 나는 곧 커널을 전환 할 것 같지 않다 ./configure; make; make install. 확실히 C를 해킹하지 않을 것입니다.

경고 : 배포판에서 coreutils를 사용하는 경우 배포판을 제거하면 배포판 기능이 손상 될 수 있습니다. 그러나 $PATH대부분의 스크립트는 절대 경로를 사용해야하므로 우선 순위를 매기 지 않아야합니다.


10
흥미롭게도 대안을 찾고있는 이유는 무엇입니까?
tshepang

2
@xeno "더 강력한"? 또한 시스템 (커널 포함)은 대부분 GCC로 빌드되며 GLibC에 의존합니다.
tshepang

3
@xeno Debian은 실제로 EGLIBC를 사용 하고 있는데, 이는 일종의 GLibC 포크입니다. 그러나 그것은 GLibC를 밀접하게 따르므로 diff는 그렇게 크지 않습니다.
tshepang

2
Clang과 tcc는 리눅스 커널을 컴파일 할 수있다.
Shawn J. Goff

2
BSD 커널 에서 GNU 사용자 영역을 작업하는 사람들이 있지만 다른 방법은 듣지 못했습니다. 실제로 커널을 전환하는 것이 더 쉬울 것입니다. 부끄러워하는 경우 VM에서 먼저 시도해 볼 수 있습니다.
Gilles 'SO- 악마 그만해'

답변:


15

busybox 임베디드 리눅스 시스템의 선호.

BusyBox는 여러 가지 일반적인 UNIX 유틸리티의 작은 버전을 하나의 작은 실행 파일로 결합합니다. 일반적으로 GNU fileutils, shellutils 등에서 찾을 수있는 대부분의 유틸리티를 대체합니다. BusyBox의 유틸리티는 일반적으로 모든 기능을 갖춘 GNU 사촌보다 옵션이 적습니다. 그러나 포함 된 옵션은 예상되는 기능을 제공하며 GNU 대응 기능과 매우 유사하게 작동합니다. BusyBox는 소규모 또는 내장형 시스템을위한 상당히 완벽한 환경을 제공합니다.
BusyBox는 크기 최적화 및 제한된 리소스를 염두에두고 작성되었습니다. 또한 모듈 식이므로 컴파일 타임에 명령 (또는 기능)을 쉽게 포함하거나 제외 할 수 있습니다. 이를 통해 임베디드 시스템을 쉽게 사용자 정의 할 수 있습니다. 작업 시스템을 만들려면 / dev에 일부 장치 노드, / etc에 몇 개의 구성 파일 및 Linux 커널을 추가하십시오.

모든 coreutil 이름을 busybox 바이너리에 대한 링크로 만들 수 있으며 작동합니다. 당신은 또한 실행할 수 있으며 busybox <command>작동합니다. 예 : 젠투를 사용 중이고 vi아직 설치하지 않은 경우 실행할 busybox vi filename수 있으며 vi에있게됩니다. 그



또한,이 임베디드에 마음에 드는, 그래서 비록 아마 내 데스크탑 / 서버 환경을위한 GNU를 대체하기에 충분하지 않을 것 대안
xenoterracide

C를 해킹하고 싶지 않은 경우 이것이 유일한 실용적인 솔루션입니다. 통화 상자 버전은 표준을 준수해야합니다.
maxschlepzig 2018 년

5

이것은 오래된 주제입니다. 그러나이 솔루션은 언급되지 않았으며 "linux with bsd userland"에 대해 Google에서 상대적으로 높습니다.

또 다른 해결책이 있습니다 : 가보. 아치에서 작동하며 AUR에 패키지되어 있음을 알고 있습니다 (예 : gnu2sysv 참조). 이것은 아치의 coreutils 패키지를 대체하고 가보 등가물을 제공합니다. 아치 위키에서 전체 내용을 읽을 수 있습니다 : https://wiki.archlinux.org/index.php/Base2heirloom


2

uutils를 확인하십시오 .

이것은 Rust로 작성된 GNU coreutils의 크로스 플랫폼 구현입니다. MIT 라이센스가 있습니다. 이 답변을 작성하는 시점에서 그것은 (같은 몇 가지 중요한 것들 누락 100℅ 완료되지 않았습니다 lscp), 그러나 많은 다른 사람이 완료됩니다.


0

GNU Coreutils를 제거하는 데 어려움을 겪고 있다고 생각하지만 GNU 도구를 대체하는 것은 아니지만 항상 동등한 BSD 도구가 있습니다.


Linux 배포판에 BSD 도구를 설치하는 방법은 무엇입니까? 어디서 구할 수 있습니까?
xenoterracide

FreeBSD의 전체 OS는 CVS freebsd.org/cgi/cvsweb.cgi/src 를 통해 사용할 수 있지만 Linux 커널에서 BSD 사용자 영역을 컴파일하는 것은 다소 어려울 수 있습니다. GNU의 사용자 영역은 BSD보다 이식성이 좋을 것입니다. GNU의 사용자 영역 (최소한 처음에)은 여러 커널간에 이식 가능하도록 만들어 졌기 때문입니다.
jsbillings

그것은 PITA처럼 들리지만, 누군가가 리눅스를 위해 적어도 한 번은 그것을 패키징했을 가능성이 있는지 확실합니다.
xenoterracide

솔라리스 (140-something도 가능)도 옵션입니다. 배포판을 사용하고 있다면 미쳤다. 지금 멈춰. LFS 를 사용하고 있다면 계속 사용하십시오 ! 즐기세요! 당신이 배포판을 만들고 있다면, 나는 당신의 용기에 박수를 보냅니다.
bahamat

네, 가능하지는 않습니다. FreeBSD를 설치하고 리눅스 호환성을 활성화하는 것이 더 쉬울 것입니다. GNU coreutils는 FreeBSD에서 쉽게 작동 할 수 있지만 그 반대는 아닙니다.
jsbillings 2016 년

0

일반적으로, 많은 플랫폼에서 널리 사용되고, 잘 테스트되고, 검증 된 것으로부터 벗어나고 자하는 사람은 "코드 냄새"라고하는 근본적인 문제와 "기술 부채"또는 "코드의 통제되지 않은 누적"에 대한 외적 표현입니다. 빚". GNU 아카이브는 수년 동안 상당히 많은 양의 코드 빚을 쌓아 왔으며 코드베이스가 제대로 유지 관리되지 않으면 중단 점 (레거시 코드 및 병적 레거시 코드)에 도달 할 수 있습니다.

일반적으로이를 제어하기 위해 간격을두고 리엔지니어링 및 리팩토링 프로세스를 수행합니다. 따라서 여기서 제기되는 실제 질문은 리팩토링 된 coreutils 버전이 개발되었는지 여부입니다. 물론 이것은 웨이 랜드가 X를 위해 투구되고있는 것처럼 (특별한 경우로서) 완전히 교체 될 가능성을 포함합니다. 많은 개발자들이 X 캠프에서 곧바로 나옵니다.

내 제안은 실제로 coreutils를 리팩토링하는 것입니다. 누군가해야합니다. 그리고 핵심 유틸리티를 대체하는 문제를 제기하는 사람-귀하의 아이디어는 프로젝트입니다.

이를 위해 cscout과 같은 리팩토링 엔진 또는 고급 분석 / 합성 방법 (예 : 공식적인 개념 격자)을 적용하는 모든 자동화를 활용할 수 있습니다. 그러나 심층 분석은 여전히 ​​상대적으로 새롭고 개방 된 활발한 연구 분야이며 인공 지능으로 넘어갑니다. (로봇 소프트웨어 엔지니어)

대부분의 유틸리티에는 이미 테스트 스위트가 설치되어 있으므로 점진적인 단계적 변경 + 자동 회귀 테스트 단계를 통해 유효성 검증을 수행 할 수 있습니다. 꽤 빠르게 진행될 수 있습니다 (예 : 하루에 10 번 이상의 개정 업데이트). 소프트웨어 제품군의 어느 곳에서나 하드웨어 또는 저수준 소프트웨어 종속성이있는 경우이 프로세스가 복잡해집니다. 여러 플랫폼에서 유효성 검사가 수반되기 때문입니다. 나는 coreutils에있는 것을 많이 모른다. 하드웨어 또는 저수준 소프트웨어 계층과는 약간의 분리가 있어야합니다 (예 : coreutils가 어떤 유형을 알고있는 장소의 수)멀티 플랫폼 테스트를 위해 사용되는 에뮬레이터와 가상 머신에는 한계가 있습니다. 예를 들어, Mac OS X은 에뮬레이션 또는 VM 기능을 방해하는 방식으로 특별히 설계되었습니다.


-1

Solaris (svn_140-something)도 옵션입니다.

배포판을 사용하고 있다면 미쳤다. 지금 멈춰. 정신과의 도움을 구하십시오.

LFS 를 사용하고 있다면 계속 사용하십시오 ! 즐기세요!

당신이 배포판을 만들고 있다면, 나는 당신의 용기에 박수를 보냅니다.


1
이것은 "사용할 수있는 배포판"에 대한 질문이 아니라 Linux에서 coreutils를 교체하는 것에 관한 것입니다. opensolaris coreutils를 언급하지 않는 한? 또한 FreeBSD 옵션보다 PITA가 적습니까?
xenoterracide

1
OpenSolaris의 소스 코드는 Solaris입니다. svn_14x가 CDDL 하에서 Sun / Oracle에 의해 릴리스 될 때까지 Solaris 소스 코드. 유닉스 사용자 영역에는 기본적으로 세 가지 주요 유산이 있습니다. "Genetic"Unix (Solaris, AIX, True64 등, AT & T 코드에서 왔으며 대체로 닫히지 만 Solaris는 한동안 열려 있음), BSD (최종 4.4-lite로 자체적으로 유지됨) 및 GNU. 그러나 나는 GNU에서 멀어지면 BSD 나 Solaris로 갈 때 똑같이 어려울 것이라고 생각합니다. 아니면 정말 야심을 가지고 xenocore-utils를 만들 수 있습니다 ;-)
bahamat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.