|
# |
|
|
Темы: 14 Сообщения: 24 Участник с: 04 апреля 2011 |
Все проблема в том что при установки java из AUR с помощью yaourt получается вот такая ерунда
Проверка исходных файлов с помощью md5sums… как решить эту проблему ? |
|
vadik |
# |
|
Темы: 55 Сообщения: 5410 Участник с: 17 августа 2009 |
makepkg -g |
|
gima |
# |
|
Темы: 14 Сообщения: 24 Участник с: 04 апреля 2011 |
==> ОШИБКА: PKGBUILD не существует. |
|
vadik |
# |
|
Темы: 55 Сообщения: 5410 Участник с: 17 августа 2009 |
Вручную скачайте PKGBUILD (если есть доп. файлы — их тоже), и далее собирайте с помощью makepkg. |
|
gima |
# |
|
Темы: 14 Сообщения: 24 Участник с: 04 апреля 2011 |
по статье из вики сделал все но при зборке всеравно Проверка исходных файлов с помощью md5sums… jdk-6u31-linux-i586.bin … СБОЙ если делаю makepkg -g и md5sums заменяю на тот что выдает команда то все проверяет норм но дальше пишет вот что Запускается build()...
../jdk-6u31-linux-i586.bin: line 1: html: Нет такого файла или каталога
../jdk-6u31-linux-i586.bin: line 2: head: Нет такого файла или каталога
../jdk-6u31-linux-i586.bin: line 3: title: Нет такого файла или каталога
../jdk-6u31-linux-i586.bin: line 4: META: Нет такого файла или каталога
../jdk-6u31-linux-i586.bin: line 5: link: Нет такого файла или каталога
../jdk-6u31-linux-i586.bin: line 6: link: Нет такого файла или каталога
../jdk-6u31-linux-i586.bin: line 7: $'r': команда не найдена
../jdk-6u31-linux-i586.bin: line 8: body: Нет такого файла или каталога
../jdk-6u31-linux-i586.bin: line 9: div: Нет такого файла или каталога
../jdk-6u31-linux-i586.bin: line 10: table: Нет такого файла или каталога
../jdk-6u31-linux-i586.bin: line 11: tr: Нет такого файла или каталога
../jdk-6u31-linux-i586.bin: line 12: syntax error near unexpected token `<'
../jdk-6u31-linux-i586.bin: line 12: ` <td rowspan="2" valign="middle" nowrap><a href="http://www.oracle.com"><img src="/errors/us/assets/oralogo-small.gif" width="154" height="19" 'space="10" vspace="25" border="0" ></a></td>
==> ОШИБКА: Произошел сбой в build().
Преждевременный выход...
|
|
vadik |
# |
|
Темы: 55 Сообщения: 5410 Участник с: 17 августа 2009 |
Дайте название пакета, чтоли. |
|
gima |
# |
|
Темы: 14 Сообщения: 24 Участник с: 04 апреля 2011 |
jre6 6u31-b04 |
|
vadik |
# |
|
Темы: 55 Сообщения: 5410 Участник с: 17 августа 2009 |
Читаем комментарии, видим:
Сами сможете перевести? |
|
gima |
# |
|
Темы: 14 Сообщения: 24 Участник с: 04 апреля 2011 |
Спс за помощь все собрал и установил ) |
|
vadik |
# |
|
Темы: 55 Сообщения: 5410 Участник с: 17 августа 2009 |
Вот и отлично. Теперь опишите кратенько как решили и отредактируйте название темы в стартовом сообщении (добавьте ). |
Ответ на:
комментарий
от ChildrenofBodom 11.02.14 02:37:17 MSK
Ответ на:
комментарий
от oster2011 11.02.14 02:40:31 MSK
Ответ на:
комментарий
от Medar 11.02.14 02:42:07 MSK
Ответ на:
комментарий
от gavlig 11.02.14 02:45:46 MSK
Ответ на:
комментарий
от oster2011 11.02.14 02:44:19 MSK
sudo ln -s /usr/lib/libopenal.so /usr/lib/libopenal.so.0
sudo ln -s /usr/lib32/libopenal.so /usr/lib32/libopenal.so.0
Как-то так.
Medar ★★★★★
(11.02.14 02:47:45 MSK)
- Показать ответы
- Ссылка
Никакие симлинки не надо ставить, просто включи multilib репозиторий и установи lib32-openal.
mtk ★
(11.02.14 02:47:52 MSK)
- Ссылка
Ответ на:
комментарий
от Medar 11.02.14 02:47:45 MSK
Ответ на:
комментарий
от oster2011 11.02.14 02:50:02 MSK
Ответ на:
комментарий
от Medar 11.02.14 02:47:45 MSK
./Bin/Linux-Dynamic-Release/Sam2: error while loading shared libraries: libXxf86misc.so.1: cannot open shared object file: No such file or directory
oster2011 ★★★
(11.02.14 02:51:14 MSK)
- Ссылка
Ответ на:
комментарий
от Medar 11.02.14 02:51:01 MSK
Ответ на:
комментарий
от oster2011 11.02.14 02:52:02 MSK
Ответ на:
комментарий
от Medar 11.02.14 02:53:33 MSK
ldd: /home/denis/bin/Serious Sam 2/: не обычный файл
oster2011 ★★★
(11.02.14 02:55:16 MSK)
- Ссылка
Ответ на:
комментарий
от oster2011 11.02.14 02:52:02 MSK
Запости сюда вывод ldd ./Bin/Linux-Dynamic-Release/Sam2, как выше советовали, а то по одной либе долго будем угадывать.
mtk ★
(11.02.14 02:56:40 MSK)
- Показать ответ
- Ссылка
Ответ на:
комментарий
от mtk 11.02.14 02:56:40 MSK
[denis@oster Serious Sam 2]$ ldd ./Bin/Linux-Dynamic-Release/Sam2
linux-gate.so.1 (0xf778c000)
libdl.so.2 => /usr/lib32/libdl.so.2 (0xf7753000)
Bin/Linux-Dynamic-Release/Core.so (0xf756a000)
Bin/Linux-Dynamic-Release/Engine.so (0xf6dd4000)
Bin/Linux-Dynamic-Release/ScriptLua.so (0xf6d84000)
libopenal.so.0 => /usr/lib32/libopenal.so.0 (0xf6d2f000)
libpthread.so.0 => /usr/lib32/libpthread.so.0 (0xf6d13000)
libXxf86vm.so.1 => /usr/lib32/libXxf86vm.so.1 (0xf6d0d000)
libXxf86misc.so.1 => not found
libX11.so.6 => /usr/lib32/libX11.so.6 (0xf6bd6000)
libXext.so.6 => /usr/lib32/libXext.so.6 (0xf6bc2000)
libGL.so.1 => /usr/lib32/libGL.so.1 (0xf6b67000)
libstdc++.so.6 => /usr/lib32/libstdc++.so.6 (0xf6a7e000)
libm.so.6 => /usr/lib32/libm.so.6 (0xf6a38000)
libgcc_s.so.1 => /usr/lib32/libgcc_s.so.1 (0xf6a1e000)
libc.so.6 => /usr/lib32/libc.so.6 (0xf686e000)
/lib/ld-linux.so.2 (0xf778d000)
libXxf86misc.so.1 => not found
libXxf86misc.so.1 => not found
libXxf86misc.so.1 => not found
librt.so.1 => /usr/lib32/librt.so.1 (0xf6865000)
libxcb.so.1 => /usr/lib32/libxcb.so.1 (0xf6841000)
libglapi.so.0 => /usr/lib32/libglapi.so.0 (0xf6829000)
libXdamage.so.1 => /usr/lib32/libXdamage.so.1 (0xf6825000)
libXfixes.so.3 => /usr/lib32/libXfixes.so.3 (0xf681f000)
libX11-xcb.so.1 => /usr/lib32/libX11-xcb.so.1 (0xf681c000)
libxcb-glx.so.0 => /usr/lib32/libxcb-glx.so.0 (0xf6802000)
libxcb-dri2.so.0 => /usr/lib32/libxcb-dri2.so.0 (0xf67fc000)
libdrm.so.2 => /usr/lib32/libdrm.so.2 (0xf67ee000)
libXau.so.6 => /usr/lib32/libXau.so.6 (0xf67ea000)
libXdmcp.so.6 => /usr/lib32/libXdmcp.so.6 (0xf67e3000)
oster2011 ★★★
(11.02.14 02:57:34 MSK)
- Показать ответ
- Ссылка
Ответ на:
комментарий
от oster2011 11.02.14 02:57:34 MSK
Вот теперь и доустанови пакеты с библиотеками, которых нет. Или делай симлинки, если у тебя новее версии.
Medar ★★★★★
(11.02.14 02:58:58 MSK)
- Показать ответы
- Ссылка
Ответ на:
комментарий
от Medar 11.02.14 02:58:58 MSK
Ответ на:
комментарий
от oster2011 11.02.14 03:01:05 MSK
Ответ на:
комментарий
от Medar 11.02.14 02:58:58 MSK
Ответ на:
комментарий
от mtk 11.02.14 03:03:30 MSK
Я установил libxxf86misc а как именно сделать символические ссылке
oster2011 ★★★
(11.02.14 03:05:43 MSK)
- Ссылка
Ответ на:
комментарий
от oster2011 11.02.14 03:05:11 MSK
libxxf86misc в аур-е есть. После установки этого пакета все равно ошибки выдает?
Medar ★★★★★
(11.02.14 03:06:39 MSK)
- Показать ответ
- Ссылка
Ответ на:
комментарий
от Medar 11.02.14 03:06:39 MSK
Ответ на:
комментарий
от oster2011 11.02.14 03:07:16 MSK
Ответ на:
комментарий
от Medar 11.02.14 03:09:27 MSK
Ответ на:
комментарий
от oster2011 11.02.14 03:10:47 MSK
Ответ на:
комментарий
от oster2011 11.02.14 03:07:16 MSK
В ауре не тот пакет. Тебе нужен lib32-libxxf86misc. Пока его не будет в системе, никакие симлинки не помогут.
mtk ★
(11.02.14 03:11:58 MSK)
- Показать ответ
- Ссылка
Ответ на:
комментарий
от mtk 11.02.14 03:11:58 MSK
Ответ на:
комментарий
от Medar 11.02.14 03:11:35 MSK
[root@oster Serious Sam 2]# pacman -Ql libxxf86misc
libxxf86misc /usr/
libxxf86misc /usr/lib/
libxxf86misc /usr/lib/libXxf86misc.so
libxxf86misc /usr/lib/libXxf86misc.so.1
libxxf86misc /usr/lib/libXxf86misc.so.1.1.0
libxxf86misc /usr/lib/pkgconfig/
libxxf86misc /usr/lib/pkgconfig/xxf86misc.pc
libxxf86misc /usr/share/
libxxf86misc /usr/share/licenses/
libxxf86misc /usr/share/licenses/libxxf86misc/
libxxf86misc /usr/share/licenses/libxxf86misc/COPYING
libxxf86misc /usr/share/man/
libxxf86misc /usr/share/man/man3/
libxxf86misc /usr/share/man/man3/XF86Misc.3.gz
libxxf86misc /usr/share/man/man3/XF86MiscGetKbdSettings.3.gz
libxxf86misc /usr/share/man/man3/XF86MiscGetMouseSettings.3.gz
libxxf86misc /usr/share/man/man3/XF86MiscGetSaver.3.gz
libxxf86misc /usr/share/man/man3/XF86MiscQueryExtension.3.gz
libxxf86misc /usr/share/man/man3/XF86MiscQueryVersion.3.gz
libxxf86misc /usr/share/man/man3/XF86MiscSetKbdSettings.3.gz
libxxf86misc /usr/share/man/man3/XF86MiscSetMouseSettings.3.gz
libxxf86misc /usr/share/man/man3/XF86MiscSetSaver.3.gz
oster2011 ★★★
(11.02.14 03:14:39 MSK)
- Показать ответ
- Ссылка
Ответ на:
комментарий
от mtk 11.02.14 03:13:39 MSK
Ответ на:
комментарий
от mtk 11.02.14 03:13:39 MSK
Если надо, могу тебе PKGBUILD написать
Вот это я понимаю помощь, а не отправки уроки учить.
Medar ★★★★★
(11.02.14 03:15:37 MSK)
- Показать ответ
- Ссылка
Ответ на:
комментарий
от Medar 11.02.14 03:15:37 MSK
lor сегодня, сжалься надо мной и меня даже не обосрали)
oster2011 ★★★
(11.02.14 03:16:53 MSK)
- Ссылка
Ответ на:
комментарий
от oster2011 11.02.14 03:14:39 MSK
Ответ на:
комментарий
от Medar 11.02.14 03:18:00 MSK
Ответ на:
комментарий
от oster2011 11.02.14 03:20:58 MSK
Вот PKGBUILD для lib32-xf86miscproto (тянется по зависимостям)
# Maintainer: mtk
_pkgname=xf86miscproto
pkgname=lib32-xf86miscproto
pkgver=0.9.3
pkgrel=1
pkgdesc="X11 Misc extension wire protocol (32-bit)"
arch=('x86_64')
url="http://xorg.freedesktop.org/"
license=('custom')
makedepends=('xorg-util-macros')
source=(${url}/releases/individual/proto/${_pkgname}-${pkgver}.tar.bz2)
sha256sums=('45b8ec6a4a8ca21066dce117e09dcc88539862e616e60fb391de05b36f63b095')
build() {
export CC="gcc -m32"
export CXX="g++ -m32"
export PKG_CONFIG_PATH="/usr/lib32/pkgconfig"
cd ${_pkgname}-${pkgver}
./configure --prefix='/usr' --libdir=/usr/lib32
make
}
package() {
cd ${_pkgname}-${pkgver}
make DESTDIR="${pkgdir}" install
# License
install -dm 755 "${pkgdir}"/usr/share/licenses/${pkgname}
install -m 644 {,"${pkgdir}"/usr/share/licenses/${pkgname}/}COPYING
}
# vim: ts=2 sw=2 et:
Вот PKGBUILD для lib32-libxxf86misc
# Maintainer: mtk
pkgname=lib32-libxxf86misc
pkgver=1.0.3
pkgrel=2
pkgdesc="X11 XFree86 misc extension library (32-bit)"
arch=('x86_64')
license=('custom')
url="http://xorg.freedesktop.org/"
depends=('lib32-libxext' 'lib32-xf86miscproto')
makedepends=('xorg-util-macros')
source=("${url}/releases/individual/lib/libXxf86misc-${pkgver}.tar.bz2")
sha256sums=('563f4200862efd3334c33a669e0a0aae5bab31f3998db75b87a99a697cc26b5b')
build() {
export CC="gcc -m32"
export CXX="g++ -m32"
export PKG_CONFIG_PATH="/usr/lib32/pkgconfig"
cd libXxf86misc-${pkgver}
./configure --prefix='/usr' --disable-static --libdir=/usr/lib32
make
}
package() {
cd libXxf86misc-${pkgver}
make DESTDIR="${pkgdir}" install
# License
install -dm 755 "${pkgdir}"/usr/share/licenses/${pkgname}
install -m 644 {,"${pkgdir}"/usr/share/licenses/${pkgname}/}COPYING
}
# vim: ts=2 sw=2 et:
Проверил, 32-битные либы собираются.
Дальше сам разберешся?
mtk ★
(11.02.14 03:29:07 MSK)
- Показать ответы
- Ссылка
Ответ на:
комментарий
от oster2011 11.02.14 03:20:58 MSK
Ответ на:
комментарий
от mtk 11.02.14 03:29:07 MSK
Ответ на:
комментарий
от mtk 11.02.14 03:29:07 MSK
Ответ на:
комментарий
от oster2011 11.02.14 03:31:11 MSK
- Удали xf86miscproto и libxxf86misc — мои PKGBUILDы не совместимы.
- Создай директории lib32-xf86miscproto и lib32-libxxf86misc
- Создай файлы с названием PKGBUILD в этих директориях и вставь туда то, что я запостил
- Перейди в директорию lib32-xf86miscproto
- Запусти makepkg, если ругнется на неустановленные зависимости, установи.
- Сделай sudo pacman -U lib32-xf86miscproto-0.9.3-x86_64.tar.xz
- Так же установи lib32-libxxf86misc-1.0.3-2-x86_64.tar.xz
mtk ★
(11.02.14 03:38:48 MSK)
- Показать ответы
- Ссылка
Ответ на:
комментарий
от mtk 11.02.14 03:29:07 MSK
Ответ на:
комментарий
от mtk 11.02.14 03:38:48 MSK
[denis@oster lib32-xf86miscproto]$ makepkg
==> ОШИБКА: PKGBUILD не существует.
oster2011 ★★★
(11.02.14 03:46:37 MSK)
- Ссылка
Ответ на:
комментарий
от mtk 11.02.14 03:38:48 MSK
[denis@oster lib32-xf86miscproto]$ makepkg
==> Сборка пакета: lib32-xf86miscproto 0.9.3-1 (Вт фев 11 01:45:48 EET 2014)
==> Проверяю необходимые для запуска зависимости...
==> Проверяю необходимые для сборки зависимости...
==> Получение исходных файлов...
-> Загрузка -0.9.3.tar.bz2...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0
curl: (22) The requested URL returned error: 404 Not Found
==> ОШИБКА: Загрузка -0.9.3.tar.bz2 завершилась неудачей
Преждевременный выход...
oster2011 ★★★
(11.02.14 03:48:41 MSK)
- Показать ответ
- Ссылка
Ответ на:
комментарий
от Medar 11.02.14 03:39:56 MSK
Надо будет поправить на совместимость с 64-битными:
#remove files that are being provided by original package
rm -rf "${pkgdir}"/usr/{include,share,bin,lib}
Я сам не тестировал либы, просто собрал. Не знаю, как проверить работоспособность, игру качать не рискую, вдруг еще понравится.
mtk ★
(11.02.14 03:48:57 MSK)
- Показать ответы
- Ссылка
Ответ на:
комментарий
от mtk 11.02.14 03:48:57 MSK
А в какую часть кода вставлять?)
oster2011 ★★★
(11.02.14 03:50:10 MSK)
- Ссылка
Ответ на:
комментарий
от oster2011 11.02.14 03:48:41 MSK
Ответ на:
комментарий
от mtk 11.02.14 03:48:57 MSK
Ответ на:
комментарий
от mtk 11.02.14 03:51:28 MSK
да тот же резутат
[denis@oster lib32-xf86miscproto]$ makepkg
==> Сборка пакета: lib32-xf86miscproto 0.9.3-1 (Вт фев 11 01:45:48 EET 2014)
==> Проверяю необходимые для запуска зависимости...
==> Проверяю необходимые для сборки зависимости...
==> Получение исходных файлов...
-> Загрузка -0.9.3.tar.bz2...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- 0:00:05 --:--:-- 0
curl: (22) The requested URL returned error: 404 Not Found
==> ОШИБКА: Загрузка -0.9.3.tar.bz2 завершилась неудачей
Преждевременный выход...
oster2011 ★★★
(11.02.14 03:53:58 MSK)
- Показать ответы
- Ссылка
Ответ на:
комментарий
от oster2011 11.02.14 03:51:41 MSK
Это надо делать внутри package() секции в PKGBUILDе, а не в консоли. Тебе достаточно просто удалить xf86miscproto и libxxf86misc, чтобы не было конфликта.
mtk ★
(11.02.14 03:55:04 MSK)
- Показать ответ
- Ссылка
Ответ на:
комментарий
от mtk 11.02.14 03:55:04 MSK
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Файлы PKGBUILD — это то, как создаются и создаются пакеты для Arch Linux и его производных, таких как Manjaro.
Возможно, вы даже немного сталкивались с ними, если когда-либо использовали AUR, Пользовательский репозиторий Arch Linux PKGBUILD.
Но как именно перейти от PKGBUILD к устанавливаемому пакету? Что именно происходит между ними и как вы можете сделать их для своих собственных пакетов? Вы узнаете их в этой статье.
Те, кто знаком с Bash или другими оболочками, будут рады узнать, если вы еще этого не сделали, что PKGBUILD — это в значительной степени просто сценарий оболочки с некоторыми переменными.
Файлы PKGBUILD состоят из переменных и функций, каждая из которых используется для определения самого пакета и способов его создания.
Чтобы создать пакет из PKGBUILD, используется утилита командной строки makepkg. После получения PKGBUILD вы просто запускаете makepkg внутри каталога, содержащего PKGBUILD, и вуаля, у вас есть устанавливаемый пакет!
В этом уроке вы ознакомитесь с только что созданным мной пакетом, который печатает «Hello World!» при запуске:
Приступаем к настройке
Чтобы следовать этому руководству, вам нужно создать пару файлов.
Во-первых, вам нужно создать файл с именем ПКГБИЛД. Если это еще не было ясно сказано, это послужит «рецептом» для создания вашего пакета.
Другой файл, который вам нужно создать, — это файл с именем привет мир.sh. Я объясню его назначение чуть позже.
Вы также можете создать оба этих файла с помощью одной команды.
touch PKGBUILD hello-world.sh
Проверить, были ли файлы созданы, можно с помощью команды ls:
И вы готовы к работе!
Настройка файла PKGBUILD
Вместо того, чтобы заставлять вас копировать и вставлять весь файл, я буду вводить каждую строку вместе с вами, чтобы вы могли лучше понять цель всего, что происходит. Если вы не предпочитаете учиться таким образом, я настоятельно рекомендую Статья Arch Wiki по созданию пакетов для Arch Linux.
В этой статье также рассматриваются не все параметры, которые вы можете установить в PKGBUILD, а некоторые наиболее часто используемые, чтобы вы могли приступить к работе как можно быстрее.
Разобравшись с этим, откройте текстовый редактор, и приступим прямо к делу!
имя_пакета
Перво-наперво, переменная pkgname. Это то, что определяет имя вашего пакета при установке и как Менеджер пакетов Arch Linux pacman отслеживает посылку.
Формат этой переменной (и некоторых других) принимает форму переменная = значение, с именем переменной слева и значением переменной справа, разделенными знаком равенства.
Чтобы установить имя пакета, введите в PKGBUILD следующее:
pkgname="hello-world"
- Чтобы установить другое имя пакета, замените
hello-worldс названием пакета. - Это не устанавливает команду, используемую для запуска программы. Это обрабатывается немного ниже в
package().
упаковка
Как указано в самом имени переменной, это устанавливает версию вашего пакета (например, 1.0.0). Это полезно, когда пользователь обновляет свою систему, поскольку установка более высокой версии приведет к тому, что пользователю будет предложено выполнить обновление.
Для установки введите следующее в PKGBUILD (после предыдущей строки):
pkgver="1.0.0"
pkgrel
Это связано с переменной pkgver, и обычно не важно о ней знать. Однако, как и переменная pkgver, она будет уведомлять пользователей об обновлениях, если она будет перемещена на большее число.
Он служит для любых изменений, которые требуют, чтобы pkgver оставался прежним, например, для любых изменений самого PKGBUILD. Это было бы полезно, если вы создали PKGBUILD для используемой программы (и хотите, чтобы версия оставалась такой же, как у пакета), и вам нужно исправить ошибку в самом PKGBUILD.
Чтобы установить переменную, введите в PKGBUILD следующее:
pkgver="1"
Эта переменная должна всегда начните с 1, а затем двигайтесь вверх по одному. Когда упаковка сам движется вверх, это может (и должно) быть сброшено на 1, так как сам pkgver будет уведомлять пользователей о доступных обновлениях.
pkgdesc
Это установит описание пакета, которое используется, чтобы помочь лучше идентифицировать пакет.
Чтобы установить его, просто поместите описание в кавычки:
pkgdesc="Hello world in your terminal!"
арка
Эта переменная устанавливает архитектура пакет совместим с. Это нормально, если вы не понимаете, что такое архитектура, поскольку в большинстве случаев она бесполезна.
Тем не менее, makepkg все еще нуждается в настройке, чтобы он знал, что пакет совместим с нашей системой.
Эта переменная поддерживает установку нескольких значений, поэтому makepkg требует другого синтаксиса, как показано ниже.
Чтобы установить его, введите в PKGBUILD следующее:
arch=("x86_64")
Если бы вы задали для этого несколько значений, вы бы разделяли каждое значение пробелом и кавычками, например: arch = («x86_x64» «рука»)
зависит
Здесь перечислены все пакеты, которые необходимы нашему пакету для работы. Как арка, он также может содержать несколько значений и поэтому должен использовать синтаксис скобок.
Поскольку у нашего пакета не будет никаких зависимостей, нам не нужно вводить это поле в PKGBUILD. Однако, если бы у нашего пакета были зависимости, мы бы просто использовали тот же синтаксис, что и арка.
выбор зависит
В нем перечислены пакеты, которые не требуются для работы, но необходимы для дополнительных функций.
Это следует тому же синтаксису, что и зависит.
конфликты
Это сообщает pacman, какие пакеты заставят наш пакет работать или вести себя не так, как нам хотелось бы.
Любой из перечисленных здесь пакетов будет удален до установки нашего.
Это следует тому же синтаксису, что и зависит так же.
лицензия
Это определяет Лицензия на программное обеспечение что ваша программа находится под лицензией. В Википедия есть информация, если вам нужна помощь в выборе лицензии. Установив это на custom будет работать, если вы не знаете, на что это установить.
Это имеет тот же синтаксис, что и арка и зависит:
license=("custom")
источник
Вот как makepkg узнает, какие файлы использовать для сборки нашего пакета. Он может содержать различные типы источников, включая локальные файлы и URL-адреса.
При добавлении локальных файлов введите имя файла относительно PKGBUILD, т. Е. Рассмотрите следующую структуру каталогов:
PKGBUILD
file.txt
src/file.sh
Если вы хотите включить файл.sh в нашем PKGBUILD вы должны ввести src / file.sh как его имя.
При вводе URL-адресов вы просто вводите полный URL-адрес, например https://mirrors.creativecommons.org/presskit/logos/cc.logo.large.png.
Вашему пакету нужен только файл hello-world.sh, и поскольку он находится в том же каталоге, что и PKGBUILD, вы просто вводите его имя в качестве значения для источник.
Эта переменная также использует тот же синтаксис, что и арка и зависит:
source=("hello-world.sh")
sha512sums
Это используется для проверки того, что файлы в источник не были изменены или загружены неправильно. Информацию о получении значений для этого можно найти в Статья Arch Wiki о PKGBUILD.
Если вы предпочитаете просто не устанавливать это (или вам просто не нужно, например, для локальных файлов), вы можете просто ввести SKIP для каждого файла в источник переменная:
sha512sums=("SKIP")
пакет ()
Это последняя и самая важная часть фактического создания нашего пакета. При работе с этим важно знать две переменные:
- $ {srcdir}: Здесь makepkg помещает файлы в источник Переменная. Это каталог, в котором вы можете взаимодействовать с файлами и вносить любые другие необходимые изменения в файлы.
- $ {pkgdir}: сюда мы помещаем файлы, которые будут установлены в нашей системе.
Структура папок для $ {pkgdir} настроена так, как если бы она была в реальной системе (т.е. $ {pkgdir} / usr / bin / hello-world создаст файл / usr / bin / hello-world при установке с помощью pacman.
package () содержит список команд, используемых для создания пакета.
Итак, если (гипотетически) вам нужен файл, который читает Linux, превосходит Windows в /usr/share/motto.txt запустите что-то вроде этого:
package() {
mkdir -p "${pkgdir}/usr/share"
echo "Linux is superior to Windows" | tee "${pkgdir}/usr/share/motto.txt"
}
Несколько примечаний к приведенной выше команде:
- $ {pkgdir} содержит нет каталоги внутри него сначала. Если вы пропустили команда mkdir, tee выдаст ошибку о том, что каталог не существует.
- При указании каталогов всегда добавьте к ним $ {pkgdir} or $ {srcdir} Переменная. Ввод чего-то вроде /usr/share/motto.txt без этого укажет на буквальный каталог /usr/share/motto.txt в вашей текущей запущенной системе.
Для вашего PKGBUILD вы собираетесь поместить файл hello-world.sh в / usr / bin / hello-world в вашей целевой системе. Вы также заставите файл сказать «Привет вам!» когда побежал.
Для этого введите в свой PKGBUILD следующее:
package() {
echo 'Hello to you!' > "${srcdir}/hello-world.sh"
mkdir -p "${pkgdir}/usr/bin"
cp "${srcdir}/hello-world.sh" "${pkgdir}/usr/bin/hello-world"
chmod +x "${pkgdir}/usr/bin/hello-world"
}
И вы сделали! Полученный в результате файл должен выглядеть примерно так:
Теперь соберите и установите пакет с makepkg -si команду, а затем запустите hello-world в вашем терминале, чтобы увидеть его вывод.
Подводя итог
И вот так вы сделали свой первый PKGBUILD! Вы на пути к созданию реальных пакетов для себя и, возможно, даже AUR.
Есть вопросы или что-то просто не работает? Не стесняйтесь размещать это в разделе комментариев ниже.
Оригинал статьи







