
expect
저는 셸이 아닌 내장 명령(예:)을 사용하는 스크립트를 작성하려고 하는데 이를 오프라인으로 사용할 계획입니다.
expect
일반적으로 Fedora를 사용하여 설치 sudo yum install expect
하거나 Ubuntu를 사용하여 설치할 수 있습니다 sudo apt install expect
.
expect
하지만 패키지를 다운로드하고 싶고 모든 것이 사용법에 따라 다릅니다 sudo apt-cache depends expect
(학습한 후에는 사용법에 따라 다릅니다...) sudo apt download <depends>
.
나는 그것을 시도하고 일부 .deb
파일을 다운로드했습니다. 나는 또한 이것을 시도했습니다 :
파일에서
data.tar
파일을 추출합니다.deb
(항상 성공하지 못했기 때문에 사용하고 싶지 않고dpkg -i <some_pkg.deb>
Fedora에서 사용하고 싶습니다(사용하지 않음dpkg
)).다음을 사용하여 모든 파일을 추출합니다.
tar -xhf data.tar -C ~/demo
마지막으로 다음을 사용하여 시스템 디렉토리의 모든 파일을 수동으로 복사했습니다.
cp -rPn ~/demo/bin/* /bin ~/demo/etc/* /etc ...
하지만 이렇게 하면(특히 .deb
Fedora에서 이러한 유형의 패키지를 사용하면) 오류가 발생 segmentation fault (core dumped)
하고 시스템이 정지됩니다.
목표를 달성하기 위해 더 이상 사용되지 않고 위험한 방법을 시도하고 있다는 것을 알고 있지만 오프라인에서 사용할 수 있는 방법(특히 백업 명령, 예를 들어 /usr/bin/expect
모든 종속 항목 포함)이 있습니까?
답변1
시도해 볼 수 있습니다. alien
다양한 패키지 시스템 간에 패키지를 변환합니다.
완벽한 방법은 아니며 종속성이 적용되고 다른 문제가 있을 수 있지만 시도해 볼 가치가 있습니다.
답변2
배포판 전체에 걸쳐 패키지를 혼합하고 일치시키려고 하지 마십시오. 가장 간단한 경우를 제외하고는 안정적으로 작동할 가능성이 없습니다.
대신 대상 배포 도구를 사용하세요. Debian 기반 배포판에서 패키지와 해당 종속성을 다운로드하는 방법을 살펴보았습니다. 이는 Fedora 기반 배포판에서도 가능합니다. 다운로드 expect
및모두종속성을 확인하고 임시 루트 디렉터리와 임시 다운로드 디렉터리를 생성하고 dnf
임시 루트 디렉터리에 필요한 패키지를 설치하도록 다운로드에 지시합니다.expect
mkdir /tmp/expectroot
mkdir /tmp/expectdeps
sudo dnf install --installroot /tmp/expectroot \
--downloadonly --downloaddir /tmp/expectdeps \
--releasever 32 expect
("32"를 적절하게 바꾸십시오).
그런 다음 대상 시스템의 기존 종속성에 관계없이 /tmp/expectdeps
.