ubuntu使用手册
康林
Ubuntu13.10已经发布,从13.04升级成功后,发现Eclipse菜单栏点击后,不能展示下拉列表了,但是快捷键有效。这个应该算是UbuntuUnity的bug,bug详情,Ubuntu官方还没有解决该问题,不过国外论坛已经有暂时的解决方法:不要直接启动eclipse,在命令行上使用
envUBUNTU_MENUPROXY= /home/user/eclipse/eclipse
启动eclipse,注意等号和eclipse路径之间有个空格,或者建立一个Eclipse的快捷方式,eclipse.desktp内容如下:
Type=Application
Name=Eclipse
Comment=Eclipse Integrated Development Environment
Icon=/usr/share/app-install/icons/eclipse.png
Exec=env UBUNTU_MENUPROXY= eclipse
(
eclipse
的路径)
ubuntu下创建eclipse桌面快捷方式
1.终端代码:
sudogedit /usr/share/applications/eclipse.desktop
然后在弹出的文件中输入:
[DesktopEntry]
Encoding=UTF-8
Name=eclipse
Comment=EclipseIDE
Exec=/usr/local/eclipse/eclipse_SDK/eclipse
Icon=/usr/local/eclipse/eclipse_SDK/icon.xpm
Terminal=false
StartupNotify=true
Type=Application
Categories=Application;Development;
Exec=/usr/local/eclipse/eclipse_SDK/eclipse
Icon=/usr/local/eclipse/eclipse_SDK/icon.xpm
这个地方要修改为你的eclipse安装目录。
ps:我的Eclipse是安装(或解压)在/usr/local/eclipse目录下的
2.然后给该文件赋权,运行“chmodu+xeclipse.desktop“命令即可。
说明我这个eclipse是解压安装的,如果是用deb包安装的话,可以把/usr/share/applications/下eclipse.desktop(我没安装过,不知道是否是这个名字)文件拷贝到桌面目录即可。
3.直接cp上面代码的朋友注意了,cp回去编辑的时候注意去掉每行后面的空格。所有的文件上述是properties,所以都要分行
另外介绍两个命令,和desktop图标有关的
desktop-file-install安装图标图标到Application目录
desktop-file-validate验证你的桌面图标文件的正确性
比如我下的命令可以把我桌面上已经安装好了的eclipse图标添加到开始菜单里
desktop-file-install–add-category Development eclipse.desktop
设置root密码
sudopasswd root
sudo不要密码
ubuntu1204以后都必须用sudovisudo才能编辑sudoers以及sudoers.d的文件
$sudovisudo
在其中添加一行,若你想让一个用户sudo时不需要进行密码输入则以用户名开头,若想让一个组有此特权则以%组名开头,例如:
gnuhpc ALL=(ALL) NOPASSWD: ALL 表示gnuhpc在任何的命令下都不需要进行sudo操作。注意 NOPASSWD: 与ALL之间有空格 %sysadmin ALL=NOPASSWD: /usr/bin/apt-get, /usr/bin/aptitude
表示sysadmin这个组在进行apt-get和aptitude时不需要进行sudo操作
修改这个可以使得sudotimeout时间改变:Defaultsenv_reset , timestamp_timeout=x
禁用客户会话:
sudo gedit/etc/lightdm/lightdm.conf
输入密码,
在gedit中看到的默认配置文件如下:
----------------------------------------------
[SeatDefaults]
user-session=ubuntu
greeter-session=unity-greeter
----------------------------------------------
添加一行:allow-guest=false
通过修改/etc/sudoers
sudo vi /etc/sudoers
把/etc/sudoers里面最后一行
%adminALL=(ALL)
改为
%adminALL=(ALL) NOPASSWD: NOPASSWD: ALL
然后强制保存wq就OK
上面说的并不准确,要注意以下几点。
编辑/etc/sudoers文件使用“超级用户终端”,而不能使用普通的终端。“超级用户终端”启动通过右键“编辑菜单”命令添加。
编辑完之后使用wq!而不是wq退出
git出现乱码的解决:
目录乱码:
gitconfig –global core.quotepath false
log乱码:
git config --global i18n.logoutputencoding gbk
提交乱码:
git config --global i18n.commitencoding utf-8 UI乱码: git config --global gui.encoding utf-8 # 全局提交用户名与邮箱 git config --global user.name "Yuchen Deng" git config --global user.email 邮箱名@gmail.com
adb shell无法启动 (insufficientpermissions for device)
环境:Ubuntu 10.04 LTS ,Ophone SDK
关键字:insufficient permissions for device
出现如下错误信息:
shily@hh-desktop:~$adb shell
error: insufficient permissions for device
shily@hh-desktop:~$ adb devices
List of devices attached
???????????? no permissions
不知为何,现在连接到开发机器上的时候出现如上的错误信息,一直提示权限不正确。
暂的解决办法是使用root权限来启动adb server
shily@hh-desktop:~$ sudo -s
[sudo] password for shily:
root@hh-desktop:~#adb kill-server ; adb start-server
* daemon not running. starting it now *
* daemon started successfully *
root@hh-desktop:~# exit
exit
shily@hh-desktop:~$
再次执行adb shell就可以了。
可是这样也不是办法,因为这个错误太频繁了,在开发的过程中,很容易执行adb kill-server,然后再切换到root启动adb start-server太不方便。
这个时候就是setuid起作用的时候了。
转到adb所在的目录
shily@hh-desktop:~$cd ~/sdk/android-sdk_eng.sdk_linux-x86/tools
shily@hh-desktop:~/sdk/android-sdk_eng.sdk_linux-x86/tools$ ls -ladb
-rwxr-xr-x 1 shily shily 341694 2010-05-11 05:46 adb
shily@hh-desktop:~/sdk/android-sdk_eng.sdk_linux-x86/tools$ sudo chown root:root adb
[sudo] password for shily:
shily@hh-desktop:~/sdk/android-sdk_eng.sdk_linux-x86/tools$ ls -ladb
-rwxr-xr-x 1 root root 341694 2010-05-11 05:46 adb
shily@hh-desktop:~/sdk/android-sdk_eng.sdk_linux-x86/tools$ sudo chmod u+s adb
shily@hh-desktop:~/sdk/android-sdk_eng.sdk_linux-x86/tools$ ls -ladb
-rwsr-xr-x 1 root root 341694 2010-05-11 05:46 adb
shily@hh-desktop:~/sdk/android-sdk_eng.sdk_linux-x86/tools$
这样无论哪个用户启动adb 使用的都是root权限,就不会提示权限不足的错误了。
=========================
在使用的过程中发现adb pull下来的文件属主权限为root:root,所以修改起来不方便。但是我不经常下载文件修改,也就忍了。
2010-06-21 重要更新
读sdk帮助文档的时候,发现sdk已经提供了说明。使用这种方式就可以避免adb pull下来的文件权限为root。
详见:docs/guide/developing/device.html
If you're developing on Ubuntu Linux, you need to add a rules file that contains a USB configuration for each type of device you want to use for development. Each device manufacturer uses a different vendor ID. The example rules files below show how to add an entry for a single vendor ID (the HTC vendor ID). In order to support more devices, you will need additional lines of the same format that provide a different value for the SYSFS{idVendor}property. For other IDs, see the table of USB Vendor IDs, below.
-
Log in as root and create this file: /etc/udev/rules.d/51-android.rules.
For Gusty/Hardy, edit the file to read: [注:ubuntu 7.10及以后版本]
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"
For Dapper, edit the file to read: [注:ubuntu 6.06及以前版本]
SUBSYSTEM=="usb_device", SYSFS{idVendor}=="0bb4", MODE="0666"
-
Now execute:
chmod a+r /etc/udev/rules.d/51-android.rules
只要按照说明在/etc/udev/rules.d/目录下创建51-android.rules,把其中的0bb4修改为相应的USB,供应商ID信息即可。
比如我的手机是motorola,idVender是22b8
那么这一行就是
SUBSYSTEM=="usb", SYSFS{idVendor}=="22b8", MODE="0666"
不过,你可以写多行,以使用各种设备。比如我就写了所有的,我的文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
|
但是我要说明的是,根据上面的这些ID,并不能包括所有的,我手上就有一台设备的USB ID都不在上述之列。
你可以很方便的使用lsusb命令查看自己的USB ID
shily@hh-desktop:~$ lsusb
Bus 002 Device 003: ID 413c:2003 Dell Computer Corp. Keyboard
Bus 002 Device 002: ID 0461:4d22 Primax Electronics, Ltd
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 010: ID 18a1:0002
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
找到上面的id是18a1,在文件中添加我的设备就可以了。
SUBSYSTEM=="usb", SYSFS{idVendor}=="18a1", MODE="0666"
修改/etc/udev/rules.d/51-android.rules不需要重启Linux机器,重新插拔一下设备就可以了。再次运行adb devices就可以看到你的设备已经连接
shily@hh-desktop:~$ adb devices
List of devices attached
0403502001011000 device
而在此之前,你看到的是
shily@hh-desktop:~$ adb devices
List of devices attached
???????????? no permissions
2010-07-28 重要更新
如果你看得到系统启动时的log,也许你会注意下面的这个警告:
udevd : SYSFS{}= will be removed in a future udev version, please use ATTR instead.
直接使用ATTR替换上面的SYSFS即可:
例如:
1 2 3 4 5 6 |
|
2010-09-06 更新
如果你是一个开发人员,而且USB设备很多的话,使用以下方式会很方便:
清空51-android.rules,添加如下一行,一劳永逸(因我需要测试好几种设备,每次都添加一个会很麻烦)。
1 |
|
我并不是很清楚具体的含义,只是模仿10-vboxdrv.rules来写的,这个是virtualbox的udev规则文件,因为名字开头数字大文件中记录的规则会覆盖名字开头数字小的文件中的规则,所以你需要尽可能设置的文件名大一些,51已经够用了(我原来想写在10-vboxdrv.rules,让他们用一个文件,但是失败了)
Change:
Gerrit中的一个Change就是一个Review任务,它对应一个commit。
每个commit,应该是为了一个目的的完整修改。如果某一次修改不完全,就需要修正该commit。
每一次修正之前的commit,重新提交时,都应该保持Change-Id不变,这样就不会产生新的Change,而是在原有的Change下产生一个新的PatchSet。
所有的PatchSet中,只有最新的一个是真正有用的,能够合并的。
图1:Change和Change-Id
图2:PatchSet
修改前一次提交的方法
方法一:用–amend选项
#修改需要修改的地方。
gitadd .
git commit –amend
注:这种方式可以比较方便的保持原有的Change-Id,推荐使用。
方法二:先reset,再修改
这是可以完全控制上一次提交内容的方法。但在与Gerrit配合使用时,需特别注意保持同一个commit的多次提交的Change-Id是不变的。
否则,就需要Abondon之前的Change,产生一些垃圾不说,操作得不对,会使得简单的事情复杂化,甚至无法合并。
gitreset HEAD^
#重新修改
gitadd .
git commit -m“MSG”
特别注意:为了保持提交到Gerrit的Change不变,需要复制对应的Change-Id到commitmsg的最后,可以到Gerrit上对应的Change去复制,参见图1。
方法三:只是修改作者
如果email不对,会无法提交到Gerrit,所以这个命令也可能用到。
gitcommit –amend–author=”user<email>”
注:如果该email地址从未有过成功的提交,这个修改会不成功。在别的分支做一次成功提交之后,就可以修改了。
提交补丁:
gitformat-patch -n HEAD^^^ #要打几个补丁就加几个^
-N:Subject:[PATCH]
-n:Subject:[PATCH 1/1]
gitsend-email设置:
[user]
email= kl222@126.com
name= KangLin
[core]
quotepath= false
[i18n]
commitencoding= utf-8
[sendemail]
smtpencryption=ssl
smtpuser=kl222@126.com
smtpserverport=465
smtpserver=smtp.126.com
环境变量:
exportJAVA_HOME=/data/jdk1.7.0_45
exportANDROID_NDK=/data/google/trunk/third_party/android_tools/ndk
exportANDROID_SDK=/data/adt-bundle-linux-x86_64-20130917/sdk
exportPATH=$PATH:/data/google/depot_tools:$ANDROID_NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin:$ANDROID_NDK:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools:$JAVA_HOME/bin
64位系统运行32位程序,需要下面库:
sudoapt-get install g++-multilib
启动vnc服务:
以Ubuntu12.04 Server 为例子,服务器已安装了lightdm显示管理器。
VNC我们这里安装的是tightvncserver。
1. 安装tightvncserver
# sudo apt-get installtightvncserver
2. 修改lightdm配置
#vim /etc/lightdm.conf
只增加下边两行
[VNCServer]
enabled=true
3. 重新启动lightdm服务
/etc/init.d/lightdmrestart
Ubuntu下VNCServer安装过程
首先在Ubuntu机器中安装x11vnc:
sudoapt-get install x11vnc
然后设置VNC的连接密码:
x11vnc-storepasswd
上面的命令会提示输入密码,然后将密码加密以后保存在~/.vnc/passwd文件。
启动VNCServer:
x11vnc-forever -shared -rfbauth ~/.vnc/passwd
也可以将VNCServer设置成随系统启动后自动在后台启动:
1.将密码文件复制到/etc目录:
sudocp ~/.vnc/passwd /etc/x11vnc.pass
2.创建/etc/init/x11vnc.conf文件,将下面的内容复制进去:
starton login-session-start
script
x11vnc-display :0 -auth /var/run/lightdm/root/:0 -forever -bg -o/var/log/x11vnc.log -rfbauth /etc/x11vnc.pass -rfbport 5900
endscript
3.重启电脑,等重启好了以后,到Windows下就可以连接了。
Windows下的连接过程
在Windows机器中安装RealVNCViewer,完成后启动VNCViwer:
在VNCServer中输入Ubuntu机器的IP地址或者机器名称,点击“Connect”按钮,提示密码输入。
在密码框输入我们刚才设定的VNC连接密码,点击“OK”按钮,然后就可以看到Ubuntu机器的图形化桌面了。