При установке новых пакетов с помощью менеджера пакетов я получаю ошибку разрешений, показанную ниже. Это происходит, потому что /home
монтируется с другого сервера, однако почему вообще происходит apt-get
попытка доступа ?~/.config/git
(base) blk6@gho:~/$ sudo apt-get install libssl-dev
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
libssl-doc
The following NEW packages will be installed:
libssl-dev
0 upgraded, 1 newly installed, 0 to remove and 57 not upgraded.
Need to get 1,566 kB of archives.
After this operation, 7,846 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 libssl-dev amd64 1.1.1-1ubuntu2.1~18.04.5 [1,566 kB]
Fetched 1,566 kB in 3s (507 kB/s)
warning: unable to access '/home/Users/blk6/.config/git/attributes': Permission denied
warning: unable to access '/home/Users/blk6/.config/git/ignore': Permission denied
Selecting previously unselected package libssl-dev:amd64.
(Reading database ... 219434 files and directories currently installed.)
Preparing to unpack .../libssl-dev_1.1.1-1ubuntu2.1~18.04.5_amd64.deb ...
Unpacking libssl-dev:amd64 (1.1.1-1ubuntu2.1~18.04.5) ...
Setting up libssl-dev:amd64 (1.1.1-1ubuntu2.1~18.04.5) ...
warning: unable to access '/home/Users/blk6/.config/git/ignore': Permission denied
решение1
Я понятия не имею, почему ваш менеджер пакетов пытается вызвать git, но вы можете попробовать использоватьstrace
Утилита для выяснения того, что происходит. Strace отслеживает системные вызовы, включая попытки открытия файлов или выполнения программ.
Чтобы исследовать вашу конкретную проблему, я бы попытался выяснить, какие команды выполняются ( -e execve
) apt-get
и их ответвленные дочерние процессы ( -f
):
sudo strace -f -e execve apt-get install ...
Если вы удалите -e execve
опцию, фильтр не будет применен, что приведет к длинному выводу. Чтобы заставить strace записать свой вывод в файл, вы можете использовать опцию -o file.txt
перед командой (например, strace -f -o file.txt apt install ...
).
Вы также можете использовать -e execve -e file
для отслеживания как выполнения команд, так и попыток открытия или чтения файлов. Затем найдите вызов команды git и найдите строки выше этого вызова. Возможно, это покажет имя скрипта, из которого была вызвана команда.
Если этого все еще недостаточно, вы можете рассмотреть сканирование конфигурации apt в /etc/apt/
. Возможно, вы настроили его на вызов какого-то хука. Пример поиска вызовов git:
grep -nre git /etc/apt
Если совпадений нет, вывод будет пустым, в противном случае отобразится файл, номер строки и ее содержимое.