ubuntu使用
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
设置rootpassword
sudopasswd root
sudo不要password
ubuntu1204以后都必须用sudovisudo才干编辑sudoers以及sudoers.d的文件
$sudovisudo
在当中加入一行,若你想让一个用户sudo时不须要进行password输入则以username开头,若想让一个组有此特权则以%组名开头,比如:
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
输入password,
在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 # 全局提交username与邮箱 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
keyword: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就能够了。
但是这样也不是办法,由于这个错误太频繁了,在开发的过程中,非常easy运行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 为样例,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的连接password:
x11vnc-storepasswd
上面的命令会提示输入password,然后将password加密以后保存在~/.vnc/passwd文件。
启动VNCServer:
x11vnc-forever -shared -rfbauth ~/.vnc/passwd
也能够将VNCServer设置成随系统启动后自己主动在后台启动:
1.将password文件拷贝到/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”button,提示password输入。
在password框输入我们刚才设定的VNC连接password,点击“OK”button,然后就能够看到Ubuntu机器的图形化桌面了。