Автор Гілка: Krusader: Як створити архів з цільовими файлами замість симлінків?  (Прочитано 10949 раз)

Відсутній Олександр Барановський

  • Графоман
  • ****
  • дописів: 366
  • Карма: +0/-0
Шановне товариство, підкажіть, будь ласка, як зробити засобами файлового менеджера Krusader такий архів, щоб у ньому були не симлінки, а цільові файли?

Наприклад, у мене в каталозі є два файли:
test.tex — це звичайний файл,
test.bib — це символічне посилання на /some/dir/my.bib
(у моїй ситуації це LaTeX- і BibTeX-файл відповідно, але це неістотно).

У меню Krusader я вибираю пункт Файл > Запакувати…, щоб зробити .zip-архів. У результаті в цьому архіві будуть файли test.tex і test.bib. А я хотів би, щоб в архіві були файли test.tex і my.bib.

Можливо, я неправильно розумію, як працюють симлінки або як працює Krusader? Але решта функцій, повʼязаних із симлінками, працюють «очікувано». Наприклад, по клавіші F3 чи F4 Krusader показує цільовий файл. Якщо я копіюю симлінки через SFTP на інший компутер, то там зʼявляються цільові файли, а не симлінки. А от з архівами чомусь не так. У діалозі створення архівів чи в налаштуваннях Krusader не знайшов, як можна таку поведінку змінити.

Сподіваюся, що так можна зробити. Бо в мене в каталозі є інший архів з попередніми версіями файлів цього проекту, з яким все ок (в архіві звичайні файли, а не симлінки). Але той архів я робив досить давно, і тепер не пам'ятаю подробиць. Не пам'ятаю навіть, що раніше у мене виникала така проблема. Хоча не виключаю варіант, що тоді в мене просто були копії потрібних файлів у цьому каталозі, а не симлінки.

Зараз обійшов проблему так, що просто дописав у архів потрібні файли. Але це не дуже зручно:
1) насправді в моєму реальному проекті кілька симлінків, які вказують на файли в різних каталогах; треба кожен знайти і дописати в архів;
2) при цьому змінюється дата модифікації файла в архіві;
3) функцію підтримки запису треба спеціально увімкнути; типово вона вимкнена (я так зрозумів, Krusader вважає її небезпечною).
У своїх заявках дехто з науковців описував, якими корисними будуть їхні заплановані дослідження для національних інтересів, тоді як насправді ними рухала щира наукова допитливість і бажання написати пару статей.
Станіслав М. Улям, «Пригоди математика»

Відсутній yurchor

  • Видавець
  • *******
  • дописів: 3636
  • Карма: +3/-0
  • Grateful for our Iron Lung
    • Вікі користувачів KDE
Мабуть, ніяк. Krusader використовує для пакування KArchive (обрізану версію Ark). Вгадати, чого саме хоче користувач важко, тому розробники вирішили, що вгадувати не треба. Можливо, є рішення поза програмами з графічним інтерфейсом:

https://stackoverflow.com/questions/7167424/replace-all-symlinks-with-original
Try to reach you before winter comes
Always a place for you in my heart
You're not alone
All used up
I'd give anything to talk to you

Відсутній Олександр Барановський

  • Графоман
  • ****
  • дописів: 366
  • Карма: +0/-0
Дуже дякую за відповідь!

Так, я сам собі створив проблему, а тоді намагаюся її розвʼязати. Насправді мені не є принципово зробити саме через графічний інтерфейс. Просто Krusader — звичний і зручний для мене файловий менеджер, тому в ньому намагався робити. Але головне — отримати архів із вказаними характеристиками.

Виявилося, що в програми zip є опція -y (або в довгій формі: --symlinks), яка якраз дає змогу зберегти в архіві симлінк, а не файл, на який вказує цей симлінк. Якщо ж викликати zip стандартно, без цієї опції, то в архіві буде файл, на який вказує симлінк (те, що мені й треба).

Тому Krusader все ще залишається зручним файловим менеджером. Але я тепер можу відкрити в ньому емулятор термінала, викликати zip із заданим списком файлів (або взяти список файлів із заданого файла) і отримати бажаний архів!

Єдина особливість, яку я поки що помітив — у термінах початкового повідомлення: в архіві буде копія файла my.bib з іменем test.bib, а не з іменем my.bib (як я очікував). Але для мене це не є проблема. Бо якщо цей файл у цьому проекті називається і викликається як test.bib, то й в архіві він має бути якраз з таким іменем. Крім того, у моєму реальному проекті симлінк і цільовий файл мають однакові імена. Це я в початковому повідомленні дав їм різні імена, щоб спростити формулювання запитання.



Але ще я почитав дискусію за наведеним посиланням і тепер думаю, чи взагалі ефективно розвʼязую свою задачу. Можливо, варто відступити ще на крок назад і підійти з іншого боку?

Навіщо мені взагалі симлінки? У мене є «глобальні» BibTeX-файли і деякі BibTeX-файли, які використовуються в інших проектах. Я додав симлінки на них до каталога з цим конкретним проектом з двох причин.

1) Щоб з цього LaTeX-файла мати до них доступ.

Взагалі кажучи, тут можна обійтися без симлінків. Натомість я можу їх покласти в спеціальний каталог, доступний для BibTeX. І тоді вони будуть доступні і в цьому, і в будь-яких інших проектах.

2) Щоб ті, інші, BibTeX-файли можна було додати в архів разом з файлами цього проекту.

У певний момент часу мені треба зробити «знімок» проекту, спакувати всі потрібні файли в архів і надіслати архів співавтору. Тому я не хочу копіювати в цей каталог «глобальні» BibTeX-файли. Ті файли можуть редагуватися незалежно. А за симлінками має бути доступна їхня найсвіжіша версія.

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



У звʼязку з цим
Krusader використовує для пакування KArchive (обрізану версію Ark).
не дуже розумію, як працюють так звані залежності для форматів архівів. Чи могли би Ви прояснити? Маю на увазі меню Параметри > Налаштувати Krusader… > Залежності > вкладка «Архіватори».

Цитата
Активні пункти (які заповнено) підтримуються Krusader. Архіви цих пунктів Krusader оброблятиме прозоро (якщо вами було позначено пункт Навігація архівами як теками у розділі Архіви) і надаватиме вам змогу відкривати їх як теки. Якщо ж пункт архіву буде порожнім, Krusader спробує викликати програму, яка відкриває архіви відповідного типу.
https://docs.kde.org/trunk5/uk/extragear-utils/krusader/konfig-dependencies.html

Тобто Krusader викликає відповідну програму тільки для навігації архівами як теками? І ці залежності ніяк не використовуються, коли вибрати пункт меню для пакування, тоді тільки KArchive працює?

У будь-якому разі останнє речення в цитаті зовсім незрозуміле. Як Krusader буде «викликати програму, яка відкриває архіви відповідного типу», якщо відповідний пункт порожній (незаповнений), тобто не вказано цю програму?
У своїх заявках дехто з науковців описував, якими корисними будуть їхні заплановані дослідження для національних інтересів, тоді як насправді ними рухала щира наукова допитливість і бажання написати пару статей.
Станіслав М. Улям, «Пригоди математика»

gdekjifgb

  • Гість
варіант: А хардлінки (не ln -s) не можна використовувати для ваших загадкових біб-файлів?

Відсутній yurchor

  • Видавець
  • *******
  • дописів: 3636
  • Карма: +3/-0
  • Grateful for our Iron Lung
    • Вікі користувачів KDE
Оце тобі... Вчергове переконуюся, що перш ніж відповідати, треба все ретельно перевірити самому. Якісь сторонні уявлення про код майже завжди є невідповідними. Вибачте.

Насправді, якщо подивитися на код Krusader, то проблему вирішити дуже просто — треба лише прибрати «y» з цього рядка, і усе перезібрати:

https://invent.kde.org/utilities/krusader/-/blob/master/krArc/krarc.cpp#L1564
Try to reach you before winter comes
Always a place for you in my heart
You're not alone
All used up
I'd give anything to talk to you

Відсутній Олександр Барановський

  • Графоман
  • ****
  • дописів: 366
  • Карма: +0/-0
Насправді, якщо подивитися на код Krusader, то проблему вирішити дуже просто — треба лише прибрати «y» з цього рядка, і усе перезібрати:

https://invent.kde.org/utilities/krusader/-/blob/master/krArc/krarc.cpp#L1564
Дякую, що так високо оцінюєте мої здібності! :-) На жаль, на даному етапі я не готовий перезбирати Krusader. Але тепер знаю, де шукати, якщо колись захочу спробувати.

Ваша перша відповідь була чудова, бо вона спонукала мене поглянути на задачу з іншого боку. Тому все ок. Мені тепер уже подобається варіант з викликом zip. CLI-програму легко викликати в інших програмах і таким чином можна все це діло пробувати автоматизувати.
У своїх заявках дехто з науковців описував, якими корисними будуть їхні заплановані дослідження для національних інтересів, тоді як насправді ними рухала щира наукова допитливість і бажання написати пару статей.
Станіслав М. Улям, «Пригоди математика»

Відсутній Олександр Барановський

  • Графоман
  • ****
  • дописів: 366
  • Карма: +0/-0
варіант: А хардлінки (не ln -s) не можна використовувати для ваших загадкових біб-файлів?
Дякую за варіант! Думаю, що можна. Але не треба. З хардлінками в плані архівування буде ж така сама ситуація, як і з симлінками?

А я вже зрозумів, як зробити архів з бажаними характеристиками. І тепер почав міркувати над тим, як обійтися в цій задачі без симлінків взагалі. І тому написав деякі технічні подробиці про задачу, яка в мене виникла. Для архівування байдуже, що то за файли архівуються. Але для інших підходів може згодитися інформація про природу цих файлів.

Не розповідав, що таке BibTeX-файли, бо впевнений, що пан yurchor знає, що це таке. Я б не сказав, що вони якісь особливо загадкові. Бо це досить давній інструмент. Мабуть, широко відомий, але у вузьких колах. Коротко: це бібліографічна база даних у формі простого тексту. Спеціальна програма (BibTeX) перетворює цей файл в інший файл зі спеціальною розміткою, який інша спеціальна програма (LaTeX) може прочитати і в результаті видати список публікацій у статті, книжці, дисертації тощо.

Якщо проводити аналогії, то можна сказати, що BibTeX-файл (файл з розширенням .bib) певною мірою схожий на XML-файл чи JSON-файл.
У своїх заявках дехто з науковців описував, якими корисними будуть їхні заплановані дослідження для національних інтересів, тоді як насправді ними рухала щира наукова допитливість і бажання написати пару статей.
Станіслав М. Улям, «Пригоди математика»

gdekjifgb

  • Гість
... З хардлінками в плані архівування буде ж така сама ситуація, як і з симлінками?
"Хто це сказав?"

Наскільки я знаю (без підглядання в довідку): Хардлінк - це не посилання (не ярлик) на файл, а іще одне ім'я файлу. Як конкретно воно реалізоване - я не пам'ятаю. Хардлінки можна вказувати тільки на файли в межах одного розділу диска. Хоча ви це повинні знати (про ln) краще мене.

Не розповідав, що таке BibTeX-файли...
Мене більш цікавить що конкретно пишуть користувачі (складні формули, ієрогліфи, якісь сторінки для газет, журналів, книжки, анекдоти???).

Десь тут є дуже довга тема на тему шрифтів та латексу. Таке враження що всі аккаджеміки чи кандидати-науковці постійно використовують латекс для написання дисертацій чи інщих якихось наукових текстів, книжок, анекдотів...

Відсутній Олександр Барановський

  • Графоман
  • ****
  • дописів: 366
  • Карма: +0/-0
... З хардлінками в плані архівування буде ж така сама ситуація, як і з симлінками?
"Хто це сказав?"
Я не стверджував, а напівзапитував.

Не знаю, чому я раніше не пробував використовувати хардлінки. Можливо, через те, що ідея симлінків здавалася мені природнішою і цілком задовольняла мої потреби.

Тепер спробував. Справді, з архівуванням засобами Krusader чи засобами zip немає таких особливостей, як із симлінками.

Але це не працює так, як мені треба. Якщо я редагую і зберігаю цільовий файл, то зв'язок із хардлінком зникає. І навпаки, коли редагую хардлінк, так само зникає зв'язок із цільовим файлом. Це тепер два різні файли. Хоча за ідеєю мали бути різні імена того самого файла. Виявляється (знайшов у Вікіпедії), що «some editors however break the hard link concept».

А якщо так, то це мені не підходить, бо в моїй задачі має зберігатися зв'язок з початковим цільовим файлом. Коли я його редагую, то ці зміни мають бути доступні й для того проекту, де в каталозі лежить лінк на початковий файл.

Не розповідав, що таке BibTeX-файли...
Мене більш цікавить що конкретно пишуть користувачі (складні формули, ієрогліфи, якісь сторінки для газет, журналів, книжки, анекдоти???).

Десь тут є дуже довга тема на тему шрифтів та латексу. Таке враження що всі аккаджеміки чи кандидати-науковці постійно використовують латекс для написання дисертацій чи інщих якихось наукових текстів, книжок, анекдотів...
ЛаТеХ, БібТеХ та інші пов'язані програми хороші для підготовки структурованих документів. Зручно робити складні наукові публікації (дисертації, статті, книжки тощо). Тому ці програмні засоби популярні в академічному середовищі. Зручність роботи з якимись складними формулами чи ієрогліфами — це тільки додатковий бонус, на мій погляд. А латекс науковці теж інколи використовують, але з іншою метою.

Але це ми вже виходимо за межі тематики цієї гілки.
У своїх заявках дехто з науковців описував, якими корисними будуть їхні заплановані дослідження для національних інтересів, тоді як насправді ними рухала щира наукова допитливість і бажання написати пару статей.
Станіслав М. Улям, «Пригоди математика»

gdekjifgb

  • Гість
Хоча за ідеєю мали бути різні імена того самого файла. Виявляється (знайшов у Вікіпедії), що «some editors however break the hard link concept».
ооо, some editors however break - щось схоже було (а може і зараз є) в Окулярі 1.3.3 (убу 18.04), тільки там такий "глюк" із символічними лінками.

Ні, нема такого глюку. Але був(?), бо я хотів відправити баг-репорт. Що було? Якщо відкрити по символічному лінку якийсь пдф і в Окулярі натиснути на "Файл-Зберегти", то замість символічного лінку буде копія документа, на який вказував лінк. Але я щойно перевірив - такого нема.

Я не дивуюсь "some editors however break".

Цитата
Але це ми вже виходимо за межі тематики цієї гілки.
от халепонька. Мене саме це і цікавить. Ну то таке.. неважливе*, мабуть?
---

* - тепер я спати не зможу. Дуже цікаво  :)
« Змінено: 2021-02-28 20:04:11 від gdekjifgb »