Linux常见问题及解决方案
1 [解决] dpkg被中断问题
Linux系统安装软件是有时会碰到“dpkg 被中断,您必须手工运行 sudo dpkg –configure -a解决此问题”,然而按照提示运行却并没能很好的解决问题。其实导致这个问题的主要原因是因为/var/lib/dpkg/updates文件下的文件有问题,可能是其他软件安装过程或是其他原因导致的,这里删除掉然后重建即可。
sudo rm /var/lib/dpkg/updates/*
sudo apt-get update
sudo apt-get upgrade
解释:
-
sudo apt-get update指令会重新建立这些资料,所以不必担心删除后会出问题;
-
sudo apt-get upgrade会更新你的电脑里面已安装的软件的明细,根据软件的明细更新软件到最新版。
2 [解决] ubuntu E: 无法获得锁 /var/lib/apt/lists/lock - open
错误提示:
E: 无法获得锁 /var/lib/apt/lists/lock – open (11: 资源暂时不可用)
E: 无法对目录 /var/lib/apt/lists/ 加锁
这个问题在Ubuntu系统下非常常见,在添加源,然后在更新源时中途中断了更新,只要再安装软件或者再去更新的时候就会出来的错误提示。
解决办法一:
面对这个问题,有人直接在终端中输入命令:
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
即可解决。
解决办法二:
在更新进程还在内存中,要先终止这个进程,所以,先得找出进程,在终端中输入:ps -aux
,输出如下:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 3545 0.0 0.1 5948 1196 ? S 13:09 0:00 sudo apt-get up
root 3546 0.0 0.2 8408 2484 ? S 13:09 0:00 apt-get update
3545与3546就是进程的ID,终止它们两个要在终端中输入:
sudo kill 3545
sudo kill3546
3 为UBuntu系统添加root用户
想要在登录界面使用root身份登录,可编辑 /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf 文件,如没有此文件,则直接创建它。执行命令:
gedit /usr/share /lightdm/lightdm.conf.d/50-ubuntu.conf
编辑: 50-unity-greeter.config,添加如下代码,保存退出:
[SeatDefaults]
#用户会话为ubuntu(原本就有的一行)
user-session=ubuntu
#需要手工输入登陆系统的用户名和密码
greeter-show-manual-login=true
#禁用guest用户
all-guest=false
修改完之后执行reboot命令重启Ubuntu生效,发现可以在登录界面使用root身份登录了。
如果想取消“登录”这一步骤,开机直接能进入桌面,可以再将50-unity-greeter.config文件编辑如下:
[SeatDefaults]
#用户会话界面为ubuntu(原本就有的一行)
user-session=ubuntu
#启动后以root身份自动登录
autologin-user=root
#登录会话界面设置为unity-greete
greeter-session=unity-greete
#需要手工输入登陆系统的用户名和密码(改为false,可以取消登录界面)
greeter-show-manual-login=true
#禁用guest用户
all-guest=false
Ubuntu启用root账户后,进入桌面后报错:读取/root/.profile时发现错误:stdin:is not a tty 作为结果,会话不会被正确配置。解决方法为:
gedit /root/.profile
将文件末尾一句 mesg n 更改为:
tty -s && mesg n
然后重启即可解决。
4 ubuntu下查看显卡驱动是否已经成功安装
运行命令:
glxinfo | grep rendering
如果结果是“yes”,证明显卡驱动已经成功安装。
如果提示有问题,可能是系统里面没有安装mesa-utils,安装过程:在终端输入命令:
sudo apt-get install mesa-utils
然后再运行命令:
glxinfo | grep rendering
5 ubuntu14.04 中 ifconfig 只有lo的问题
新装的 ubuntu 14.04 无法上网, 执行 ifconfig 只看到 lo, 没发现eth0,怀疑是没有装网卡驱动。
执行以下命令,查看需要安装网卡驱动的型号:
lspci | grep -i net
显示信息如下:
00:1f.6 Ethernet controller: Intel Corporation Device 15bc (rev 10)
可以看出:网卡类型是有线网Intel Corporation Device ,对应型号驱动去这里下载。
下载完成后进入下载目录,先解压然后安装,命令如下:
tar -xvf e1000e-3.4.2.1.tar.gz
sudo make install
sudo modprobe e1000e
然后再执行 ifconfig 就可以看到 eth0,发现也可以正常上网了。
6 Ubuntu“系统设置”中没有了“语言支持”怎么办?
安装搜狗输入法前会安装”输入法切换工具-im-switch“,安装该软件会导致内置im-config(输入法)和LanguageSupport(语言支持)的卸载,所以才会发现在Ubuntu“系统设置”中没有了“语言支持”。
解决办法:
第一步,删除im-switch,在“软件管理中心”输入“im-switch”并删除它,当然也可以使用apt-get remove
命令删除。
第二步,安装安装缺少程序,安装“语言支持”:在“软件管理中心”输入“language”,就会出现“语言支持”了,安装它。
随后进入“系统设置”看一下有没有“语言支持”,如果没有,重新启动再看看!如果有了”语言支持“,点击进入,系统会自动提示是否安装剩余依赖软件,点击安装即可。
7 Indigo版本Gazebo的启动修复
indigo版本的Gazebo是2.2.3, 针对首次运行Gazebo,会出现非常缓慢,原因可能是不能正确下载模型。
Warning [ModelDatabase.cc:356] Getting models from[http://gazebosim.org/models/]. This may take a few seconds.
解决方法: 通过直接下载所有模型到用户的根目录下的.gazebo/models/下。
8 Linux下Qt还原快捷键失灵的解决方案
Linux下使用Qt5.9.7,发现按下 Ctrl+Y 无法还原,进入“工具->选项->环境->键盘”,在“过滤器”一栏输入"redo"才发现快捷键是 Ctrl+Shift+Z,将其修改回 Ctrl+Y 即可解决。
9 Rviz: fixed frame [map] does not exist
当打开RVIZ,就会出现如上错误,不能在网格上显示任何内容,在 tf 上也不能看到任何框架。
解决方案是为连接到网格的固定框架提供发布者,以描述相对于它的框架。这意味着使用四元数/欧拉角(0 0 0 1),rviz可以将坐标系从固定坐标系转换为框架。这是一个发布者,告诉rviz在哪里放置固定的世界框架。运行如下指令即可解决:
rosrun tf static_transform_publisher 0 0 0 0 0 0 1 map my_frame 10
10 关于pthread_create未定义的引用的奇葩解决
(1)本来在代码里包含了pthread.h 第一次编译:gcc -o create create.c
提示错误 未定义的引用
(2)后来知道linux标准库没有pthread.h 要链接之-lpthread 第二次编译:gcc -o create -lpthread create.c
仍然提示错误 未定义的引用!
(3)再后来。。。。。发现,-lpthread应该写在末尾 第三次编译:gcc -o create create.c -lpthread
编译成功。。。。。
11 apt-get update更新软件库的时候出现的警告
(1)警告一:W: GPG 错误:http://ppa.launchpad.net trusty InRelease: 由于没有公钥,无法验证下列签名: NO_PUBKEY B5B116B72D0F61F0
解决方案:执行以下命令:
#添加相应签名
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B5B116B72D0F61F0
(2)警告二:W: 校验签名出错。此仓库未被更新,仍然使用以前的索引文件。GPG 错误:http://packages.ros.org trusty InRelease: 由于没有公钥,无法验证下列签名: NO_PUBKEY F42ED6FBAB17C654
解决方案:执行以下命令:
#添加相应签名
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
12 Linux如何查看user和hostname?
(1)打开终端查看
终端左侧的root@zlkj:~$
,前面的root为user - 用户名,后面的zlkj为hostname - 主机名。
(2)命令查看
user查看命令为whoami
,hostname查看命令为hostname
,如下所示:
root@zlkj:/home/zlkj# whoami
root
root@zlkj:/home/zlkj# hostname
zlkj
13 Linux怎么给一个普通用户reboot权限?
Linux怎么给一个普通用户reboot权限?即普通用户可以不输入密码就可执行 sudo reboot 命令实现重启。方法如下:
先执行命令sudo gedit /etc/sudoers
,添加 user hostname=NOPASSWD: /sbin/shutdown -h now,/sbin/reboot 这一行到文件的末端,替换其中的user为你的用户名,hostname为你的主机名。由于本人的user和hostname都为zlkj,所以测试添加的一行如下:
zlkj zlkj=NOPASSWD: /sbin/shutdown -h now,/sbin/reboot
sudo 的作用,它允许经过使用者以超级管理员的身份执行指定指令。sudo 的主要配置文件是/etc/sudoers。