существует в файловой системе (принадлежит файловой системе) в PKGBUILD для Arch Linux - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь собрать свой собственный пакет mariaDB arch linux с PKGBUILD, у меня есть бинарные файлы, которые нужно установить.У меня есть скрипт bash (arch linux PKGBUILD), который запускает fime и создает файл pkg.tar.Когда я пытаюсь установить его с помощью pacman, я получаю следующее: -

%sudo pacman -U mariadb-bin-10.3.7-1-x86_64.pkg.tar                           :(
loading packages...
resolving dependencies...
looking for conflicting packages...

Packages (1) mariadb-bin-10.3.7-1

Total Installed Size:  539.71 MiB

:: Proceed with installation? [Y/n] y
(1/1) checking keys in keyring                                         [########################################] 100%
(1/1) checking package integrity                                       [########################################] 100%
(1/1) loading package files                                            [########################################] 100%
(1/1) checking for file conflicts                                      [########################################] 100%
error: failed to commit transaction (conflicting files)
mariadb-bin: /usr/lib64 exists in filesystem (owned by filesystem)
mariadb-bin: /usr/sbin exists in filesystem (owned by filesystem)
Errors occurred, no packages were upgraded.

вот мой файл PKGBUILD: -

# This is an example PKGBUILD file. Use this as a start to creating your own,
# and remove these comments. For more information, see 'man PKGBUILD'.
# NOTE: Please fill out the license field for your package! If it is unknown,
# then please put 'unknown'.

# Maintainer: Your Name <youremail@domain.com>
pkgname='mariadb-bin'
pkgver=10.3.7
pkgrel=1
pkgdesc="MariaDB for arch linux"
arch=('x86_64')
url="http://mirror.truenetwork.ru/mariadb/"
license=('GPL')
groups=()
depends=()
makedepends=()
checkdepends=()
optdepends=()
provides=("mariadb=${pkgver}")
conflicts=('mariadb')
replaces=()
backup=('etc/mysql/my.cnf',
        'etc/mysql/wsrep.cnf')
options=()
install=mariadb-bin.install
changelog=
source=()
noextract=()
md5sums=()
validpgpkeys=()

prepare() {
    echo "I am prepare fn";
    pwd
}


build() {
    echo "I am buid fn ";
    pwd
}

check() {
    echo "I am check fn";
    pwd
}

package() {
    echo "I am package fn";
    cp ../usr ${pkgdir} -r
    cp ../etc ${pkgdir} -r
    pwd
    cd ${pkgdir}
    find ${pkgdir}/ -name *.so -exec chmod 777 {} \;
    chmod 755 ${pkgdir}/usr/bin/*
}

что мне делать?Я знаю, что этот вопрос больше подходит для архива на форуме, но так как мы можем спросить о сценариях bash и shell, так что ...

1 Ответ

0 голосов
/ 26 июня 2018

Arch Linux реализовал UsrMerge в 2013 , и с тех пор требуется, чтобы пакеты Arch Linux использовали libdir "/ usr / lib" и sbindir "/ usr / bin".Если вы этого не сделаете, то файлы, которые вы пытаетесь установить, будут конфликтовать с символическими ссылками на диске, что не разрешено pacman.

Вам нужно будет исправить расположение каталогов в вашей функции package().

Как вы можете видеть, это действительно не имеет ничего общего со сценариями bash, и все, что связано с природой формата и политик упаковки pacman.:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...