标签: makepkg

在开发过程中将调试符号附加到系统库的最佳实践?

我正处于项目的某个阶段,安装系统包的调试版本会非常方便。至少在 Ubuntu 上,将调试符号添加到库中是小菜一碟。实际上,每个包都有一个-dbg变体,可以提供有用的回溯所需的所有符号。

但是,我目前在 Arch linux 上,一般的共识是编辑用户makepkg.conf文件,将任何调试标志添加到(C|CXX|CPP|LD)FLAGS. 然后自己重​​新构建包,并用调试版本替换当前的优化版本。好吧,我想这对于“基于源的分发”来说已经足够公平了,但是很快就会变得乏味。

那么,将调试符号附加到系统包的最佳实践是什么?其他包装商是怎么做的?

我想我已经看到strip可以提取调试符号并将它们保存在外部文件中。是否有可能gdb在回溯期间获取这些符号文件,而系统应用程序甚至不费心去寻找它们?从包装商的角度来看,这是如何工作的?

这只是一个想法,但创造一个chroot发展的环境是一个好主意吗?(我有一个问题 atm,其中一个包的调试版本和发布版本之间存在 ABI 不兼容,这有点痛苦。链接到其共享库的所有内容也抱怨缺少符号,因此恢复为优化版本..)

debugging arch-linux dpkg makepkg

7
推荐指数
1
解决办法
4845
查看次数

使用 makepkg 命令交叉编译

我正在运行 x86_64 Arch Linux,现在我需要为 i386 Arch Linux 构建软件包,

那可能吗?我已经检查过makepkg (8),它似乎不支持手动选择包架构。

我正在为一些 AUR 包执行此操作,但我真的不想这样做,例如添加 CLAGS

arch-linux makepkg

6
推荐指数
1
解决办法
3093
查看次数

在 PKGBUILD 中指定子模块修订版

我正在尝试hhvm-git从 AUR 安装软件包并收到错误。子模块之一存在错误。这个错误已经被修复,我想指定修订版包含子模块的修复。我怎样才能做到这一点?

在 PKGBUILD 中,我尝试按照Arch Wiki中的建议指定修订版(source数组中的行):

"git+https://github.com/facebook/proxygen#7e37f926d922b55c85537057b57188dea9694c32"
Run Code Online (Sandbox Code Playgroud)

结果:

  -> Creating working copy of proxygen git repo...
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (6/6), done.
remote: Total 6 (delta 4), reused 0 (delta 0)
Unpacking objects: 100% (6/6), done.
From /tmp/yaourt-tmp-german/aur-hhvm-git/proxygen
   7e2a49c..3395064  master     -> origin/master
==> ERROR: Unrecognized reference: 7e37f926d922b55c85537057b57188dea9694c32
Run Code Online (Sandbox Code Playgroud)

arch-linux git makepkg hhvm

5
推荐指数
1
解决办法
1200
查看次数

如何更新 Arch Linux PKGBUILD 文件以获取新版本(打印机驱动程序)?

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

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

是 AUR 包。适用于1.0.1r0版本

是 Brother 驱动程序下载链接。当前版本是1.0.5-0。

下面是 PKGBUILD:

# Maintainer: Karol Babioch <karol@babioch.de>
# 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 …
Run Code Online (Sandbox Code Playgroud)

arch-linux makepkg aur pkgbuild

5
推荐指数
0
解决办法
1266
查看次数

make 和 makepkg 有什么区别?

来自Arch 维基

Arch Linux 中的软件包是使用该makepkg实用程序构建的。当 makepkg 运行时,它会在当前目录中搜索PKGBUILD文件,并按照其中的说明进行编译或以其他方式获取文件以构建包存档 (pkgname.pkg.tar.xz)。生成的包包含二进制文件和安装说明,可以使用 pacman 轻松安装。

Make是一个 GNU 实用程序,用于从源代码构建和安装软件包,为此,它会在适当的目录中搜索 makefile,该目录将所需的输入提供给make.

Somakepkg用于制作 pacman 可安装的二进制文件,并且makepkg -si可以选择解析依赖项(主要用于 AUR 包)。区别只是在于依赖解析和 pacman 特定的东西吗?它只是一些可以通过make每个发行版手动完成的事情的自动化。

我对么?抱歉,如果这是一个愚蠢的问题。

arch-linux make makepkg

2
推荐指数
1
解决办法
4837
查看次数

标签 统计

arch-linux ×5

makepkg ×5

aur ×1

debugging ×1

dpkg ×1

git ×1

hhvm ×1

make ×1

pkgbuild ×1