Установка 2019 Arch Linux на сервер Vultr
Вступ Arch Linux має менші, але все ще сильні, ніж більш популярні дистрибутиви. Його філософія зовсім інша, з перевагами
В Arch Linux офіційні репозиторії: core, extra та community. Ці пакунки вже скомпільовані, і вони встановлені через pacman
. Здебільшого звичайні користувачі можуть ігнорувати, що ці 3 офіційні репозиторії є окремими. Ядро містить найважливіші пакунки, такі як ядро, процес завантаження, мережа, керування пакетами, openssh тощо. Він також має суворіші вимоги до більш ретельного тестування перед випуском нових версій. Extra містить інші популярні пакети, які не такі критичні, як-от X-сервер, менеджери вікон або веб-браузери. Спільнота містить менш популярні пакети. Тільки довірені користувачі (близько 60 активних користувачів, за яких проголосували інші довірені користувачі) мають доступ до внесення змін до офіційних сховищ.
У 2019 році в офіційних сховищах за адресою https://www.archlinux.org/packages знаходиться близько 11 000 пакетів . Але в Linux є багато інших програм. Отже, AUR (сховище користувачів Arch Linux) існує, тому будь-який користувач Arch може додати нову програму і стати її супроводжувачем, або прийняти «осиротілий» пакет без поточного супроводжувача. В AUR на сайті https://aur.archlinux.org/ є близько 55 000 пакетів .
Є 3 критичні відмінності від AUR:
PKGBUILD
сценарій оболонки для автоматичного створення пакунка, а не скомпільовані двійкові файли. (Іноді він також містить невеликі текстові виправлення або сценарії встановлення/оновлення/видалення оболонки). Це зробило величезну роботу, дозволивши будь-якому користувачеві зробити свій внесок, одночасно зменшивши ймовірність того, що хтось зможе поширювати шкідливий код. Спільнота Arch все ще досить корисна щодо проблем з пакетами AUR, але зазначається, що ви використовуєте їх на свій страх і ризик. Оскільки все, що він надає, — це PKGBUILD
, зрештою, ви зобов’язані переглянути файл, який PKGBUILD
ви збираєтеся використовувати. (Зрозуміло, багато користувачів цього не роблять і просто покладаються на інших, щоб спостерігати.)pacman
він не взаємодіє безпосередньо з AUR, ви несете відповідальність за оновлення пакетів AUR. Коли ви періодично оновлюєте всю свою систему за допомогою pacman
, вона не завантажуватиме оновлення PKGBUILD
файлів AUR автоматично , не компілює їх та не встановлює для вас.Хоча ця стаття зосереджується на створенні пакетів з AUR, ті самі методи можна використовувати для самостійного створення пакетів з офіційних репозиторіїв.
PKGBUILD
У порівнянні з .spec
файлом, який використовують багато інших дистрибутивів, a PKGBUILD
є коротким і простим сценарієм оболонки. Хоча деякі пакети є складнішими, вони можуть бути просто подібними до наступного:
pkgname=NAME
pkgver=VERSION
pkgrel=1
pkgdesc='DESCRIPTION'
url=http://example.com/
arch=('x86_64')
license=('GPL2')
source=(http://example.com/downloads/${pkgname}-${pkgver}.tar.gz)
sha256sums=('f0a90db8694fb34685ecd645d97d728b880a6c15c95e7d0700596028bd8bc0f9')
build() {
cd "${srcdir}/${pkgname}-${pkgver}"
./configure
make
}
package() {
cd "${srcdir}/${pkgname}-${pkgver}"
make install
}
Цей документ стосується:
PKGNAME
: назва пакетаPKGVER
: версія пакета (майже завжди відповідає номеру версії upstream)PKGREL
: «Версія» Arch PKGBUILD
для певного PKGVER
(зазвичай 1, але збільшується, якщо потрібно внести зміни PKGBUILD
між попередніми випусками)ARCH
: Архітектура, на якій може бути побудований пакет (дещо застаріла, оскільки офіційні репозиторії Arch Linux підтримують лише "x86_64" (64-розрядні ЦП), але пакети AUR все ще можуть підтримувати "i686" (32-розрядні ЦП) або "будь-який" позначати архітектуру не має значення)PKGBUILD/ETC
: Будь-які файли фактично в сховищі AUR; то PKGBUILD
, і будь-які інші дрібні текстові патчі, або встановити / оновити / видалення скриптів. Не включає файли вгорі по потоку в source
масив.Незважаючи на те, що AUR виявився надзвичайно надійним, варто подивитися на a, PKGBUILD/ETC
щоб переконатися, що він отримує джерело з місця, якому ви готові довіряти; (наприклад, офіційне розташування, яке може бути з github, але не просто репозиторій github якоїсь випадкової людини, який не має відношення до пакета upstream); і що PKGBUILD/ETC
він не містить підозрілих кодів.
PKGBUILD/ETC
Якщо офіційні репозиторії не містять пакунка, який ви хочете встановити, знайдіть його на https://aur.archlinux.org/ . Сподіваємося, ви виявите, що те, що ви шукаєте, існує, оновлюється та підтримується.
Найкращий спосіб отримати PKGBUILD/ETC
з AUR - це клонувати його через git
.
Встановіть git
, якщо цього ще немає:
# pacman -S git
Використовуйте "Git Clone URL", показану на веб-сайті AUR для цього пакета:
$ git clone https://aur.archlinux.org/fslint.git
Увійдіть в каталог і подивіться на його вміст. (Всі перераховані тут, за винятком . .. .git
є PKGBUILD/ETC
):
$ cd <PKGNAME>
$ ls -a
. .. .git PKGBUILD .SRCINFO
Якщо ви перевірите PKGBUILD
, ви, сподіваємося, побачите, що він використовує офіційний вихідний код і виконує типові кроки для створення пакета, тому він виглядає надійним. .SRCINFO
Містить тільки інформацію , що відображається на веб - сайті про пакет, тому не викликає тривогу. Якщо тут є якісь інші файли, вони не надаються (безпосередньо) upstream, тому файли та те, як вони використовуються в файлі, PKGBUILD
слід перевірити, щоб переконатися, що вони не містять нічого підозрілого.
Хоча це потрібно набагато рідше, ви можете створити пакет уже в офіційних репозиторіях, включити новий патч, створити новішу версію тощо.
Отримайте PKGBUILD/ETC
з ядра та додаткових репозиторіїв:
$ git clone --single-branch --branch "packages/<PKGNAME>" git://git.archlinux.org/svntogit/packages.git "<PKGNAME>"
Зі сховища спільноти:
$ git clone --single-branch --branch "packages/<PKGNAME>" git://git.archlinux.org/svntogit/community.git "<PKGNAME>"
PKGBUILD/ETC
Якщо PKGBUILD/ETC
випущено git clone
оновлену версію , ви можете повернутися до цього каталогу, створеного за допомогою , і оновити їх:
$ git pull
Потім перекомпілюйте та оновіть пакунок, використовуючи метод на ваш вибір, наведений нижче.
Існує багато способів компіляції пакетів. Зрештою, все використовує makepkg
. Є 2 офіційно підтримуваних способи:
makepkg
див. https://www.vultr.com/docs/using-makepkg-on-arch-linux .makepkg
в чистому chroot
, див. https://www.vultr.com/docs/using-devtools-on-arch-linux .Існує багато допоміжних програм AUR (наприклад, makepkg
обгортка), які офіційно не підтримуються Arch, наприклад aurutils
, yay
, а також нещодавно припинені aurman
та yaourt
. Навіть якщо ви використовуєте одну з цих інших допоміжних програм, настійно рекомендуємо ознайомитися з офіційно підтримуваними способами бути більш ефективними, коли щось піде не так.
Решта цього документа використовуватиметься YOUR BUILDER
для позначення обраного вами методу.
Ви можете налаштувати локальне сховище як центральне розташування для всіх створених вами пакунків.
Розмістіть локальне сховище, де забажаєте:
# mkdir /archLocalRepo
Запустіть YOUR BUILDER
без будь-яких параметрів автоматичного встановлення та скопіюйте пакунок у своє локальне сховище.
# cp <PKGNAME>-<PKGVER>-<PKGREL>-<ARCH>.pkg.tar.xz /archLocalRepo
Додайте новий пакет до індексу сховища:
# repo-add /archLocalRepo/archLocalRepo.db.tar.gz /archLocalRepo/<PACKAGE-FILE-NAME>
Щоб видалити пакунок з індексу сховища та самого файлу пакету:
# repo-remove /archLocalRepo/archLocalRepo.db.tar.gz <PKGNAME>
# rm /archLocalRepo/<PACKAGE-FILE-NAME>
Якщо вам потрібно замінити наявний файл пакета, вам потрібно окремо видалити той, що замінюється, а потім додати новий. Ви не можете просто скопіювати новий файл поверх старого.
Налаштуйте pacman
використання вашого локального сховища, відредагувавши /etc/pacman.conf
, і додайте наступне в кінці:
[archLocalRepo]
SigLevel = Optional TrustAll
Server = file:///archLocalRepo
Вам необхідно pacman
оновити його знання про репозиторій (включаючи локальне), бази даних; щоб побачити пакети, які ви додали до нього:
# pacman -Sy
Потім ви можете встановити пакунок, не інакше, як якщо б він був у офіційному сховищі:
# pacman -S <PKGNAME>
Note if the package is merely a dependency of another package you are going to install, you don't need to install it directly. When you install this other package, pacman
will automatically find and install the dependency packages in your local repository.
By default, YOUR BUILDER
compiles using a single thread. On multi CPU systems, you can allow using multiple threads where possible. The build system will compile parts of the source code in parallel when it can. Sometimes parts of code require other parts it interacts with to already be compiled, so you won't always see as many threads being used as are allowed. Edit /etc/makepkg.conf
.
To allow using as many threads as you have virtual cores, add the following:
MAKEFLAGS="-j$(nproc)"
Note: This will run the command nproc
every time, so it will always use the current number of cores, in case you upgrade your Vultr server
To allow using multiple virtual cores, but not all of them, such as to reduce impact to overall system performance, add a specific number. For example, if you have 24 cores, you could allow 21 to be used:
MAKEFLAGS="-j21"
Specifying more threads than the number of virtual cores you have will decrease performance.
It's fairly rare, but some packages' build systems have problems with parallel compilation, from not properly defining dependencies between parts of code. Typically, those packages' PKGBUILD
files will handle this for you by invoking make -j1
, which overrides the default you set. If it needs this and it's missing, report it to the Arch package maintainer.
PKGBUILD
Вихідний масив може містити .asc
або .sig
файли. Вони часто додаються за допомогою розширення bash, тому їх легко пропустити:
source=("http://example.com/downloads/${pkgname}-${pkgver}.tar.gz{,.sig}")
Якщо будь-який з цих форматів файлів підпису включено до вихідного масиву, YOUR BUILDER
автоматично намагається перевірити підпис вихідного архіву вихідного потоку. Ключ PGP підпису повинен бути в брелоку користувача; інакше він припиниться з помилкою:
==> Verifying source file signatures with gpg...
<SOURCE-FILE> ... FAILED (unknown public key 1234567890ABCDEF)
==> ERROR: One or more PGP signatures could not be verified!
Важливо розуміти, що ключ GPG можна показати кількома способами. Його відбиток пальця складається з 40 шістнадцяткових символів, і це те, що ви повинні завжди використовувати. Довгий ідентифікатор ключа – це останні 16 цифр, а короткий ідентифікатор ключа – останні 8 цифр. Хоча коротше — це зручно, воно допускає дублікати, що скасовує всі міркування щодо перевірки підписів. Гірше того, відомо, що зловмисники генерують підроблені ключі, які відповідають ключам меншої довжини для високопрофільних розробників.
Якщо ви ще не намагалися створити пакет, завантажте джерела, які включатимуть файл підпису: (Якщо ви спробували створити пакет, він уже буде там)
$ makepkg --nobuild --noextract
Щоб отримати повний відбиток пальця:
$ gpg <ASC-OR-SIG-FILENAME>
...
gpg: using RSA key 155D3FC500C834486D1EEA677FD9FCCB000BEEEE
...
В ідеалі ви повинні перевірити цей відбиток пальця з верхньої частини. Щоб бути безпечним, upstream має надати ключі своїх супроводжувачів десь на своєму веб-сайті або в джерелі. Простий пошук ключа на сервері ключів насправді нічого не робить. Зловмисник може легко подати підроблений ключ, оскільки сервери ключів не перевіряють справжність. Ключі можуть бути підписані іншими ключами, тому, якщо у вас уже є ключ, якому ви довіряєте, ви повинні бути досить безпечними, довіряючи будь-яким ключам, які вони підписали.
Це може бути чимало роботи, особливо коли upstream не публікує відбиток пальця або не розміщує його в тому місці, де його легко знайти. PKGBUILD
Міститиме validpgpkeys
масив, які були додані до супроводжуючого Arch. Якщо пакунок є офіційним сховищем, це означає, що довірений користувач розмістив його туди, і ви повинні бути досить безпечними, щоб просто довіряти всьому, що перераховано в масиві. Якщо пакет знаходиться в AUR, пам’ятайте, що це означає, що інший користувач Arch помістив його туди. Якщо ви стурбовані довірою до нього, ви завжди можете подивитися на користувача, щоб побачити, що він робив у минулому з Arch.
Щоб додати відбиток пальця до брелока:
$ gpg --recv-keys <FINGERPRINT>
Тепер ви можете запустити YOUR BUILDER
, і він буде довіряти відбитку пальця.
AUR пакети з іменами , що закінчуються -git
, -svn
, -bzr
або -hg
є версії розвитку, які використовують вгору по течії в останню систему контролю версій зробити замість вище це останній реліз. Наприклад, а-git
пакет буде використовувати останню фіксацію upstream у головній гілці (або їх еквівалентній гілці). Це чудово підходить для запуску виправлень помилок і нових функцій, які ще не були випущені, а також під час роботи з upstream над помилкою, про яку ви повідомляєте, зокрема, якщо вам потрібно переконатися, що це не помилка, яка була виправлена комітом, який ще не був у випуску. Ці пакети слід вважати потенційно нестабільними. Однак, на жаль, іноді немає альтернативи, тому що деякі супроводжувачі вгорі ніколи не позначають теги на випуски або переходять надто довго між тегами випусків і очікують, що кожен використовує свій останній коміт. Залежно від пакета, ви можете бути першим, хто спробує запустити цю фіксацію. Залежно від попередніх розробників їх останній комміт може навіть не компілюватися,
Важливо розуміти поширену помилку. Не позначайте пакет розробки AUR як застарілий просто тому, що він показує старий номер версії! PKGBUILD
Файли пакетів для розробки містять додаткову функцію pkgver()
, яка використовується для автоматичного аналізу оновленого PKGVER
вихідного коду вищестоящого. Поширеним форматом для -git
пакета є <TYPICAL-VERSION-NUMBER>.r<COMMITS-SINCE-LAST-RELEASE>.<GIT-COMMIT>-<PKGREL>
. Пакет може бути зазначений в AUR як 5.0.0.r102.8d7b42ac21-1
, тому що це те, що він PKGBUILD
містить. Але, коли ви створюєте пакет, YOUR BUILDER
він автоматично оновлюється PKGVER
відповідно до нещодавно завантаженого вихідного коду. Насправді, якщо було випущено багато нових версій, але нічого не змінилося в процесі збірки, такий PKGBUILD
список старої версії може закінчитися створенням чогось набагато новішого, наприклад9.1.2.r53.2c9a41b723-1
. Для цих пакетів версія, зазначена на веб-сайті, є просто останньою версією на момент, коли супроводжувач AUR востаннє мав оновлювати файл PKGBUILD
.
Супроводжувачі AUR НЕ повинні просто оновлювати файл, PKGVER
щоб відображати нові версії. Вони повинні робити це лише тоді, коли нові коміти вгорі дійсно вимагають щось інше PKGBUILD
для зміни.
Позначайте застарілий пакет AUR для розвитку, лише якщо ви знаєте, що щось насправді не так. Це означає, що ви насправді спробували його використати, але він не може компілювати або проаналізувати належним чином відформатований новий файл PKGVER
. Іноді трапляються речі, які змушують супроводжувача AUR оновлювати PKGBUILD
, наприклад, змінюються залежності вище за потоком, змінюються configure
параметри, нові версії GCC виявляють помилки у вихідному коді, яких не робили попередні, змінюються розташування вищестоящих репозиторіїв або розробники вище за потоком змінюють свою типову версію. знаходиться у вихідному коді, що порушуєPKGVER
функція розбору. Зрозумійте, що навіть якщо він не компілюється або не працює, це може означати, що супроводжувач AUR повинен внести зміни в свій процес збірки, або це може бути проблемою з вихідним кодом, за яку супроводжувач AUR не несе відповідальності.
Обов’язково прочитайте вищевказаний розділ «Пакети розвитку AUR», перш ніж повідомляти, що пакет застарів!
Якщо upstream випустила новішу версію для пакета без розробки, ніж у PKGBUILD
, ви можете натиснути «Позначити пакет застарілий» і ввести повідомлення для супроводжувача. Використовуйте https://packages.archlinux.org для офіційних пакетів репозитарію та https://aur.archlinux.org для пакетів AUR. Корисним повідомленням буде номер нової версії і, можливо, посилання на оголошення про випуск або вихідний код. Функція позначення автоматично надсилає ваше повідомлення електронною поштою супроводжувачу.
Якщо у пакеті AUR немає відповіді через 2 тижні, ви можете натиснути «Надіслати запит» із типом «Orphan», якщо ви хочете попросити довіреного користувача видалити поточного супроводжувача та зробити пакет бездіяльним, якщо супроводжувач не відповідає на запит сироти. Як правило, люди подають запити-сироти лише в тому випадку, якщо вони здатні та бажають прийняти пакет, і бажано лише якщо вони вже мають робочий поточний PKGBUILD
.
Тим часом ви часто можете самостійно оновити застарілий пакет. Часто вам потрібно лише змінити a PKGBUILD
, оновивши номер PKGVER
до нової версії, і оновити суми цілісності. Програма updpkgsums
існує в пакеті pacman-contrib
, яка автоматично обчислює суми та оновлює їх у файлі PKGBUILD
для вас. Варто перевірити примітки до випуску upstream, щоб побачити, чи не згадується в них, що потрібно щось змінити під час процесу встановлення нової версії. Іноді зміни, що виникли нагорі, вимагають додаткових змін або капітального ремонту для PKGBUILD/ETC
. Часто source
масив вбудовується PKGVER
в нього, тому часто навіть не потребує оновлення.
Вступ Arch Linux має менші, але все ще сильні, ніж більш популярні дистрибутиви. Його філософія зовсім інша, з перевагами
Vultr надає вам чудову функціональність, дозволяючи використовувати власне власне зображення на додаток до їхніх чудових шаблонів, що дозволяє вам запускати
Пакет Devtools спочатку був створений для довірених користувачів, щоб належним чином створювати пакети для офіційних сховищ. Однак його може використовувати і звичайний користувач
Якщо ви використовуєте makepkg безпосередньо, це дещо забруднює вашу систему. Необхідно встановити групу пакетів базового розробки. Таким чином, за замовчуванням потрібні лише залежності
Передумови Сервер Vultr з сучасною версією Arch Linux (див. цю статтю). Доступ до Sudo. Команди, які потрібно виконувати як root, мають префікс # і один
Передумови Сервер Vultr з сучасною версією Arch Linux (див. цю статтю). Запущений веб-сервер, Apache або Nginx Sudo Необхідні команди доступу t
Передмова Arch Linux — це дистрибутив загального призначення, добре відомий своєю передовою технологією та гнучкою конфігурацією. За допомогою знімків Btrfs ми можемо взяти
В Arch Linux офіційні репозиторії: core, extra та community. Ці пакунки вже скомпільовані, і вони встановлені через pacman. Для го
У цьому посібнику пояснюється, як налаштувати сервер Minecraft за допомогою Spigot на Arch Linux. У цьому підручнику передбачається, що ви звичайний користувач (без root) і маєте права
Передумови Сервер Vultr з сучасною версією Arch Linux (див. цю статтю). Доступ до Sudo. Команди, які потрібно виконувати як root, мають префікс #. Th
Передумови Сервер Vultr з сучасною версією Arch Linux. Додаткову інформацію див. у цьому посібнику. Доступ до Sudo. Команди, які потрібно виконувати як root ar
Передумови Сервер Vultr з сучасною версією Arch Linux (див. цю статтю). Запущений веб-сервер, доступ до Apache або Nginx Sudo: потрібні команди
Передумови Сервер Vultr з сучасною версією Arch Linux (див. цю статтю). Запущений веб-сервер, доступ до Apache або Nginx Sudo: потрібні команди
Передумови Сервер Vultr з сучасною версією Arch Linux (див. цю статтю). Запущений веб-сервер, доступ до Apache або Nginx Sudo. Вимагають команди
У цьому посібнику пояснюється, як налаштувати сервер Mumble (Murmur) на Arch Linux. Все, що зроблено в цьому підручнику, виконується як користувач root. Установка ан
У цьому підручнику пояснюється, як налаштувати сервер Counter-Strike: Global Offensive на Arch Linux. У цьому посібнику припускається, що ви ввійшли в систему зі стандартним використанням
У цьому посібнику пояснюється, як налаштувати сервер Team Fortress 2 на Arch Linux. Я припускаю, що ви увійшли з обліковим записом користувача без права root і має доступ до sudo
Передумови Сервер Vultr з сучасною версією Arch Linux (див. цю статтю). Доступ до Sudo: команди, які потрібно запускати як root, мають префікс # і один
Передумови Сервер Vultr з сучасною версією Arch Linux (див. цю статтю) Доступ до Sudo: команди, які потрібно запускати як root, мають префікс # і один
Штучний інтелект не в майбутньому, він тут прямо в сьогоденні У цьому блозі Прочитайте, як програми штучного інтелекту вплинули на різні сектори.
Ви також стали жертвою DDOS-атак і спантеличені методами запобігання? Прочитайте цю статтю, щоб вирішити свої запитання.
Можливо, ви чули, що хакери заробляють багато грошей, але чи замислювалися ви коли-небудь, як вони заробляють такі гроші? давайте обговоримо.
Ви хочете побачити революційні винаходи Google і як ці винаходи змінили життя кожної людини сьогодні? Тоді читайте в блозі, щоб побачити винаходи Google.
Концепція самокерованих автомобілів, щоб вирушати в дороги за допомогою штучного інтелекту, є мрією, яку ми давно мріємо. Але, незважаючи на кілька обіцянок, їх ніде не видно. Прочитайте цей блог, щоб дізнатися більше…
Оскільки наука розвивається швидкими темпами, бере на себе багато наших зусиль, ризики піддати себе незрозумілій Сингулярності також зростає. Читайте, що може означати для нас сингулярність.
Методи зберігання даних можуть розвиватися з моменту народження Даних. Цей блог висвітлює еволюцію зберігання даних на основі інфографіки.
Прочитайте блог, щоб дізнатися про різні шари архітектури великих даних та їх функціональні можливості найпростішим способом.
У цьому цифровому світі пристрої розумного дому стали важливою частиною життя. Ось кілька дивовижних переваг пристроїв розумного дому щодо того, як вони роблять наше життя гідним життя та спрощують його.
Нещодавно Apple випустила додаткове оновлення macOS Catalina 10.15.4, щоб виправити проблеми, але схоже, що оновлення викликає більше проблем, що призводять до блокування комп’ютерів Mac. Прочитайте цю статтю, щоб дізнатися більше