首页 > 代码库 > ubuntu使用

ubuntu使用

ubuntu使用手册


康林


Ubuntu13.10已经发布,从13.04升级成功后,发现Eclipse菜单栏点击后,不能展示下拉列表了,但是快捷键有效。这个应该算是UbuntuUnitybugbug详情,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= eclipseeclipse的路径)

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-getaptitude时不需要进行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
然后强制保存wqOK

上面说的并不准确,要注意以下几点。

编辑/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.

  1. 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"

  1. Now execute:
    chmod a+r /etc/udev/rules.d/51-android.rules

只要按照说明在/etc/udev/rules.d/目录下创建51-android.rules,把其中的0bb4修改为相应的USB,供应商ID信息即可。
比如我的手机是motorola,idVender22b8
那么这一行就是
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

#Acer      0502

SUBSYSTEM=="usb", SYSFS{idVendor}=="0502", MODE="0666"

#Dell     413c

SUBSYSTEM=="usb", SYSFS{idVendor}=="413c", MODE="0666"

#Foxconn     0489

SUBSYSTEM=="usb", SYSFS{idVendor}=="0489", MODE="0666"

#Garmin-Asus     091E

SUBSYSTEM=="usb", SYSFS{idVendor}=="091e", MODE="0666"

#HTC     0bb4

SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"

#Huawei     12d1

SUBSYSTEM=="usb", SYSFS{idVendor}=="12d1", MODE="0666"

#Kyocera     0482

SUBSYSTEM=="usb", SYSFS{idVendor}=="0482", MODE="0666"

#LG     1004

SUBSYSTEM=="usb", SYSFS{idVendor}=="1004", MODE="0666"

#Motorola     22b8

SUBSYSTEM=="usb", SYSFS{idVendor}=="22b8", MODE="0666"

#Nvidia     0955

SUBSYSTEM=="usb", SYSFS{idVendor}=="0955", MODE="0666"

#Pantech     10A9

SUBSYSTEM=="usb", SYSFS{idVendor}=="10A9", MODE="0666"

#Samsung     04e8

SUBSYSTEM=="usb", SYSFS{idVendor}=="04e8", MODE="0666"

#Sharp     04dd

SUBSYSTEM=="usb", SYSFS{idVendor}=="04dd", MODE="0666"

#Sony Ericsson     0fce

SUBSYSTEM=="usb", SYSFS{idVendor}=="0fce", MODE="0666"

#ZTE     19D2

SUBSYSTEM=="usb", SYSFS{idVendor}=="19D2", MODE="0666"


但是我要说明的是,根据上面的这些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
找到上面的id18a1,在文件中添加我的设备就可以了。
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

--- 51-android.rules.old    2013-03-26 11:22:32.000000000 +0800

+++ 51-android.rules    2013-03-26 11:23:20.000000000 +0800

@@ -1,3 +1,3 @@

#ZTE     19D2

-SUBSYSTEM=="usb", ATTR{idVendor}=="19D2", MODE="0666"

+SUBSYSTEM=="usb", SYSFS{idVendor}=="19D2", MODE="0666"


2010-09-06 
更新
如果你是一个开发人员,而且USB设备很多的话,使用以下方式会很方便:
清空51-android.rules,添加如下一行,一劳永逸(因我需要测试好几种设备,每次都添加一个会很麻烦)。

1

SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0666"

我并不是很清楚具体的含义,只是模仿10-vboxdrv.rules来写的,这个是virtualboxudev规则文件,因为名字开头数字大文件中记录的规则会覆盖名字开头数字小的文件中的规则,所以你需要尽可能设置的文件名大一些,51已经够用了(我原来想写在10-vboxdrv.rules,让他们用一个文件,但是失败了)

Change:

Gerrit中的一个Change就是一个Review任务,它对应一个commit

每个commit,应该是为了一个目的的完整修改。如果某一次修改不完全,就需要修正该commit

每一次修正之前的commit,重新提交时,都应该保持Change-Id不变,这样就不会产生新的Change,而是在原有的Change下产生一个新的PatchSet

所有的PatchSet中,只有最新的一个是真正有用的,能够合并的。

1ChangeChange-Id

2PatchSet

修改前一次提交的方法

方法一:用–amend选项

#修改需要修改的地方。
gitadd .
git commit
amend

注:这种方式可以比较方便的保持原有的Change-Id推荐使用

方法二:先reset,再修改

这是可以完全控制上一次提交内容的方法。但在与Gerrit配合使用时,需特别注意保持同一个commit的多次提交的Change-Id是不变的。

否则,就需要Abondon之前的Change,产生一些垃圾不说,操作得不对,会使得简单的事情复杂化,甚至无法合并。

gitreset HEAD^
#
重新修改
gitadd .
git commit
-m“MSG”

特别注意:为了保持提交到GerritChange不变,需要复制对应的Change-Idcommitmsg的最后,可以到Gerrit上对应的Change去复制,参见图1

方法三:只是修改作者

如果email不对,会无法提交到Gerrit,所以这个命令也可能用到。

gitcommitamendauthor=”user<email>”

注:如果该email地址从未有过成功的提交,这个修改会不成功。在别的分支做一次成功提交之后,就可以修改了。


提交补丁:

gitformat-patch -n HEAD^^^ #要打几个补丁就加几个^

-NSubject:[PATCH]

-nSubject:[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




X11VNC:让Windows可以远程管理Ubuntu桌面

UbuntuVNCServer安装过程

首先在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机器的图形化桌面了。