apt-get 尝试访问 ~/.config/git/

apt-get 尝试访问 ~/.config/git/

使用包管理器安装新包时,我收到如下所示的权限错误。发生这种情况是因为/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 execveapt-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

如果没有匹配则输出为空,否则显示文件、行号和行内容。

相关内容