Предотвращение перезаписи пакета, установленного вручную - PullRequest
0 голосов
/ 15 февраля 2019

Ubuntu Bionic предоставляет Protobuf 3.0.0, и я хотел бы использовать последнюю версию 3.6.1.

Я собрал исходные коды Protobuf и установил их с префиксом /usrтаким образом, файлы оказываются в том же месте, куда их помещает официальный пакет Ubuntu.

Однако, если я впоследствии выдам apt-get install protobuf-compiler, он перезапишет мой двоичный файл protoc более старой версией.(На самом деле, protobuf-compiler определяется как зависимость сборки пакета, который я собираю с mk-build-deps.)

Я пытался использовать apt-mark manual protobuf-compiler, чтобы сообщить apt, что я установил вручнуюэто, но он говорит мне, что я не могу этого сделать, потому что пакет не установлен.(Как это определяет? Я не знаю.)

Точно так же apt-mark hold не предотвращает перезапись двоичного файла.

Как правильно установить это программное обеспечение?apt понимаете, что зависимость удовлетворена, и не перезаписать ли мою новую сборку старой?

1 Ответ

0 голосов
/ 15 февраля 2019

Простым решением может быть простое изменение установочного каталога на protobuf-compiler 3.6.1.

Вместо установки на /usr вы можете установить в другой каталог.На моем рабочем компьютере (на котором у меня нет прав sudo) я устанавливаю в созданный мной каталог с именем /data/local_installs.Затем обновите переменную среды path

export PATH=/data/local_installs:$PATH

и вы готовы к работе.

С этим методом вам не нужно беспокоиться о том, что делает apt, так как protobuf-compiler в /data/local_installs всегда будет находиться на вашем пути до apt контролируемой версии в /usr

...