Локальне сховище з пакетами AUR (Arch Linux)

Контекст, у якому було зроблено допис

Багато хто буде знати, що я зазвичай використовую дистрибутиви на основі вихідного коду, справа в тому, що під час відпустки останнє оновлення мого коханого Фунту, це призвело до збою системи (можливо, я міг це виправити, але мені не хотілося з ними битися), тому я вирішив дати новий шанс Arch Linux, Я давно ним користувався.

І в чому була моя проблема з нею? В основному те, що я використовую ДУЖЕ програмне забезпечення AUR (для читачів, які вперше читають AUR, схоже на "репо", в якому користувачі завантажують програми, які не є в офіційних репозиторіях, щось на зразок PPA Ubuntu).

У чому проблема цього? Це багато разів програмне забезпечення AUR не працює, або тому, що супровідники нехтують своїми пакетами, або тому, що вони просто не мають знань, щоб виправити проблему, яка виникла з новою версією, це, в основному і, думаючи, що я дуже легко злюсь, це мене трахає, оскільки бути боротьба з компіляціями та збірками pkg, які ламаються Gentoo/Фунту.

Ось статистика сторінки офіційний будучи щедрими і припускаючи, що пакунки, які ніколи не оновлювались, та осиротілі пакунки однакові, ми маємо майже 1/4 AUR це не працює, звідси мій гнів. Що цього разу було іншим?

Початок допису

Я знайшов додаток локальний репо, це диво, що ви бачите, що когось турбує AUR Як і я, він вирішив створити, принаймні, щоб надати користувачеві контроль над цими "проблемами", в основному те, що дозволяє нам цей додаток, це зробити локальне сховище, в яке ми можемо помістити пакунки, які ми компілюємо з AUR, таким чином, ми можемо подбати про правильну організацію та підтримку пакетів з AUR.

Встановлення

Ми можемо завантажити та скомпілювати його за допомогою makepkg:

wget https://aur.archlinux.org/packages/lo/local-repo/local-repo.tar.gz
tar -xf local-repo.tar.gz
cd hello
makepkg -sic

Або ми можемо встановити його до Яорт:

yaourt -S --noconfirm local-repo

Налаштування:

Тоді, як там вказано, ми повинні налаштувати local-repo через файл «~ / .config / local-repo»Спочатку він порожній, що ми продовжимо, це створити папки, де ми розмістимо наше репо, в моєму випадку я помістив його в /home/x11tete11x/.repo/x11tete11x

mkdir -p ~/.repo/x11tete11x/logs
mkdir -p ~/.repo/x11tete11x/pkgbuilds
mkdir -p ~/.repo/x11tete11x/pkgs-x86_64

тепер ми налаштовуємо "~ / .config / local-repo":

nano ~/.config/local-repo

Зверніть увагу, що тут є приклади налаштування локального репо: /usr/share/local-repo/config.example

У всякому разі, оскільки те, для чого я хочу використовувати local-repo, є дуже простим, це моя конфігурація:

[x11tete11x] path = /home/x11tete11x/.repo/x11tete11x/pkgs-x86_64
sign = no
signdb = no
log = /home/x11tete11x/.repo/x11tete11x/logs/local-repo-log
buildlog = /home/x11tete11x/.repo/x11tete11x/logs/build-logs
pkgbuild = /home/x11tete11x/.repo/x11tete11x/pkgbuilds

Як бачите, я вказую, звідки я хочу, щоб ви отримували кожну річ, ось у вас є опис того, що робить кожна річ, взятий із поста, на якому я базуюсь це робити:

  • шлях -> Вказує розташування пакунків сховища.
  • підпис -> Підпишіть пакети ключем PGP.
  • signdb -> Підпишіть базу даних ключем PGP.
  • журнал -> Розташування файлу, де буде збережено журнал локального репо.
  • журнал збірки -> Папка, де зберігатимуться журнали під час створення пакетів.
  • pkgbuild -> Папка, де зберігати файли PKGBUILD.

Додайте пакунки

Якщо пакет, який потрібно додати, знаходиться в наших папках як вільний пакет (наприклад, ми завантажуємо один і зберігаємо його в папці для завантажень, або ми самостійно компілюємо пакет у папці в нашому домі, призначеному для компіляцій), ми додаємо його за допомогою :

local-repo nombre-del-repositorio -a ruta-del-paquete

а якщо це пакет AUR ми використовуємо:

local-repo nombre-del-repositorio -A nombre-paquete

Пояснення: Якщо пакет, який ви хочете встановити, має іншу залежність AUR, не "автоматично вирішує" ці залежності

Тобто, наприклад, якщо ми хочемо встановити пакет appmenu-gtk2 це залежить від libdbusmenu-gtk2 що в AUR, Ми не можемо цього зробити

local-repo x11tete11x -Меню програми-gtk2

оскільки він скаже, що не може знайти пакет libdbusmenu-gtk2, ми повинні зробити:

local-repo nombrerepo -A libdbusmenu-gtk2 а потім local-repo nombrerepo -A appmenu-gtk2

таким чином, коли ви шукаєте залежності libdbusmenu-gtk2, він вже буде доступний у репозиторіях.

Щоб додати пакет, ви можете скопіювати його безпосередньо в папку сховища (у моєму випадку ~ / .repo / x11tete11x / pkgs-x86_64), а потім оновити базу даних вручну, але це дуже громіздко

Видаліть пакунки

Для видалення пакунків ми маємо інструкцію:

local-repo nombre-del-repositorio -r nombre-paquete

Додайте локальне сховище до списку сховищ

Ми повинні додати створене сховище до списку сховищ, які ми використовуємо в даний час, для цього нам потрібно відредагувати файл /etc/pacman.conf і розмістити рядки, які я розмістив нижче, на початку місця, де починаються сховища, щоб наше репо отримує пріоритет над рештою, його також можна додати до кінця як додаткове репо:

sudo nano /etc/pacman.conf

і ставимо:

[x11tete11x] SigLevel = Optional TrustAll
Server = file:///home/x11tete11x/.repo/x11tete11x/pkgs-x86_64

Нарешті, ми синхронізуємо бази даних Pacman і у нас є готове сховище.

sudo pacman -Sy

Примітка: Перший раз, коли я захотів його синхронізувати, він видав мені помилку і сказав, що не може знайти файл: "/home/x11tete11x/.repo/x11tete11x/pkgs-x86_64/x11tete11x.db", вирішіть це, виконавши : MARKDOWN_HASH1a42f7dd94ef93f234b52c01c73dc5f0MARKDOWN_HASH тобто він створив порожній файл з таким іменем, і лише тоді, коли я його синхронізував, я його добре оновив, і він почав працювати коректно.

Оновлення локального сховища

Після того, як наш репозиторій запрацює, ми повинні подбати про його оновлення, для цього ми маємо:

local-repo -UV nombre-del-repositorio

Вибір -U оновити пакети, знайдені в AUR і варіант -V оновити пакети CVS з AUR (наприклад, git, svn або cvs).
І нарешті кілька скріншотів репо :

знімок2

Yapa: "Прискорити процес компіляції пакета"

Оскільки ми збираємося компілювати пакети, ми трохи пришвидшимо прогрес, торкнувшись однієї з опцій, яка за замовчуванням відключена, в основному те, що ми будемо робити, це сказати makepkg використовувати всі ядра для компіляції для цього ми шукаємо рядок: «MAKEFLAGS» всередині /etc/makepkg.conf і ставимо «= -j »Тобто в моєму випадку я маю 7-ядерний Core I4 який для HT додає ще 4 логічних ядра, тоді мій MAKEFLAGS виглядає так:

MAKEFLAGS="-j9"

знімок3

Джерело: Tuxylinux