Linux常见问题三则:Executable Path Is Not Absolute


个人网络日志站点知行空间,欢迎访问!


(一)ExecutablePathIsNotAbsolute及Linux内核升级和dist-upgrade

1.systemd-udevd.service启动失败

  • 问题
    Ubuntu下执行sudo apt-get upgrade时包报错,
    systemd-udevd.service - idev Kernel Device Mangaer
        Loaded: error(Reason: Exec format error)
        Active: inactivate(dead)
        Docs: man:systemd-udevd.service(8)
              man:udev(7)
    /lib/systemd/system/systemd-udevd.service:26: Executable path is not absolute: udevadm control --rel
    
  • 解决
    从报错信息来看,udevadm的可执行文件应该使用绝对路径,打开/lib/systemd/system/systemd-udevd.service文件,可以看到udevadm可执行文件确实使用的是相对路径,使用which udevadm查找udevadm的绝对路径,修改/lib/systemd/system/systemd-udevd.service文件的第26
    # 可以看到第26行执行了可执行文件udevadm
    sudo vi /lib/systemd/system/systemd-udevd.service
    # 查找udevadm的绝对路径,/bin/udevadm
    which udevadm 
    # 改为`/bin/udevadm`
    /bin/udevadm
    
    重新启动udevadm服务即可,同样其他的Executable path is not absolute报错也可通过这种方式解决
  • 补充
    udev为当前 Linux 默认的设备管理工具。udev 以守护进程的形式运行,通过侦听内核发出来的 uevent 来管理 /dev目录下的设备文件。不像之前的设备管理工具,udev 在用户空间 (user space) 运行,而不在内核空间 (kernel space) 运行。

2.Linuxapt-get upgrade时提示有n个软件未被升级

  • 问题:
    apt-get upgrade没有解决软件包之间的依赖问题

  • 解决:

    使用apt-get dist-upgrade

  • 补充

    • apt-get update是下载源里面的metadata的. 包括这个源有什么包, 每个包什么版本之类的
    • upgrade是根据update命令下载的metadata决定要更新什么包(同时获取每个包的位置),系统将现有的Package升级,如果有相依性的问题,而此相依性需要安装其它新的Package或影响到其它Package的相依性时,此Package就不会被升级,会保留下来.
    • dist-upgrade:可以聪明的解决相依性的问题,如果有相依性问题,需要安装/移除新的Package,就会试着去安装/移除它. (所以通常这个会被认为是有点风险的升级)

3.Linux安装新内核

  • 背景
    安装指定版本的内核

  • 方法
    在https://kernel.ubuntu.com/~kernel-ppa/mainline/网站找到对应的内核版本,选择自己CPU架构对应的安装包,选择如下四个文件下载

    Linux常见问题三则:Executable Path Is Not Absolute_第1张图片

下载完成后执行:

sudo dpkg -i *.deb
  • 补充

常见的x86_64,amd64,i386,i686,i686,x86,armv7,aarch64,ppc64le分别表示:
Linux常见问题三则:Executable Path Is Not Absolute_第2张图片

你可能感兴趣的:(linux,linux,ubuntu)