Как использовать оверлейное монтирование для объединения нескольких каталогов с разными подкаталогами?

Существует множество пакетов, прямо или косвенно зависящих от libpopplerилиpoppler-utils()в настольной установке Ubuntu по умолчанию.

Удаление popple-utilsозначает удаление cups-filter, которое зависит от него.

printer-driver-foo2zjsзависит от cups-filters | foomatic-filters, поэтому его можно сохранить, пока вы устанавливаете foomatic-filters, который не зависит от poppler-utils.

poppler-utilsrecommandscolordи вы, вероятно, настроили установку recommands автоматически (по умолчанию ). Он также рекомендует poppler-utils. Вы просили удалить пакет poppler-utils, но вместо него можно установить его версию для i386.

В конце концов, aptпытается выполнить ваш запрос, сводя к минимуму ущерб (количество других пакетов, которые нужно удалить ), но в этом случае это приводит к неоптимальному выбору, поскольку вы в конечном итоге получаете тот же пакеты установлены, но в чужой архитектуре.

Существует много других возможных альтернативных способов решения этих проблем с зависимостями.

Я лично всегда использую aptitudeдля управления пакетами, потому что это позволяет мне выбирать, как я хочу разрешать конфликты зависимостей.

В aptitudeя установил вид по умолчанию на плоский(в опциях -> предпочтения, также отметьте опцию «перейти к следующей записи» ), тогда вы сможете легче фильтровать пакеты. Например, нажав l(в нижнем регистреL)до ограничить представление и введя ~i poppler, вы получите список установленных пакетов, имя которых содержит poppler.

Затем вы можете удалить(-)или очистить(_)каждый пакет, и при этом вы заметите, что aptitudeпомечает конфликт (и некоторые пакеты могут стать красными ). Затем вы можете изучить конфликт(и)и выбрать одно из возможных решений. Вы также можете повлиять на разрешение, одобрив или отклонив индивидуальный выбор (, например удалить этот пакет , установить этот пакет ... ).

Также обратите внимание, что *poppler*в вашем apt remove *poppler* --autoremoveнужно было брать в кавычки. *poppler*— шаровидная оболочка. Если бы, например, в текущем каталоге был файл popplering, он был бы расширен оболочкой, поэтому в итоге вы бы запустили apt remove popplering --autoremove.

Некоторые оболочки, такие как csh, tcsh, fish, zsh (или bash -O failglob), позволили бы вам осознать свою ошибку в вашем случае, сообщив об ошибке No match.

1
13.07.2020, 11:28
1 ответ

Будущие читатели, будьте осторожны:В этом вопросе предлагается объединить два каталога, содержащих множество подкаталогов -. Это не следует использовать для обычных операций git. Для этого вам обычно следует использовать файл .gitignoreили подмодули git .


Если вы хотите объединить два каталога в одном месте, даже если есть перекрывающиеся файлы, вы можете использовать простое монтирование overlayfs. В контексте, о котором вы спрашиваете, это лучше всего сделать как оверлейные -только для чтения. Если бы он был предназначен для чтения/записи, он поместил бы все измененные файлы в отдельный каталог. Маловероятно, что вы ищете это.

Чтобы создать оверлей только для чтения, вы не указываете upperилиworkdir:

mount -t overlay overlay -o lowerdir=specialRepos1/vendor/:specialRepos2/vendor/ repoDirs1/vendor/

В Archlinux есть хорошее описание этой функции здесь:

https://wiki.archlinux.org/index.php/Overlay_filesystem

1
18.03.2021, 23:20

Теги

Похожие вопросы