zoukankan      html  css  js  c++  java
  • 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



    设置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-getaptitude时不须要进行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
    然后强制保存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
    # 全局提交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.

    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,所以这个命令也可能用到。

    gitcommit amendauthor=”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 为样例,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的连接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机器的图形化桌面了。


  • 相关阅读:
    HTML 之轮播图
    Django 框架之 URL
    Django 框架搭建入门案例
    Python 操作 MySQL
    Python 之RabbitMQ使用
    Python 之协程
    Python 之网络编程
    Python 序列化
    Python 装饰器
    python(3)-内置函数
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4557167.html
Copyright © 2011-2022 走看看