Файли .pacnew в Arch Linux: Важливість і обробка
Якщо ви використовуєте Arch Linux, ви, напевно, помітили, що після певного часу, особливо після оновлень системи, файли з розширенням .pacnew починають з’являтися на вашій системі. І якщо ви читаєте це, можливо, саме це і привело вас сюди: дізнатися, що це за файли, чому вони виникають і що з ними робити.
Отже, ви прийшли за адресою. У цьому тексті я намагатимусь пояснити все чітко і зрозуміло. Тож почнемо з головного питання.
Що таке файли .pacnew в Arch Linux?
Коли ви оновлюєте свою систему Arch Linux, наприклад, виконуючи команду pacman -Syu, деякі вже встановлені пакети містять конфігураційні файли, які зазвичай зберігаються в /etc. Однак, якщо ви налаштували один із цих файлів, і постачальник пакету змінив його в оновленій версії, Arch (звичайно) не перезапише вашу локально встановлену версію.
Це запобіжний захід, який захищає ваші локальні зміни від втрати. Натомість у фоновому режимі Pacman створює файл .pacnew — «нову» версію конфігураційного файлу, що постачається з оновленим пакетом, забезпечуючи вам доступ до оновленої конфігурації, яку пропонує пакет. Зрозумійте це так:
- Ваш поточний конфіг = ваші спеціальні налаштування.
- Файл
.pacnew= оновлена версія від постачальника.
Наприклад, якщо /etc/pacman.conf був змінений, після оновлення ви побачите /etc/pacman.conf.pacnew. Тоді ви можете відкрити обидва файли пліч-о-пліч (про це детальніше нижче) та скопіювати важливі відмінності.
Після того, як ви злили або замінили файл, ви зможете безпечно видалити версію .pacnew, щоб підтримувати порядок. Головна мета полягає в тому, щоб тримати конфігурацію вашої системи в актуальному стані без втрати ваших налаштувань. Якщо ви вже замислюєтеся, як виконати злиття, просто продовжуйте читати. Це насправді досить проста задача.
Як порівняти та злитись з файлами .pacnew в Arch Linux
Тепер, коли ми охопили теорію, настав час перейти до практики. Перший крок, як і передбачалося, — перевірити, які файли .pacnew присутні на нашій системі Arch. Для цього Arch надає зручний інструмент під назвою pacdiff, який займається їх пошуком.
Цей інструмент не входить до стандартного набору — він є частиною пакету pacman-contrib, тому давайте почнемо з його встановлення.
sudo pacman -S pacman-contrib
Досить просто, так? Тепер, коли у нас є pacdiff, давайте подивимося на всі файли .pacnew, доступні в нашій системі Arch.
pacdiff -o
Як ви можете побачити на зображенні вище, системні оновлення тихо створили шість файлів .pacnew, які просто чекають, щоб ми з ними розібралися. Ось що ми можемо зробити з цього моменту.
Найпростіше і очевидне, що можна зробити — це просто скопіювати (або перемістити) файл .pacnew на оригінальний. Наприклад:
cp /etc/example.conf.pacnew /etc/example.conf
Тоді можна видалити файл .pacnew і продовжити. Звичайно, це може спрацювати в деяких випадках, але загалом це не найкраща ідея, і я дуже рекомендую цього уникати.
Ось чому: по-перше, це залишає вас повністю в невідомості про те, що насправді змінилося в новій версії. Ви просто довіряєте, що це не зламає нічого. По-друге, цей підхід працює тільки в тому випадку, якщо ви абсолютно впевнені, що не редагували цей файл раніше, бо в іншому випадку ви втратите всі свої цінні зміни.
Але найголовніше, ви ж користувач Arch (до речі). Це означає, що ви повинні бути стійкими до звичайних проблем, які, на жаль, виникають у деяких користувачів при роботі з командним рядком. Тож замість того, щоб шукати легкі рішення, я пропоную дотримуватися належного, послідовного процесу для обробки файлів .pacnew, який я вам зараз продемонструю.
Щоб порівняти відмінності між вашим оригінальним файлом і його версією .pacnew — і об’єднати будь-які зміни — ви можете використовувати зручний інструмент vimdiff, який постачається з пакетом vim. Тож, якщо ви ще не встановили його, просто запустіть:
sudo pacman -S vim
Я впевнений, що багато хто вже готовий скаржитися, тому чому б не спростити справи і не скористатися одним із багатьох GUI-додатків для цієї мети? Причина проста — зазвичай вони підтягують безліч додаткових залежностей, таких як Qt або GTK, залежно від графічного середовища, що не є ідеальним для кожної конфігурації. Я надаю перевагу універсальному рішенню, і для цієї роботи термінальний vimdiff підходить ідеально.
Отже, виконайте наступну команду, і pacdiff за замовчуванням викличе vimdiff:
sudo pacdiff
Ця команда обробить всі файли .pacnew, які вона знайде, один за одним. На жаль, pacdiff не приймає параметри імені файлу. Ключовим моментом тут є опції, які у вас є:
- (V)ідкрити: Відкриває порівняння вашого поточного файлу та версії
.pacnew. - (M)erge: Спробує об’єднати
.pacnewі існуючий файл у інтерактивному режимі. - (S)кинути: Ігнорує цей файл на даний момент і переходить до наступного.
- (R)емовіть pacnew: Видаляє файл
.pacnewбез зміни вашої поточної конфігурації. - (O)верзати з pacnew: Замінює ваш існуючий конфігураційний файл на версію
.pacnew. - (Q)uit: Виходить з
pacdiffбез обробки решти файлів.
Наступним кроком є, звичайно, перегляд відмінностей. Натисніть «v», натисніть «Enter», і ви потрапите на наступний екран vimdiff, який показує перший файл, знайдений pacdiff — у цьому прикладі, /etc/hosts.
Ключове, що потрібно пам’ятати, — це те, що ліва панель відображає файл .pacnew, а права панель показує ваш поточний оригінальний файл, який насправді використовує система.
Тут ви можете переносити зміни між двома файлами, використовуючи потужні команди diff, dp та do.
dp: Копіює (переносить) відмінності з поточного файлу в інший. Подумайте: «Я хочу перенести цю зміну туди».do: Копіює (отримує) відмінності з іншого файлу в поточний. Подумайте: «Я хочу взяти цю зміну та перенести її сюди».
Просто перемістіть курсор на рядок, що відрізняється, і введіть одну з двох команд, щоб внести бажані зміни. Коли ви закінчите, введіть команду Vim :wqa (write і quit all) і натисніть Enter — це поверне вас до основного екрана.
Оскільки ви вже внесли всі редагування, можна безпечно видалити файл .pacnew, натиснувши «r», і натиснувши Enter. Файл буде видалено, а pacdiff автоматично перейде до наступного, де вас знову спитають, що робити далі.
Як ви бачите, ви можете уникнути всього цього, просто об’єднавши або безпосередньо перезаписавши файл, але я настійно рекомендую цього не робити. Найбезпечніший (і професійний) підхід полягає в тому, щоб переглянути кожну зміну самостійно і вирішити, як ви хочете з нею впоратися.
На завершення, просто швидка нотатка: коли ви в режимі порівняння (vimdiff), ви можете перемикатися між панелями, натискаючи Ctrl + W, а потім використовуючи клавіші стрілок вліво або вправо, щоб перемістити курсор до потрібної панелі.
Висновок
Управління файлами .pacnew є частиною підтримки здорової та прогнозованої системи Arch Linux. Як ви вже дізналися, ці файли з’являються, щоб захистити ваші власні конфігурації від перезапису, але вони також сигналізують про те, що щось змінилося. Всі зміни потрібно переглянути та вирішити, як їх слід інтегрувати.
Для отримання додаткової інформації я також рекомендую ознайомитися з Arch Wiki.
Дякую за ваш час! Сподіваюся, мої поради були корисними. Як завжди, ваш відгук дуже цінний.




