Arch Linux에 Brother QL-1060N 라벨 프린터용 CUPS 드라이버를 설치하고 싶습니다. 다행히 AUR 패키지를 사용할 수 있습니다. (아치가 정말 멋집니다.)
그러나 AUR 패키지는 약간 구식입니다. 제 질문은 최신 드라이버 버전을 설치하기 위해 PKGBUILD 파일을 어떻게 편집합니까?입니다.
여기AUR 패키지입니다. 버전 1.0.1r0에 적용 가능
여기브라더 드라이버 다운로드 링크입니다. 현재 버전은 1.0.5-0입니다.
PKGBUILD는 다음과 같습니다.
# Maintainer: Karol Babioch <[email protected]>
# Inspired by package brother-dcp130c
pkgname='brother-ql1060n'
pkgver=1.0.1r0
pkgrel=1
pkgdesc='LPR and CUPS driver for Brother QL-1060N label printer'
url='http://solutions.brother.com/linux/en_us/'
arch=('i686' 'x86_64')
license=('custom')
depends='cups'
if [ "$CARCH" = 'x86_64' ]; then
depends+=('lib32-glibc')
fi
install="$pkgname.install"
source=("http://download.brother.com/welcome/dlfp002231/ql1060nlpr-${pkgver/r/-}.i386.rpm"
"http://download.brother.com/welcome/dlfp002233/ql1060ncupswrapper-${pkgver/r/-}.i386.rpm"
'LICENSE')
sha256sums=('f2c2f919ec15b6159e13bfec60bb2d515f8c77a812e349a0ed1ec68ac29f5a25'
'bf7a1d86234d643547fc9052df55524a5e4ddbd4bf07799988c18666e7d2d3eb'
'cdd1955a9996bc246ba54e84f0a5ccbfdf6623962b668188762389aa79ef9811')
prepare()
{
# do not install in '/usr/local'
if [ -d $srcdir/usr/local/Brother ]; then
install -d $srcdir/usr/share
mv $srcdir/usr/local/Brother/ $srcdir/usr/share/brother
rm -rf $srcdir/usr/local
sed -i 's|/usr/local/Brother|/usr/share/brother|g' `grep -lr '/usr/local/Brother' ./`
fi
# setup cups directories
install -d "$srcdir/usr/share/cups/model"
install -d "$srcdir/usr/lib/cups/filter"
# go to the cupswrapper directory and find the source file from wich to generate a ppd- and wrapper-file
cd `find . -type d -name 'cupswrapper'`
if [ -f cupswrapper* ]; then
_wrapper_source=`ls cupswrapper*`
sed -i '/^\/etc\/init.d\/cups/d' $_wrapper_source
sed -i '/^sleep/d' $_wrapper_source
sed -i '/^echo lpadmin/d' $_wrapper_source
sed -i '/^lpadmin/d' $_wrapper_source
sed -i 's|/usr|$srcdir/usr|g' $_wrapper_source
sed -i 's|/opt|$srcdir/opt|g' $_wrapper_source
sed -i 's|/model/Brother|/model|g' $_wrapper_source
sed -i 's|lpinfo|echo|g' $_wrapper_source
export srcdir=$srcdir
./$_wrapper_source
sed -i 's|$srcdir||' $srcdir/usr/lib/cups/filter/*lpdwrapper*
sed -i "s|$srcdir||" $srcdir/usr/lib/cups/filter/*lpdwrapper*
rm $_wrapper_source
fi
# /etc/printcap is managed by cups
rm `find $srcdir -type f -name 'setupPrintcap*'`
}
package() {
cd "$srcdir"
cp -R usr $pkgdir
if [ -d opt ]; then cp -R opt $pkgdir; fi
install -Dm0644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}
패키지 아카이브의 .install 파일에는 다음 콘텐츠만 포함되어 있습니다.
post_install() {
post_upgrade;
}
post_upgrade() {
echo "Restart CUPS to load the new files"
echo "You can now register your new printer using the web interface at:"
echo " http://localhost:631/"
}
몇 가지 질문은 다음과 같습니다:
왜 안 돼rpm 추출코드에 PKGBUILD가 필요합니까? 패키지는 RPM이고 이것은 Arch이기 때문에 설치가 어떻게 작동하는지 이해할 수 없습니다.
sha256sum에 관해서는 Brother 다운로드 페이지에 해당 파일이 나열되지 않기 때문에(내가 아는 한) rpm 파일을 수동으로 다운로드하고 해당 합계를 계산한다고 가정합니다.
제가 생각해낸 가치는 다음과 같습니다.
05d786b9a5b2cf374d5c286ae8feb77e2a79619cc5b2f6ca2695dbd549eec0a3 ql1060ncupswrapper-1.0.5-0.i386.rpm
bf20a00f723d0e12cf055ae359d0e03e2c1bd839bacd52f02b3cc5a63bc652e5 ql1060nlpr-1.0.5-0.i386.rpm
라이센스 파일과 해당 sha256sum은 변경되지 않은 상태로 유지될 수 있다고 가정합니다.
그렇다면 sha256sums를 교체하고 이 값을 업데이트하는 것처럼 PKGBUILD를 업데이트하는 것이 간단합니까?
pkgver=1.0.1r0
그리고
pkgver=1.0.5-0
고쳐 쓰다
패키지 관리자가 패키지를 업데이트했습니다. 차이점은 다음과 같습니다.
5c5
< pkgver=1.0.1r0
---
> pkgver=1.0.5r0
19,20c19,20
< sha256sums=('f2c2f919ec15b6159e13bfec60bb2d515f8c77a812e349a0ed1ec68ac29f5a25'
< 'bf7a1d86234d643547fc9052df55524a5e4ddbd4bf07799988c18666e7d2d3eb'
---
> sha256sums=('bf20a00f723d0e12cf055ae359d0e03e2c1bd839bacd52f02b3cc5a63bc652e5'
> '05d786b9a5b2cf374d5c286ae8feb77e2a79619cc5b2f6ca2695dbd549eec0a3'
그러나 이 PKGBUILD의 작동 방식과 이 방법을 사용하여 RPM 패키지를 설치하는 방법을 이해하고 싶기 때문에 이 질문을 열어 두겠습니다.