Aur 包显示权限被拒绝
Aur package Showing Permission denied
大家好,实际上我正在为 arch linux 制作一个 AUR 包,我已经制作了 PKGBUILD 文件,参考了各种 YouTube 视频和博客 post 以及我想要的官方 AUR 打包文档是将 python 脚本移动到 /usr/bin/ 目录但它抛出权限被拒绝的错误,请帮助
这是我的 AUR 包的 PKGBUILD 文件
# Maintainer: Ashwini Sahu <ashwinisahu990@gmail.com>
_pkgname=hbhc
pkgname=${_pkgname}-git
pkgver=r15.e5f7975
pkgrel=1
pkgdesc="A fast and Open Source Home Baked Hash Cracker for linux Written in Python3"
arch=('any')
url="https://github.com/ASHWIN990/${_pkgname}/sssssssss"
license=('GPL3')
depends=(python3)
makedepends=(git)
source=("git://github.com/ASHWIN990/hbhc.git")
md5sums=('SKIP')
pkgver() {
cd "$_pkgname"
printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
}
package() {
cd "$_pkgname"
install -m 644 ".man/hbhc.1.gz" "/usr/local/share/man/man1/"
cp sha* /usr/bin/ | echo -e "MOVING THE PYTHON SCRIPTS IN /usr/bin"
cp md5* /usr/bin/
cp hbhc /usr/bin/
cp .man/hbhc.1.gz /usr/local/share/man/man1/hbhc.1.gz
}
这是我在制作包时遇到的错误
┌─[ashwinisahu@ashwini-main]─[~/Other/build]
└──╼ $makepkg
==> Making package: hbhc-git r15.e5f7975-1 (Friday 22 May 2020 01:45:52 AM)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
-> Cloning hbhc git repo...
Cloning into bare repository '/home/ashwinisahu/Other/build/hbhc'...
remote: Enumerating objects: 68, done.
remote: Counting objects: 100% (68/68), done.
remote: Compressing objects: 100% (36/36), done.
remote: Total 68 (delta 37), reused 49 (delta 28), pack-reused 0
Receiving objects: 100% (68/68), 15.20 MiB | 1.11 MiB/s, done.
Resolving deltas: 100% (37/37), done.
==> Validating source files with md5sums...
hbhc ... Skipped
==> Extracting sources...
-> Creating working copy of hbhc git repo...
Cloning into 'hbhc'...
done.
==> Starting pkgver()...
==> Entering fakeroot environment...
==> Starting package()...
install: cannot create regular file '/usr/local/share/man/man1/hbhc.1.gz': Permission denied
==> ERROR: A failure occurred in package().
Aborting...
感谢给出答案的人,我的新 PKGBUILD 文件看起来像这样,而且它运行没有任何错误
# Maintainer: Ashwini Sahu <ashwinisahu990@gmail.com>
_pkgname=hbhc
pkgname=${_pkgname}-git
pkgver=r17.82d9453
pkgrel=1
pkgdesc="A fast and Open Source Home Baked Hash Cracker for linux Written in Python3"
arch=('any')
url="https://github.com/ASHWIN990/${_pkgname}"
license=('GPL3')
depends=('python3')
makedepends=('git')
provides=('hbhc')
source=("git+https://github.com/ASHWIN990/hbhc.git")
md5sums=('SKIP')
pkgver() {
cd "$_pkgname"
printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
}
package() {
cd "$srcdir/${_pkgname}"
install -Dm775 sha* -t ${pkgdir}/usr/bin/ | echo -e "MOVING THE PYTHON SCRIPTS IN /usr/bin"
install -Dm775 md5* -t ${pkgdir}/usr/bin/
install -Dm775 hbhc -t ${pkgdir}/usr/bin/
install -Dm644 ${PWD}/.man/hbhc.1.gz -t ${pkgdir}/usr/share/man/man1/
}
(请注意,我不使用 Arch,也从未为它编写过 PKGBUILD。我是 Fedora 用户,但类似的错误经常困扰我。)
package() {
cd "$_pkgname"
install -m 644 ".man/hbhc.1.gz" "/usr/local/share/man/man1/"
cp sha* /usr/bin/ | echo -e "MOVING THE PYTHON SCRIPTS IN /usr/bin"
cp md5* /usr/bin/
cp hbhc /usr/bin/
cp .man/hbhc.1.gz /usr/local/share/man/man1/hbhc.1.gz
}
此代码在您构建 包时执行,而不是在您安装 时执行。这不是 运行ning 作为 root 用户,而是作为 package-build 用户(我不确定在 Arch 上那是什么)。作为非 root 用户,您正在尝试将包复制到只有 root 可以写入的路径(如 /usr/...
)。这是不允许的,会导致权限问题:
==> Starting package()...
install: cannot create regular file '/usr/local/share/man/man1/hbhc.1.gz': Permission denied
==> ERROR: A failure occurred in package().
但是您也不想 运行 作为 root。您需要做的是安装到特殊位置$pkgdir
:https://wiki.archlinux.org/index.php/Creating_packages#Defining_PKGBUILD_variables。这个特殊位置看起来像 /
,但您可以写入它。 $pkgdir
中的所有内容都将成为您正在构建的包的一部分。然后,当您安装刚刚构建的包时,从 $pkgdir
开始的所有内容都会复制到 /
.
换句话说,在构建包时,您将东西安装到 $pkgdir/usr/bin/foo
。安装该软件包后,该文件将放置在 /usr/bin/foo
.
package() {
cd "$_pkgname"
install -m 644 ".man/hbhc.1.gz" "$pkgdir/usr/local/share/man/man1/"
cp sha* "$pkgdir/usr/bin/"
cp md5* "$pkgdir/usr/bin/"
cp hbhc "$pkgdir/usr/bin/"
cp .man/hbhc.1.gz "$pkgdir/usr/local/share/man/man1/hbhc.1.gz"
}
这个想法也被称为 DESTDIR
,它通常记录在各种 make
和类似的工具中:
- https://www.gnu.org/software/automake/manual/html_node/DESTDIR.html
- https://www.gnu.org/prep/standards/html_node/DESTDIR.html
希望这能解决您的问题。
大家好,实际上我正在为 arch linux 制作一个 AUR 包,我已经制作了 PKGBUILD 文件,参考了各种 YouTube 视频和博客 post 以及我想要的官方 AUR 打包文档是将 python 脚本移动到 /usr/bin/ 目录但它抛出权限被拒绝的错误,请帮助
这是我的 AUR 包的 PKGBUILD 文件
# Maintainer: Ashwini Sahu <ashwinisahu990@gmail.com>
_pkgname=hbhc
pkgname=${_pkgname}-git
pkgver=r15.e5f7975
pkgrel=1
pkgdesc="A fast and Open Source Home Baked Hash Cracker for linux Written in Python3"
arch=('any')
url="https://github.com/ASHWIN990/${_pkgname}/sssssssss"
license=('GPL3')
depends=(python3)
makedepends=(git)
source=("git://github.com/ASHWIN990/hbhc.git")
md5sums=('SKIP')
pkgver() {
cd "$_pkgname"
printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
}
package() {
cd "$_pkgname"
install -m 644 ".man/hbhc.1.gz" "/usr/local/share/man/man1/"
cp sha* /usr/bin/ | echo -e "MOVING THE PYTHON SCRIPTS IN /usr/bin"
cp md5* /usr/bin/
cp hbhc /usr/bin/
cp .man/hbhc.1.gz /usr/local/share/man/man1/hbhc.1.gz
}
这是我在制作包时遇到的错误
┌─[ashwinisahu@ashwini-main]─[~/Other/build]
└──╼ $makepkg
==> Making package: hbhc-git r15.e5f7975-1 (Friday 22 May 2020 01:45:52 AM)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
-> Cloning hbhc git repo...
Cloning into bare repository '/home/ashwinisahu/Other/build/hbhc'...
remote: Enumerating objects: 68, done.
remote: Counting objects: 100% (68/68), done.
remote: Compressing objects: 100% (36/36), done.
remote: Total 68 (delta 37), reused 49 (delta 28), pack-reused 0
Receiving objects: 100% (68/68), 15.20 MiB | 1.11 MiB/s, done.
Resolving deltas: 100% (37/37), done.
==> Validating source files with md5sums...
hbhc ... Skipped
==> Extracting sources...
-> Creating working copy of hbhc git repo...
Cloning into 'hbhc'...
done.
==> Starting pkgver()...
==> Entering fakeroot environment...
==> Starting package()...
install: cannot create regular file '/usr/local/share/man/man1/hbhc.1.gz': Permission denied
==> ERROR: A failure occurred in package().
Aborting...
感谢给出答案的人,我的新 PKGBUILD 文件看起来像这样,而且它运行没有任何错误
# Maintainer: Ashwini Sahu <ashwinisahu990@gmail.com>
_pkgname=hbhc
pkgname=${_pkgname}-git
pkgver=r17.82d9453
pkgrel=1
pkgdesc="A fast and Open Source Home Baked Hash Cracker for linux Written in Python3"
arch=('any')
url="https://github.com/ASHWIN990/${_pkgname}"
license=('GPL3')
depends=('python3')
makedepends=('git')
provides=('hbhc')
source=("git+https://github.com/ASHWIN990/hbhc.git")
md5sums=('SKIP')
pkgver() {
cd "$_pkgname"
printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
}
package() {
cd "$srcdir/${_pkgname}"
install -Dm775 sha* -t ${pkgdir}/usr/bin/ | echo -e "MOVING THE PYTHON SCRIPTS IN /usr/bin"
install -Dm775 md5* -t ${pkgdir}/usr/bin/
install -Dm775 hbhc -t ${pkgdir}/usr/bin/
install -Dm644 ${PWD}/.man/hbhc.1.gz -t ${pkgdir}/usr/share/man/man1/
}
(请注意,我不使用 Arch,也从未为它编写过 PKGBUILD。我是 Fedora 用户,但类似的错误经常困扰我。)
package() {
cd "$_pkgname"
install -m 644 ".man/hbhc.1.gz" "/usr/local/share/man/man1/"
cp sha* /usr/bin/ | echo -e "MOVING THE PYTHON SCRIPTS IN /usr/bin"
cp md5* /usr/bin/
cp hbhc /usr/bin/
cp .man/hbhc.1.gz /usr/local/share/man/man1/hbhc.1.gz
}
此代码在您构建 包时执行,而不是在您安装 时执行。这不是 运行ning 作为 root 用户,而是作为 package-build 用户(我不确定在 Arch 上那是什么)。作为非 root 用户,您正在尝试将包复制到只有 root 可以写入的路径(如 /usr/...
)。这是不允许的,会导致权限问题:
==> Starting package()...
install: cannot create regular file '/usr/local/share/man/man1/hbhc.1.gz': Permission denied
==> ERROR: A failure occurred in package().
但是您也不想 运行 作为 root。您需要做的是安装到特殊位置$pkgdir
:https://wiki.archlinux.org/index.php/Creating_packages#Defining_PKGBUILD_variables。这个特殊位置看起来像 /
,但您可以写入它。 $pkgdir
中的所有内容都将成为您正在构建的包的一部分。然后,当您安装刚刚构建的包时,从 $pkgdir
开始的所有内容都会复制到 /
.
换句话说,在构建包时,您将东西安装到 $pkgdir/usr/bin/foo
。安装该软件包后,该文件将放置在 /usr/bin/foo
.
package() {
cd "$_pkgname"
install -m 644 ".man/hbhc.1.gz" "$pkgdir/usr/local/share/man/man1/"
cp sha* "$pkgdir/usr/bin/"
cp md5* "$pkgdir/usr/bin/"
cp hbhc "$pkgdir/usr/bin/"
cp .man/hbhc.1.gz "$pkgdir/usr/local/share/man/man1/hbhc.1.gz"
}
这个想法也被称为 DESTDIR
,它通常记录在各种 make
和类似的工具中:
- https://www.gnu.org/software/automake/manual/html_node/DESTDIR.html
- https://www.gnu.org/prep/standards/html_node/DESTDIR.html
希望这能解决您的问题。