更新

更新

我想在 Arch Linux 上安装 Brother QL-1060N 标签打印机的 CUPS 驱动程序。幸运的是,有一个 AUR 包可用。 (拱门太棒了。)

然而,AUR 包有点过时了。我的问题是,如何编辑 PKGBUILD 文件来安装最新的驱动程序版本?

这里是 AUR 包。适用于1.0.1r0版本

这里是 Brother 驱动程序下载链接。当前版本是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。

关于 sha256sums,我假设我只是手动下载 rpm 文件并计算这些总和,因为 Brother 下载页面没有列出它们(据我所知)。

我得出的价值观是:

05d786b9a5b2cf374d5c286ae8feb77e2a79619cc5b2f6ca2695dbd549eec0a3  ql1060ncupswrapper-1.0.5-0.i386.rpm
bf20a00f723d0e12cf055ae359d0e03e2c1bd839bacd52f02b3cc5a63bc652e5  ql1060nlpr-1.0.5-0.i386.rpm

我假设许可证文件及其 sha256sum 可以保持不变。

鉴于此,更新 PKGBUILD 是否像替换 sha256sums 并更新这个值一样简单?

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 包。

相关内容