Lexmar Impact S305 스캐너/프린터를 구입했습니다. 상자에는 지원되는 시스템에 작은 펭귄과 "Linux"라는 단어가 있습니다. 문제는 공식 드라이버가 Debian 기반 및 RPM 기반 배포판에서만 사용할 수 있다는 것입니다. 아직 비공식 드라이버를 찾지 못했습니다.
그래픽 설치 프로그램이 있습니다. 내 배포판(Arch Linux)에서는 승리하지 못하지만 Mint Debian이 있는 가상 머신에 설치하면 프린터가 작동합니다. 또한 설치 프로그램에서 일부 파일(ppd, bin)을 추출했습니다.
내 질문.
프린터를 설정하려면 무엇이 필요합니까? ppd만으로는 부족한 것 같습니다.
업데이트 2011년 8월 3일
deb 파일에서 스크립트를 추출했습니다. 3개의 파일이 있습니다: control, postinst(17k) 및 prerm(4,2k).
# ./postinst
Executing postin scripts ...
./postinst: line 73: [: ==: unary operator expected
sudo: unknown user: /usr/local/lexmark/legacy/bin/.scripts/demon
sudo: unable to initialize policy plugin
새 쉘에 들어갑니다.
sh-4.2# exit
exit
cp: cannot stat `/usr/local/lexmark/legacy/etc/lxS800.ppd': No such file or directory
cp: cannot stat `/usr/local/lexmark/legacy/etc/lxS800.ppd': No such file or directory
이 것이 마지막이다.
업데이트 2011년 3월 13일
70-82행:
#run device monitor
#TODO: investigate other ways to run daemon
#/bin/sh ${script}
if [ $username == "root" ]; then
#/bin/sh /usr/local/lexmark/legacy/bin/.scripts/demon
/bin/sh $script
else
sudo -u $username /usr/local/lexmark/legacy/bin/.scripts/demon
if [ $? -ne 0 ]; then
#/bin/sh /usr/local/lexmark/legacy/bin/.scripts/demon
/bin/sh $script
fi
fi;
답변1
관련된 모든 스크립트를 게시하면 도움이 되지만 추측해 보겠습니다. 이는 bash 스크립트이지만 /bin/sh
시스템에서 bash가 아닌 dash에 의해 실행됩니다. #!/bin/sh
스크립트 상단의 행을 로 변경 #!/bin/bash
하고 명시적 호출을 으로 /bin/sh
변경 합니다 /bin/bash
.
73행의 오류의 직접적인 원인은 $username
설정되지 않았기 때문에 [
명령이 피연산자 ==
및 root
(마지막 ]
)을 확인한다는 것입니다. 구문 오류입니다. 스크립트를 더 자세히 살펴보지 않으면 변수가 설정되지 않은 이유를 알 수 없습니다.
(귀하의 게시물에 포함된 스크립트의 작은 발췌문을 보면 작성자가 유닉스 셸 스크립트 작성 경험이 많지 않음을 알 수 있습니다. 제가 다른 곳에서 본 바에 따르면 이는 일반적으로 드라이버의 나머지 Linux 배포판에도 적용됩니다. 버전에서 제공되는 소스 드라이버는 제조업체에서 제공하는 드라이버보다 품질이 훨씬 좋은 경우가 많지만 안타깝게도 선택의 여지가 없는 것 같습니다.)
답변2
DEB 파일 내부를 살펴보고 DEBIAN 디렉터리로 이동합니다. 여기에서 패키지를 설치할 때 dpkg가 수행하는 작업을 배우고 해당 단계를 수동으로 복제해 봅니다. 그들은쉘 스크립트.