作者: admin

  • 转–Win7系统盘瘦身

    第一步就是开启 Administrator 帐户,先取得最高管理权限,方法:

    右键桌面计算机–管理,本地用户和组–用户,右键 Administrator–属性,去除“帐户已禁用”前的勾,注销当前用户登录 Administrator 帐户。

    1.禁用休眠,点击 开始菜单,所有程序→附件→命令提示符”,右击选择“以管理员身份运行”,进入命令提示符后,手动输入“powercfg -h off” 并回车;Vista 中可以通过磁盘清理删除休眠文件。

    2.删除系统备份,关闭系统保护:右键桌面计算机–属性–高级管理设置– 系统保护,选中开启系统保护的磁盘,配置,选择“关闭系统保护”,应用,确定。

    3.转移虚拟内存:右键桌面计算机–属性–高级系统 设置–高级–性能–设置–高级,单击“虚拟内存”下的“更改”按钮,取消“自动管理所有驱动器的分页文件大小”复选框,选中虚拟内存所在系统盘 (一般是在C盘),选择下方的“无分页文件”,再单击“设置”按钮。再选中其它盘,把分页文件放到其上即可。如果内存大于4GB以上,可以考虑不再设置虚 拟内存。

    4.转移“用户的文件“(桌面双击 Administrator(用户文件夹)文件夹,推荐转移以下几个系统文件夹:

    收 藏夹,视频,音乐,图片,文档。右键要转移的项目属性–位置 X:\Users\Administrator 即可)。

    一般做到以上四 步就可以了,下面的开始删除文件,硬盘空间充裕的情况下可以忽略。

    手动瘦身攻略(删文件不删功能、简化优化系统不简优化性能)

    1.C:\Windows\Web\Wall*** (Windows自带墙纸)推荐转移。

    2.C:\Windows\System32\DriverStore\FileRepository 下:

    搜索输入 ati*.inf (14.6M) nv*.inf(94.9M) (A卡用户删NVIDIA、N卡用户删ATI)

    搜索输入 mdm*.inf (21.6M)

    搜索输入 prn*.inf (781M) prn 开头的全部都是打印机驱动,相信大多数人都是用不上的。

    注意:prnms001.inf/prnoc001.inf/prnms002.inf 这三个并不是打印机驱动,建议保留。

    3.C:\Boot (13.3M) 这个里面是不同语言的Windows启动界面,除 zh-CN 外均可删除。

    4.C:\perflogs\System\Diagnostics (9.39M) 这个是系统测试之后的测试记录文件存放处,删除。

    5.C:\Windows\Downloaded Program Files 有一些程序安装的时候会把安装文件解压至此文件夹里面。可以安全删除,几十M到几百M不等。

    6.C:\Windows\Help (66.7M) 可以删除。

    7.C:\Windows\IME\IMESC5 (使用第三方输入法的可以删除)

    微软拼音输入法(74.5M)可留

    C:\Windows\IME\IMEJP10

    日文输入法(37.8M) 删除

    C:\Windows\IME\imekr8 韩文输入法(2.86M) 删除

    C:\Windows\IME\IMETC10 繁中输入法(21.6M) 删除

    C:\Windows\System32\IME 下 也会有这几项输入法,删除方法同上

    “C:\Windows\System32\IME\IMESC5”

    “C:\Windows\System32\IME\***X”

    8.C:\Windows\Installer 下,已安装程序的卸载修改时所需程序,如果删除了,有些程序卸载和修改就会有问题。

    9.C:\Windows\winsxs 不能删除,但是可以压缩,压缩后大小为2.48G。节省空间近1G,系统文件,总大小3.22G(个人建议这个不要动)

    C:\Windows\winsxs\Backup (备份文件,占用354MB),可以删除

  • ProFTPD1.3配置

    ProFTPD 支持MySQL数据库添加虚拟用户认证及Quotas(磁盘限额)

    proftpd.conf配置指令手册(en):http://www.proftpd.org/docs/directives/linked/configuration.html
    ProFTPD官方网站(en): http://www.proftpd.org/
    proftpd.conf配置指令手册(zh):
    http://www.itlearner.com/article/3549/relate
    安装环境:
    操作系统centos-5.2
    mysql 5.0.67 源代码安装在/usr/local/mysql目录

    1、proftpd-1.3.2源代码编译安装

    ./configure –prefix=/usr/local/proftpd
    –with-modules=mod_sql:mod_sql_mysql #支持mysql数据库
    –with-modules=mod_quotatab:mod_quotatab_sql #支持磁盘配额
    –with-modules=mod_tls #支持SSL/TLS安全传输
    –with-includes=/usr/local/mysql/include
    –with-libraries=/usr/local/mysql/lib
    make
    make install

    cp sample-configurations/mod_sql.conf /usr/local/proftpd/etc/proftpd.conf

    2、proftpd.conf文件配置基本格式:

    #全局设置
    设置项目1 参数1
    设置项目2 参数2
    ……
    ……
    #某个目录的设置
    <Directory “路径名”>
    ……
    ……
    </Directory>
    #关于匿名用户的设置
    <Anonymous “匿名登录的目录”>
    ……
    ……
    <Limit 限制动作>
    ……
    ……
    </Limit>
    </Anonymous>

    3、proftpd.conf配置文件中的一些基本配置:

    ServerName 服务器名称
    ServerType 服务器工作类型(standalone/inted)
    DefaultServer 是否启用虚拟FTP (on/off)
    Port 运行端口
    Umask 默认文件权限(022)
    User 运行proftpd服务器的用户
    Group 运行proftpd服务器的用户组
    AllowOverwrite 是否允许客户端覆盖文件(安全上一般设置为off)
    RequireValidShell 用户shell不在/etc/shells文件中,默认不允许登陆(on/off)
    MaxInstances 20 最多有20个proftpd的PID
    MaxClients 10 最多允许10个用户在线
    MaxClientsPerHost 1 一个IP只允许一个帐号连接
    MaxClientsPerUser 2 每个帐号在每个客户端最多同时登陆2次,可防止多线程下载软件
    DisplayLogin welcome.msg ftp登陆欢迎信息文件
    <Directory /*> 登入时想进入的目录位置(/* 为通配符)
    <Anonymous ~ftp> 匿名用户设置
    <Global> 所有虚拟ftp的共同设置项

    3.1 虚拟FTP设置
    <VirtualHost 192.168.0.1>
    ServerName “……”
    ……
    ……
    </VitualHost>

    3.2 开启ftp上传/下载的续传功能
    AllowStoreRestart on #上传
    AllowRetrieveRestart on #下载

    3.3 限速设置

    格式为: TransferRate STOR|RETR 速度(kbytes/s) user 使用者
    STOR 为上传速度
    RETR 为下载速度
    后面不跟user的时候,针对全部用户进行限速

    3.4 让proftpd支持FXP传输
    AllowForeignAddress on
    PassivePorts 40000 40999

    3.5 加快连接速度,关闭DNS反解
    UseReverseDNS off
    IdentLookups off

    3.6 只允许部分网段访问FTP
    <Limit LOGIN>
    Order allow,deny
    Allow from 10.10.
    Deny from all
    </Limit>

    4、<Limit>参数说明

    4.1 限制的动作
    CWD: Change Working Directory 改变目录
    MKD: Make Directory 创建目录
    RNFR: ReName FRom 更改目录名
    DELE: DELEte 删除文件
    RMD: ReMove Directory 删除目录
    RETR: RETRieve 下载
    STOR: STORe 上传
    READ: 可读文件的权限,但不包括列目录
    WRITE: 写文件或目录的权限,包括MKD和RMD
    DIRS: 列目录的权限
    LOGIN: 登陆的权限
    ALL: 所有权限

    4.2 <Limit>所应用的对象

    AllowUser/DenyUser AllowGroup/DenyGroup AllowALL/DenyAll ……

    5、部分安全策略配置

    5.1 隐藏proftpd服务器的版本信息
    ServerIdent off

    5.2 伪装Proftpd服务器
    伪装成windows下的ftp服务器Serv-U
    ServerIdent on “Serv-U FTP Server v6.4 for Winsock ready ……”

    5.3 使用非root权限运行proftpd服务:
    User nobody
    Group nobody

    禁止root登陆:
    RootLogin off

    对ftp用户使用chroot限制:
    DefaultRoot ~

    控制ftp命令缓冲区大小:
    CommandBufferSize 512

    修改proftpd服务器使用的端口:
    Port 2121

    5.4 监控Proftpd服务器运行情况

    5.4.1 记录ftp连接数
    watch -n 360 /usr/local/proftpd/bin/ftpcount
    每隔360秒显示一次连接用户数量的信息

    5.4.2 查找谁与FTP服务器连接
    /usr/local/proftpd/bin/ftpwho

    5.5 服务器配置文件的修改(proftpd.conf)

    5.5.1 通过IP地址限制FTP访问
    #只允许10.10.0.0/16网段用户访问
    <Limit LOGIN>
    Order allow,deny
    Allow from 10.10.
    Deny from all
    </Limit>

    5.5.2 使用pam作为proftpd授权用户的鉴别方法
    AuthPAM on
    AuthPAMConfig ftp

    修改/etc/pam.d/ftp相应文件

    5.5.3 限制FTP命令特权

    *禁止一些用户创建和删除目录的特权
    <Directory /*>
    <Limit MKD RMD>
    Order deny,allow
    DenyGroup badusers
    AllowAll
    </Limit>
    </Directory>

    *建立只能上载的FTP服务器
    <Directory /*>
    <Limit RETE>
    DenyAll
    </Limit>
    </Directory>

    *限制对单个目录的访问
    <Directory /*>
    <Limit CWD>
    DenyAll
    </Limit>
    </Directory>

    *限制目录浏览特权
    <Directory /my/mp3s>
    <Limit DIRS>
    DenyGroup newfriends
    </Limit>
    </Directory>

    5.5.4 使不同用户之间相互隔离
    一些用户通常访问ISP的FTP服务器时,会看到一些不应当的系统信息,因此隐藏这些信息是必要的,下面是一个配置:
    DefaultRoot “/www”
    <Directory /www>
    HideNoAccess on
    <Limit ALL>
    IgnoreHidden on
    </Limit>
    </Directory>
    HideNoAccess指令将用户隐藏/www 目录下的所有条目,IgnoreHidden指令指示ProFTPD 服务器忽略用户所有指令。

    6、加密FTP服务器与客户端的连接
    需要在编译安装的时候配置支持相应模块
    ./configure –with-modules=mod_tls

    6.1 制作凭证
    # mkdir /etc/ssl/certs
    # mkdir /etc/ssl/private
    # chmod og-rwx /etc/ssl/private
    # mkdir /etc/ssl/crl
    # mkdir /etc/ssl/newcerts
    修改 /etc/ssl/openssl.cnf
    把 dir = ./demoCA 改成 dir = /etc/ssl

    6.2 制作最高层认证中心 (Root CA)
    Private Key ( Public Key )
    # openssl genrsa -des3 -out /etc/ssl/private/myrootca.key 2048
    # chmod og-rwx /etc/ssl/private/myrootca.key
    填写凭证申请书 (然后按照问题回答即可)
    #openssl req -new -key /etc/ssl/private/myrootca.key -out /tmp/myrootca.req
    签发凭证
    # openssl x509 -req -days 7305 -sha1 -extfile /etc/ssl/openssl.cnf -extensions v3_ca -signkey /etc/ssl/private/myrootca.key
    -in /tmp/myrootca.req -out /etc/ssl/certs/myrootca.crt
    # rm -f /tmp/myrootca.req

    6.3 用最高层认证中心签发凭证
    制作服务器用的凭证
    # openssl genrsa -out /etc/ssl/private/myhost.key 2048
    # chmod og-rwx /etc/ssl/private/myhost.key
    填写凭证申请书
    # openssl req -new -key /etc/ssl/private/myhost.key -out /tmp/myhost.req
    # openssl x509 -req -days 3650 -sha1 -extfile /etc/ssl/openssl.cnf -extensions v3_req -CA /etc/ssl/certs/myrootca.crt
    -CAkey /etc/ssl/private/myrootca.key -CAserial /etc/ssl/myrootca.srl
    -CAcreateserial -in /tmp/myhost.req -out /etc/ssl/certs/myhost.crt
    # rm -f /tmp/myhost.req

    6.4 接下来设定proftpd.conf,主要是在最后加上以下有关TLS的设

    < IfModule mod_tls.c >
    TLSEngine on
    TLSLog /var/log/tls.log
    TLSProtocol SSLv23
    TLSOptions NoCertRequest
    TLSRequired On
    TLSRSACertificateFile /etc/ssl/certs/myhost.crt
    TLSRSACertificateKeyFile /etc/ssl/private/myhost.key
    TLSCACertificateFile /etc/ssl/certs/myrootca.crt
    TLSVerifyClient On
    < /IfModule >

    7、有关MySQL+Quota的设置
    需要在编译安装的时候配置支持相应模块
    ./configure –with-modules=mod_sql:mod_sql_mysql
    –with-modules=mod_quotatab:mod_quotatab_sql
    –with-includes=/usr/local/mysql/include
    –with-libraries=/usr/local/mysql/lib
    7.1 数据库的导入

    mysql mysql -uroot -ppassword
    create database ftpdb
    grant select, update on ftpdb.* to proftpd@localhost identified by ‘password’
    use ftpdb
    CREATE TABLE `ftpgroup` (
    `groupname` varchar(16) NOT NULL default ”,
    `gid` smallint(6) NOT NULL default ‘5500′,
    `members` varchar(16) NOT NULL default ”,
    KEY `groupname` (`groupname`)
    ) TYPE=MyISAM COMMENT=’ProFTP group table’;

    INSERT INTO `ftpgroup` VALUES (’ftpgroup’, 5500, ‘ftpuser’);

    CREATE TABLE `ftpquotalimits` (
    `name` varchar(30) default NULL,
    `quota_type` enum(’user’,’group’,’class’,’all’) NOT NULL default ‘user’,
    `per_session` enum(’false’,’true’) NOT NULL default ‘false’,
    `limit_type` enum(’soft’,’hard’) NOT NULL default ’soft’,
    `bytes_in_avail` float NOT NULL default ‘0′,
    `bytes_out_avail` float NOT NULL default ‘0′,
    `bytes_xfer_avail` float NOT NULL default ‘0′,
    `files_in_avail` int(10) unsigned NOT NULL default ‘0′,
    `files_out_avail` int(10) unsigned NOT NULL default ‘0′,
    `files_xfer_avail` int(10) unsigned NOT NULL default ‘0′
    ) TYPE=MyISAM;

    CREATE TABLE `ftpquotatallies` (
    `name` varchar(30) NOT NULL default ”,
    `quota_type` enum(’user’,’group’,’class’,’all’) NOT NULL default ‘user’,
    `bytes_in_used` float NOT NULL default ‘0′,
    `bytes_out_used` float NOT NULL default ‘0′,
    `bytes_xfer_used` float NOT NULL default ‘0′,
    `files_in_used` int(10) unsigned NOT NULL default ‘0′,
    `files_out_used` int(10) unsigned NOT NULL default ‘0′,
    `files_xfer_used` int(10) unsigned NOT NULL default ‘0′
    ) TYPE=MyISAM;

    CREATE TABLE `ftpuser` (
    `id` int(10) unsigned NOT NULL auto_increment,
    `userid` varchar(32) NOT NULL default ”,
    `passwd` varchar(32) NOT NULL default ”,
    `uid` smallint(6) NOT NULL default ‘5500′,
    `gid` smallint(6) NOT NULL default ‘5500′,
    `homedir` varchar(255) NOT NULL default ”,
    `shell` varchar(16) NOT NULL default ‘/sbin/nologin’,
    `count` int(11) NOT NULL default ‘0′,
    `accessed` datetime NOT NULL default ‘0000-00-00 00:00:00′,
    `modified` datetime NOT NULL default ‘0000-00-00 00:00:00′,
    PRIMARY KEY (`id`)
    ) TYPE=MyISAM COMMENT=’ProFTP user table’ ;
    7.2 在proftpd.conf文件中加入sql相关配置:

    SQLAuthTypes Backend Plaintext
    #Backend表示用户认证方式为MySQL数据库的认证方式
    #Plaintext表示明文认证方式,排在最前面的为最先使用的方式
    SQLAuthenticate users* groups*

    # databasename@host database_user user_password
    SQLConnectInfo ftpdb@localhost proftpd password
    SQLUserInfo ftpuser userid passwd uid gid homedir shell
    SQLGroupInfo ftpgroup groupname gid members
    SQLHomedirOnDemand on
    #如果用户主目录不存在,则系统会根据此用户在用户数据表中的homedir字段的值新建一个目录
    # Update count every time user logs in
    SQLLog PASS updatecount
    SQLNamedQuery updatecount UPDATE “count=count+1,accessed=now() WHERE userid=’%u’” ftpuser
    # Update modified everytime user uploads or deletes a file
    SQLLog STOR,DELE modified
    SQLNamedQuery modified UPDATE “modified=now() WHERE userid=’%u’” ftpuser

    7.3 加入Quota磁盘配额相关设置

    QuotaEngine on
    QuotaDirectoryTally on
    QuotaDisplayUnits Mb
    QuotaShowQuotas on
    QuotaLog “/var/log/quota”
    SQLNamedQuery get-quota-limit SELECT “name, quota_type, per_session, limit_type, bytes_in_avail, bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM ftpquotalimits WHERE name = ‘%{0}’ AND quota_type = ‘%{1}’”

    SQLNamedQuery get-quota-tally SELECT “name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM ftpquotatallies WHERE name = ‘%{0}’ AND quota_type = ‘%{1}’”

    SQLNamedQuery update-quota-tally UPDATE “bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used+ %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name = ‘%{6}’ AND quota_type = ‘%{7}’” ftpquotatallies

    SQLNamedQuery insert-quota-tally INSERT “%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}” ftpquotatallies

    QuotaLimitTable sql:/get-quota-limit
    QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally

    7.4 ftpquotalimits表设置说明

    name: – 用户帐号
    quota type: – user, group, class, all (we use user)
    per_session: – true or false (we use true)
    limit_type: – 硬限制 or 软限制 (我们一般用硬限制)
    bytes_in_avail: – 允许上传的字节数
    bytes_out_avail: – 允许下载的字节数
    bytes_xfer_avail: – 允许传输的字节数(包括上传/下载)
    files_in_avail: – 允许上传的文件数
    files_out_avail: – 允许下载的文件数
    files_xfer_avail: – 允许传输的文件数(包括上传/下载)

    8、其他
    8.1 使用命令ftpshut
    基本格式:
    ftpshut [ -l min ] [ -d min ] time [ warning-message … ]
    参数说明:
    -l min: 在ftp关闭服务之前的几分钟内,尝试建立新的ftp连接均不被接受
    -d min: 在ftp关闭服务之前的几分钟内,已经建立的ftp连接将被中止
    time: 在多少时间后,服务器将关闭ftp服务,格式有两种
    +number 经过number分钟后关闭
    MMHH 在今天MM:HH服务器将关闭

    8.2 welcome.msg 欢迎文件可用参数

    %T 目前的时间
    %F 所在硬盘剩下的容量
    %C 目前所在的目录
    %R Client 端的主机名称
    %L Server 端的主机名称
    %U 使用者帐户名称
    %M 最大允许连接人数
    %N 目前的服务器连接人数
    %E FTP服务器管理员的 email
    %i 本次上传的文件数量
    %o 本次下载的文件数量
    %t 本次上传+下载的文件数量
    应用举例:
    欢迎您%U, 这是Frank的测试FTP服务器;
    目前时间是:%T;
    本服务器最多允许%M个用户连接数;
    目前服务器上已有%N个用户连接数;
    目前你所在的目录是%C;
    目录所在的硬盘还剩下%F字节。

     

     

     

     

  • Ubuntu常用包管理命令

    说明:由于图形化界面方法(如Add/Remove… 和Synaptic Package Manageer)比较简单,所以这里主要总结在终端通过命令行方式进行的软件包安装、卸载和删除的方法。

    一、Ubuntu中软件安装方法

    1、APT方式

    (1)普通安装:apt-get install softname1 softname2 …;

    (2)修复安装:apt-get -f install softname1 softname2… ;(-f Atemp to correct broken dependencies)

    (3)重新安装:apt-get –reinstall install softname1 softname2…;

    2、Dpkg方式

    (1)普通安装:dpkg -i package_name.deb

    3、源码安装(.tar、tar.gz、tar.bz2、tar.Z)

    首先解压缩源码压缩包然后通过tar命令来完成

    a.解xx.tar.gz:tar zxf xx.tar.gz
    b.解xx.tar.Z:tar zxf xx.tar.Z
    c.解xx.tgz:tar zxf xx.tgz
    d.解xx.bz2:bunzip2 xx.bz2
    e.解xx.tar:tar xf xx.tar

    然后进入到解压出的目录中,建议先读一下README之类的说明文件,因为此时不同源代码包或者预编译包可能存在差异,然后建议使用ls -F –color或者ls -F命令(实际上我的只需要 l 命令即可)查看一下可执行文件,可执行文件会以*号的尾部标志。

    一般依次执行./configure

    make

    sudo make install

    即可完成安装。

    二、Ubuntu中软件包的卸载方法

    1、APT方式

    (1)移除式卸载:apt-get remove softname1 softname2 …;(移除软件包,当包尾部有+时,意为安装)

    (2)清除式卸载 :apt-get –purge remove softname1 softname2…;(同时清除配置)

    清除式卸载:apt-get purge sofname1 softname2…;(同上,也清除配置文件)

    2、Dpkg方式

    (1)移除式卸载:dpkg -r pkg1 pkg2 …;

    (2)清除式卸载:dpkg -P pkg1 pkg2…;

     

    三、Ubuntu中软件包的查询方法

    Dpkg 使用文本文件来作为数据库.通称在 /var/lib/dpkg 目录下. 通称在 status 文件中存储软件状态,和控制信息. 在 info/ 目录下备份控制文件, 并在其下的 .list 文件中记录安装文件清单, 其下的 .mdasums 保存文件的 MD5 编码.

    体验使用数据库的时刻到了:

    $ dpkg -l
    Desired=Unknown/Install/Remove/Purge/Hold
    | Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
    |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
    ||/ Name       Version           Description
    +++-===========-================-========================================
    ii  aalib1     1.4p5-28          ascii art library - transitional package
    ii  adduser    3.85              Add and remove users and groups
    ii  alien      .63               install non-native packages with dpkg
    ... ...
    

    每条记录对应一个软件包, 注意每条记录的第一, 二, 三个字符. 这就是软件包的状态标识, 后边依此是软件包名称, 版本号, 和简单描述.

    • 第一字符为期望值,它包括:
      • u 状态未知,这意味着软件包未安装,并且用户也未发出安装请求.
      • i 用户请求安装软件包.
      • r 用户请求卸载软件包.
      • p 用户请求清除软件包.
      • h 用户请求保持软件包版本锁定.
    • 第二列,是软件包的当前状态.此列包括软件包的六种状态.
      • n 软件包未安装.
      • i 软件包安装并完成配置.
      • c 软件包以前安装过,现在删除了,但是它的配置文件还留在系统中.
      • u 软件包被解包,但还未配置.
      • f 试图配置软件包,但是失败了.
      • h 软件包安装,但是但是没有成功.
    • 第三列标识错误状态,可以总结为四种状态. 第一种状态标识没有问题,为空. 其它三种符号则标识相应问题.
      • h 软件包被强制保持,因为有其它软件包依赖需求,无法升级.
      • r 软件包被破坏,可能需要重新安装才能正常使用(包括删除).
      • x 软包件被破坏,并且被强制保持.

    也可以以统配符模式进行模糊查询, 比如我要查找以nano字符开始的所有软件包:

    $ dpkg -l nano*
    Desired=Unknown/Install/Remove/Purge/Hold
    | Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed
    |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
    ||/ Name           Version        Description
    +++-==============-==============-============================================
    ii  nano           1.3.10-2       free Pico clone with some new features
    pn  nano-tiny      <none>         (no description available)
    
    un  nanoblogger    <none>         (no description available)
    

    以上状态说明: 系统中安装了 nano 版本为 1.3.10-2 ;安装过 nano-tiny , 后来又清除了; 从未安装过nanoblogger .

    如果觉得 dpkg 的参数过多, 不利于记忆的话, 完全可以使用 dpkg-query 进行 dpkg 数据库查询.

    应用范例:

    • 查询系统中属于nano的文件:

      $ dpkg –listfiles nano

      or

      $ dpkg-query -L nano

    • 查看软件nano的详细信息:

      $ dpkg -s nano

      or

      $ dpkg-query -s nano

    • 查看系统中软件包状态, 支持模糊查询:

      $ dpkg -l

      or

      $dpkg-query -l

    • 查看某个文件的归属包:

      $ dpkg-query -S nano

      or

      $ dpkg -S nano

    三、其他应用总结

    apt-cache search # ——(package 搜索包)
    apt-cache show #——(package 获取包的相关信息,如说明、大小、版本等)
    apt-get install # ——(package 安装包)
    apt-get install # —–(package –reinstall 重新安装包)
    apt-get -f install # —–(强制安装, “-f = –fix-missing”当是修复安装吧…)
    apt-get remove #—–(package 删除包)
    apt-get remove –purge # ——(package 删除包,包括删除配置文件等)
    apt-get autoremove –purge # —-(package 删除包及其依赖的软件包+配置文件等(只对6.10有效,强烈推荐))
    apt-get update #——更新源
    apt-get upgrade #——更新已安装的包
    apt-get dist-upgrade # ———升级系统
    apt-get dselect-upgrade #——使用 dselect 升级
    apt-cache depends #——-(package 了解使用依赖)
    apt-cache rdepends # ——(package 了解某个具体的依赖,当是查看该包被哪些包依赖吧…)
    apt-get build-dep # ——(package 安装相关的编译环境)
    apt-get source #——(package 下载该包的源代码)
    apt-get clean && apt-get autoclean # ——–清理下载文件的存档 && 只清理过时的包
    apt-get check #——-检查是否有损坏的依赖
    dpkg -S filename —–查找filename属于哪个软件包
    apt-file search filename —–查找filename属于哪个软件包
    apt-file list packagename —–列出软件包的内容
    apt-file update –更新apt-file的数据库

    dpkg –info “软件包名” –列出软件包解包后的包名称.
    dpkg -l –列出当前系统中所有的包.可以和参数less一起使用在分屏查看. (类似于rpm -qa)
    dpkg -l |grep -i “软件包名” –查看系统中与”软件包名”相关联的包.
    dpkg -s 查询已安装的包的详细信息.
    dpkg -L 查询系统中已安装的软件包所安装的位置. (类似于rpm -ql)
    dpkg -S 查询系统中某个文件属于哪个软件包. (类似于rpm -qf)
    dpkg -I 查询deb包的详细信息,在一个软件包下载到本地之后看看用不用安装(看一下呗).
    dpkg -i 手动安装软件包(这个命令并不能解决软件包之前的依赖性问题),如果在安装某一个软件包的时候遇到了软件依赖的问题,可以用apt-get -f install在解决信赖性这个问题.
    dpkg -r 卸载软件包.不是完全的卸载,它的配置文件还存在.
    dpkg -P 全部卸载(但是还是不能解决软件包的依赖性的问题)
    dpkg -reconfigure 重新配置

    apt-get install
    下载软件包,以及所有依赖的包,同时进行包的安装或升级。如果某个包被设置了 hold (停止标志,就会被搁在一边(即不会被升级)。更多 hold 细节请看下面。
    apt-get remove [–purge]
    移除 以及任何依赖这个包的其它包。
    –purge 指明这个包应该被完全清除 (purged) ,更多信息请看 dpkg -P。

    apt-get update
    升级来自 Debian 镜像的包列表,如果你想安装当天的任何软件,至少每天运行一次,而且每次修改了
    /etc/apt/sources.list 後,必须执行。

    apt-get upgrade [-u]
    升 级所有已经安装的包为最新可用版本。不会安装新的或移除老的包。如果一个包改变了依赖关系而需要安装一个新的包,那么它将不会被升级,而是标志为 hold。apt-get update 不会升级被标志为 hold 的包 (这个也就是 hold 的意思)。请看下文如何手动设置包为 hold。我建议同时使用 ‘-u’ 选项,因为这样你就能看到哪些包将会被升级。

    apt-get dist-upgrade [-u]
    和 apt-get upgrade 类似,除了 dist-upgrade 会安装和移除包来满足依赖关系。因此具有一定的危险性。

    apt-cache search
    在软件包名称和描述中,搜索包含xxx的软件包。

    apt-cache show
    显示某个软件包的完整的描述。

    apt-cache showpkg
    显示软件包更多细节,以及和其它包的关系。

    dselect
    console-apt
    aptitude
    gnome-apt
    APT 的几个图形前端(其中一些在使用前得先安装)。这里 dselect 无疑是最强大的,也是最古老,最难驾驭。

    普通 Dpkg 用法
    dpkg -i
    安装一个 Debian 包文件,如你手动下载的文件。

    dpkg -c
    列出 的内容。

    dpkg -I
    从 中提取包信息。

    dpkg -r
    移除一个已安装的包。

    dpkg -P
    完全清除一个已安装的包。和 remove 不同的是,remove 只是删掉数据和可执行文件,purge 另外还删除所有的配制文件。

    dpkg -L
    列出 安装的所有文件清单。同时请看 dpkg -c 来检查一个 .deb 文件的内容。

    dpkg -s
    显示已安装包的信息。同时请看 apt-cache 显示 Debian 存档中的包信息,以及 dpkg -I 来显示从一个 .deb 文件中提取的包信息。

    dpkg-reconfigure
    重 新配制一个已经安装的包,如果它使用的是 debconf (debconf 为包安装提供了一个统一的配制界面)。你能够重新配制 debconf 它本身,如你想改变它的前端或提问的优先权。例如,重新配制 debconf,使用一个 dialog 前端,简单运行:

    dpkg-reconfigure –frontend=dialog debconf (如果你安装时选错了,这里可以改回来哟:)

    echo ” hold” | dpkg –set-selections
    设置 的状态为 hlod (命令行方式)

    dpkg –get-selections “”
    取的 的当前状态 (命令行方式)

    支持通配符,如:
    Debian:~# dpkg –get-selections *wine*
    libwine hold
    libwine-alsa hold
    libwine-arts hold
    libwine-dev hold
    libwine-nas hold
    libwine-print hold
    libwine-twain hold
    wine hold
    wine+ hold
    wine-doc hold
    wine-utils hold

    例如:
    大家现在用的都是 gaim-0.58 + QQ-plugin,为了防止 gaim 被升级,我们可以采用如下方法:

    方法一:
    Debian:~# echo “gaim hold” | dpkg –set-selections
    然後用下面命令检查一下:
    Debian:~# dpkg –get-selections “gaim”
    gaim hold
    现在的状态标志是 hold,就不能被升级了。

    如果想恢复怎么办呢?
    Debian:~# echo “gaim install” | dpkg –set-selections
    Debian:~# dpkg –get-selections “gaim”
    gaim install
    这时状态标志又被重置为 install,可以继续升级了。

    同志们会问,哪个这些状态标志都写在哪个文件中呢?
    在 /var/lib/dpkg/status 里,你也可以通过修改这个文件实现 hold。

    有时你会发现有的软件状态标志是 purge,不要奇怪。
    如:事先已经安装了 amsn,然後把它卸了。
    apt-get remove –purge amsn
    那么状态标志就从 install 变成 purge。

    方法二:
    在/etc/apt 下手动建一个 preferences 文件
    内容:
    Package: gaim
    Pin: version 0.58*
    保存

    dpkg -S
    在包数据库中查找 ,并告诉你哪个包包含了这个文件。(注:查找的是事先已经安装的包)

    ——————————————–
    Debian的软件包管理工具命令不完全列表
    ——————————————–
    Debian系统中所有的包信息都在/var/lib/dpkg下.其中/var/lib/dpkg/info目录中保存了各个软件包的信息及管理文件.每个文件的作用如下:
    以 “.conffiles”     结尾的文件记录软件包的配置列表.
    以 “.list”          结尾的文件记录了软件包的文件列表,用户可在文件当中找到软件包文件的具体安装位置.
    以 “.md5sums”       结尾的文件记录了md5信息,用来进行包的验证的.
    以 “.config”        结尾的文件是软件包的安装配置角本.
    以 “.postinst”      角本是完成Debian包解开之后的配置工作,通常用来执行所安装软件包相关的命令和服务的重新启动.
    以 “.preinst”       角本在Debain解包之前运行,主要作用是是停止作用于即将升级的软件包服务直到软件包安装或和升级完成.
    以 “.prerm”         脚本负责停止与软件包关联的daemon服务,在删除软件包关联文件之前执行.
    以 “.postrm”        脚本负责修改软件包链接或文件关联,或删除由它创建的文件.

    /var/lib/dpkg/available是软件包的描述信息.
    包括当前系统中所有使用的Debian安装源中所有的软件包,还包括当前系统中已经安装和未安装的软件包.

    1.dpkg包管理工具

    dpkg -r 卸载软件包.不是完全的卸载,它的配置文件还存在.
    dpkg –info “软件包名” –列出软件包解包后的包名称.
    dpkg -l     –列出当前系统中所有的包.可以和参数less一起使用在分屏查看.
    dpkg -l |grep -i “软件包名” –查看系统中与”软件包名”相关联的包.
    dpkg -s   查询已安装的包的详细信息. dpkg -L   查询系统中已安装的软件包所安装的位置.
    dpkg -S   查询系统中某个文件属于哪个软件包.
    dpkg -I   查询deb包的详细信息,在一个软件包下载到本地之后看看用不用安装(看一下呗).
    dpkg -i 手动安装软件包(这个命令并不能解决软件包之前的依赖性问题),如果在安装某一个软件包的时候遇到了软件依赖的问题,可以用apt-get -f install在解决信赖性这个问题.
    dpkg -reconfigure 重新配置
    dpkg -P 全部卸载(但是还是不能解决软件包的依赖性的问题)
    2. apt高级包管理工具
    (1)GTK图形的”synaptic”,这是APT的前端工具.
    (2)”aptitude”,这也是APT的前端工具.
    用APT管理工具进行包的管理,可以有以下几种方法做源:
    (1)拿安装盘做源,方法如下:
    apt-cdrom ident        扫描光盘的信息
    apt-cdrom add          添加光盘源
    (2)这也是最常用的方法就是把源添加到/etc/apt/source.list中,之后更新列apt-get update
    APT管理工具常用命令
    apt-cache 加上不同的子命令和参数的使用可以实现查找,显示软件,包信息及包信赖关系等功能.
    apt-cache stats 显示当前系统所有使用的Debain数据源的统计信息.
    apt-cache search +”包名”,可以查找相关的软件包.
    apt-cache show   +”包名”,可以显示指定软件包的详细信息.
    apt-cache depends +”包名”,可以查找软件包的依赖关系.
    apt-get upgrade   更新系统中所有的包到最新版
    apt-get install   安装软件包
    apt-get –reindtall install 重新安装软件包
    apt-get remove 卸载软件包
    apt-get –purge remove 完全卸载软件包
    apt-get clean 清除无用的软件包
    在用命令apt-get install之前,是先将软件包下载到/var/cache/apt/archives中,之后再进行安装的.所以我们可以用apt-get clean清除/var/cache/apt/archives目录中的软件包.
    源码包安装
    apt-cache showsrc 查找看源码包的文件信息(在下载之前)
    apt-get source 下载源码包.
    apt-get build-dep +”包名” 构建源码包的编译环境.

     

    清除处于rc状态的软件包

    dpkg -l |grep ^rc|awk ‘{print $2}’ |tr [“\n”] [” “] | sudo xargs dpkg -P –

     

    Ubuntu 方便宜用,最值得让人称道的便是其安装软件的方式, 一条命令: sudo apt-get install xxx 就几乎能帮你搞定所有的软件安装难题。但是有时你可能有这样的需求,查看某个软件包是否安装、安装在哪…, 那我们就来介绍一下 Ubuntu 的软件包管理方式。

    一、Ubuntu 采用 Debian 的软件包管理器 dpkg 来管理软件包, 类似 RPM. 系统中所有 packages 的信息都在 /var/lib/dpkg/
    目录下, 其子目录 /var/lib/dpkg/info 用于保存各个软件包的配置文件列表:
    (1).conffiles 记录了软件包的配置文件列表
    (2).list 保存软件包中的文件列表, 用户可以从 .list 的信息中找到软件包中文件的具体安装位置.
    (3).md5sums 记录了软件包的md5信息, 这个信息是用来进行包验证的.
    (4).prerm 脚本在 Debian 包解包之前运行, 主要作用是停止作用于即将升级的软件包的服务, 直到软件包安装或升级完成.
    (5).postinst 脚本是完成 Debian 包解开之后的配置工作, 通常用于执行所安装软件包相关命令和服务重新启动.

    /var/lib/dpkg/available 文件的内容是软件包的描述信息, 该软件包括当前系统所使用的 Debian 安装源中的所有软件包,
    其中包括当前系统中已安装的和未安装的软件包.

    /var/cache/apt/archives 目录是在用 apt-get install 安装软件时,软件包的临时存放路径

    /etc/apt/sources.list 存放的是软件源站点, 当你执行 sudo apt-get install xxx 时,Ubuntu 就去这些站点下载软件包到本地并执行安装

    二、相关命令使用示例:
    (1)查看某软件包的安装内容
    dpkg -L xxx

    (2)查找软件库中的软件包
    apt-cache search 正则表达式

    (3)显示系统安装包的统计信息
    apt-cache stats

    (4)显示系统全部可用软件包的名称
    apt-cache pkgnames

    (5)显示某软件包的详细信息
    apt-cache show xxx

    (6)查找某文件属于哪个包
    apt-file search xxx

    (7)查看已经安装了哪些软件包
    dpkg -l

    (8)查询某软件依赖哪些软件包
    apt-cache depends xxx

    (9)查询某软件被哪些软件包依赖
    apt-cache rdepends xxx

    (10)增加一个光盘源
    sudo apt-cdrom add
    注: 顾名思义, 就是安装更新软件包时让其优先从Ubuntu 光盘上找(如果你不能上网安装/更新, 但有 Ubuntu 的 DVD ISO, 这会对你非常有用)

    (11)系统升级
    sudo apt-get update

    (12)清除所有已删除软件包的残馀配置文件
    dpkg -l |grep ^rc|awk ‘{print $2}’ |sudo xargs dpkg -P

    (13)编译时缺少h文件的自动处理
    sudo auto-apt run ./configure

    (14)查看安装软件时下载软件包的临时存放目录
    ls /var/cache/apt/archives

    (15)备份当前系统安装的所有软件包的列表
    dpkg –get-selections | grep -v deinstall > ~/somefile

    (16)从上面备份的安装包的列表文件恢复所有包
    dpkg –set-selections < ~/somefile
    sudo dselect

    (17)清理旧版本的软件缓存
    sudo apt-get autoclean

    (18)清理所有软件缓存
    sudo apt-get clean

    (19)删除系统不再使用的孤立软件
    sudo apt-get autoremove

    (20)查看软件包在服务器上面的地址
    apt-get -qq –print-uris install ssh | cut -d\’ -f2

     

  • firefox强大的下载插件downthemall

    非常不错的下载工具,提供高级加速器可增加4倍以上的加速并且允许您随时暂停并恢复下载。只需一次点击即可下载网页中的所有链接;可以使用正则表达式自定义监视的文件类型;支持断点续传;多线程下载,大大提高下载速度。
    DownThemAll快速,可靠并且容易使用!它让您可以下载页面中的所有链接和图像,还有更多:您可以用可高度可定制的条件提纯您的下载,来获取您想 要的!可完全控制下载,随时指定速度和并发连接数量。使用Metalinks或手动增加镜像从其它服务器同时下载文件。

    http://www.downthemall.net/

    about:downthemall

  • 转–Ubuntu/linux下最强大的下载工具-aria2

    aria2是我今天新学到的一个命令行的下载工具,虽然还没研究透,但是他绝对比wget更好.

    aria2 是 Linux 下一个不错的高速下载工具。由于它具有分段下载引擎,所以支持从多个地址或者从一 个地址的多个连接来下载同一个文件。这样自然就大大加快了文件的下载速 度。aria2 也具有断点续传功能,这使你随时能够恢复已经中断的文件下载。除了支持一般的 http(s) 和 ftp 协议外,aria2 还支持 BitTorrent 协议。这意味着,你也可以使用 aria2 来下载 torrent 文件。

    安装 aria2

    aria2 目前已被包含到许多 Linux 发行版中,因此你可以通过所用的系统直接加以安装。例如,在 Debian/Ubuntu 中,你可以在终端执行如下指令来安装 aria2:

    sudo apt-get install aria2aria2 的使用方法

    aria2 是命令行程序,使用非常简单。

    • 一般使用使用 aria2 下载文件,只需在命令后附加地址即可。比如我们下载ubuntu如: aria2c http://www.mirror.tw/pub/ubuntu/releases/jaunty/ubuntu-9.04-desktop-i386.iso
    • 分段下载利用 aria2 的分段下载功能可以加快文件的下载速度,对于下载大文件时特别有用。为了使用 aria2 的分段下载功能,你需要在命令中指定 s 选项。如: aria2c -s 2 http://www.mirror.tw/pub/ubuntu/releases/jaunty/ubuntu-9.04-desktop-i386.iso这将使用 2 个连接来下载该文件。s 后面的参数值介于 1~5 之间,你可以根据实际情况选择。
    • 断点续传在命令中使用 c 选项可以断点续传文件。如: aria2c -c http://www.mirror.tw/pub/ubuntu/releases/jaunty/ubuntu-9.04-desktop-i386.iso
    • 下载 torrent 文件你也可以使用 aria2 下载 BitTorrent 文件。如: aria2c -o gutsy.torrent http://cdimage.ubuntu.com/daily-live/current/gutsy-desktop-i386.iso.torrent

    关于 aria2 的更多用法,可以通过 man aria2c 查阅。

  • 12.04source 更新服务器

    cp sources.list sources.list.backup
    vi /etc/apt/sources.list

    #网易的源(163源,无论是不是教育网,速度都很快)
    deb http://mirrors.163.com/ubuntu/ precise main restricted universe multiverse
    deb http://mirrors.163.com/ubuntu/ precise-security main restricted universe multiverse
    deb http://mirrors.163.com/ubuntu/ precise-updates main restricted universe multiverse
    deb http://mirrors.163.com/ubuntu/ precise-proposed main restricted universe multiverse
    deb http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse
    deb-src http://mirrors.163.com/ubuntu/ precise main restricted universe multiverse
    deb-src http://mirrors.163.com/ubuntu/ precise-security main restricted universe multiverse
    deb-src http://mirrors.163.com/ubuntu/ precise-updates main restricted universe multiverse
    deb-src http://mirrors.163.com/ubuntu/ precise-proposed main restricted universe multiverse
    deb-src http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse

    #台湾源(台湾的ubuntu 更新源还是很给力的)
    deb http://tw.archive.ubuntu.com/ubuntu precise main restricted universe multiverse
    deb http://tw.archive.ubuntu.com/ubuntu precise-security main restricted universe multiverse
    deb http://tw.archive.ubuntu.com/ubuntu precise-updates main restricted universe multiverse
    deb http://tw.archive.ubuntu.com/ubuntu precise-backports main restricted universe multiverse
    deb http://tw.archive.ubuntu.com/ubuntu precise-proposed main restricted universe multiverse
    deb-src http://tw.archive.ubuntu.com/ubuntu precise main restricted universe multiverse
    deb-src http://tw.archive.ubuntu.com/ubuntu precise-security main restricted universe multiverse
    deb-src http://tw.archive.ubuntu.com/ubuntu precise-updates main restricted universe multiverse
    deb-src http://tw.archive.ubuntu.com/ubuntu precise-backports main restricted universe multiverse
    deb-src http://tw.archive.ubuntu.com/ubuntu precise-proposed main restricted universe multiverse

    #搜狐更新服务器
    deb http://mirrors.sohu.com/ubuntu/ precise main restricted universe multiverse
    deb http://mirrors.sohu.com/ubuntu/ precise-security main restricted universe multiverse
    deb http://mirrors.sohu.com/ubuntu/ precise-updates main restricted universe multiverse
    deb http://mirrors.sohu.com/ubuntu/ precise-proposed main restricted universe multiverse
    deb http://mirrors.sohu.com/ubuntu/ precise-backports main restricted universe multiverse
    deb-src http://mirrors.sohu.com/ubuntu/ precise main restricted universe multiverse
    deb-src http://mirrors.sohu.com/ubuntu/ precise-security main restricted universe multiverse
    deb-src http://mirrors.sohu.com/ubuntu/ precise-updates main restricted universe multiverse
    deb-src http://mirrors.sohu.com/ubuntu/ precise-proposed main restricted universe multiverse
    deb-src http://mirrors.sohu.com/ubuntu/ precise-backports main restricted universe multiverse

    #中国科学技术大学更新服务器
    deb http://debian.ustc.edu.cn/ubuntu/ precise main multiverse restricted universe
    deb http://debian.ustc.edu.cn/ubuntu/ precise-backports main multiverse restricted universe
    deb http://debian.ustc.edu.cn/ubuntu/ precise-proposed main multiverse restricted universe
    deb http://debian.ustc.edu.cn/ubuntu/ precise-security main multiverse restricted universe
    deb http://debian.ustc.edu.cn/ubuntu/ precise-updates main multiverse restricted universe
    deb-src http://debian.ustc.edu.cn/ubuntu/ precise main multiverse restricted universe
    deb-src http://debian.ustc.edu.cn/ubuntu/ precise-backports main multiverse restricted universe
    deb-src http://debian.ustc.edu.cn/ubuntu/ precise-proposed main multiverse restricted universe
    deb-src http://debian.ustc.edu.cn/ubuntu/ precise-security main multiverse restricted universe
    deb-src http://debian.ustc.edu.cn/ubuntu/ precise-updates main multiverse restricted universe

    sudo apt-get update

     

  • Ubuntu下常见问题技巧-持续更新

    ubuntu在英文环境下,ibus不能启动的问题,解决如下:

    在shell下输入:gnome-settings-daemon

    然后进行设置:
    Name: IBus daemon
    Command: /usr/bin/ibus-daemon -d
    Comment: start IBus daemon when Gnome starts

    四、中文环境下,想让make等运行时输出英文的错误信息:

    export LC_ALL=C

    五、安装nfs-server:

    apt-get install nfs-kernel-server

    root@skyi:/home# cat /etc/exports
    /home/nfs_disk *(rw,sync,no_root_squash)

    root@skyi:/home# cat /etc/default/tftpd-hpa (安装tftpd-hpa服务器)
    # /etc/default/tftpd-hpa
    TFTP_USERNAME=”tftp”
    TFTP_DIRECTORY=”/tftpboot”
    TFTP_ADDRESS=”0.0.0.0:69″
    TFTP_OPTIONS=”-l -c -s –secure”

    六、批量重命名文件后缀:

    rename ‘s/\.bin$/\.jpg/’ *.bin(把bin后缀改成jpg)

    七、gedit打开中文乱码的解决:
    1、运行dconf-editor
    2、展开/org/gnome/gedit/preferences/encodings
    3、auto-detected的Value中加入 ‘GB18030’ ,加在CURRENT前面;

    八、输入法的全角、半角切换快捷键:

    常用快捷键:

    • shift+空格:全角半角切换
    • Ctrl+;:简体繁体切换
    • Ctrl+,:切换单字模式
    • Ctrl+.:切换中英文标点
    • Ctrl+/:切换直接提交模式

     

    Shift 中英文切换
    (左)Shift + Space 字母全角/半角切换
    Ctrl + . 符号全角/半角切换
    Ctrl + Space 启动关闭输入法
    Ctrl + 数字 删除数字对应的用户自造词
    回车按钮 直接输入英文

     

  • ubuntu软件中心打不开解决办法

    出现诸如

    无法检查更新,提示E:Encountered a section with no Package: header, E:Problem with MergeList /var/lib/apt/lists/cn.archive.ubuntu.com_ubuntu_dists_natty_main_binary-i386_Packages

    解决

    依次运行下面的命令:

    sudo rm /var/lib/apt/lists/* -vf

    sudo apt-get update

    sudo apt-get dist-upgrade

    sudo apt-get install –reinstall software-center

  • Xming X Server 配置和使用-转

    http://hi.baidu.com/edeed/item/40371af1e0a4e5c4a835a28b

    Linux以及各种Unix like的操作系统现在都用基于X Window图形界面. 这个东西虽然块头比较大, 效率不太高, 导致Linux的3D游戏一直没什么动静, 但是, 它接口良好, 扩展性和可移植性都很好, 最重要的是具有网络透明性, 所以我们就可以很方便的远程启动Linux的图形程序. 下面说的就是在Windows下远程运行Linux图形界面的方法.

    1. 原理Linux/Unix的X Window具有网络透明性. X Window系统里有一个统一的Server来负责各个程序与显示器/键盘和鼠标等输入输出设备的交互, 每个有GUI的应用程序都通过网络协议与Server进行交互. 所以对于任何一个应用程序, 本地运行和远程运行的差别仅仅是X Server的地址不同, 别的没有差别. 所以在Windows运行一个X Server, 就可以很方便的远程运行有GUI的Linux应用了. 同时, OpenSSH具有X转发功能, 可以将Linux主机的X程序通过SSH的管道转发给客户端. 于是通过PuTTY或SecureCRT连接到主机, 再将接收到的由主机转发来的X程序的交互交给在本地Windows系统下运行的X Server来管理和显示, 原则上说, 这就可以实现远程使用Linux的GUI程序.
    主机上需要的配置(默认即是):
    # vi /etc/ssh/sshd_config
    取消这一行的注释, 如果没有这一行则手动添加之:
    X11Forwrding yes
    这样配置的作用就是允许SSH的X转发. 其实本质上说, 这样做是有一定安全风险的, SSH并不能绝对的保证你数据的安全性, 不过一般情况下这也够了.2. 软件介绍和下载需要在本地Windows上运行一个X Server. 选择有很多, Cygwin下的X Server恐怕是最著名的, 但是为了这么一个小小的事情去安装一个Cygwin似乎有些夸张; 除了Cygwin, 还有两个著名的商业软件可以选用, Xwin32和Xmanager, 感觉很流畅很好用, 不过虽然Xmanager可以试用, 但是终究还是商业软件; 还有一个选择, 就是这里要讲的, 开源软件Xming. Xming是一个配置简单而功能强大的开源X Server, 可以运行在M$的XP/2003/Vista操作系统下.

    介绍: http://www.straightrunning.com/XmingNotes/
    下载: http://sourceforge.net/project/showfiles.php?group_id=156984
    Xming 6.9.0.31 用OpenGL展示界面
    Xming-fonts 7.4.0.3 标准X字体,部分传统的X应用的显示也需要这些字体
    Xming-mesa 6.9.0.31 用更慢的Mesa展示界面, 有时X转发会更好
    Xming-portable-PuTTY 7.3.0.26 不写注册表的putty, 也可用传统的putty或secureCRT等提供X界面转发ssh程序
    Xming-tools-and-clients 6.9.0.28 提供一些X应用专用的工具
    XLaunch_zh.zip 如果不习惯使用Xming自带的英文版XLaunch, 可下载中文版的,下载地址http://www.straightrunning.com/code/XLaunch_zh.zip

    3. Xming安装和运行

    双击Xming-6-9-0-31-setup.exe安装Xming, 第一次运行时使用开始菜单里面的XLaunch来启动, 产生一个初始的配置文件. 对于简单的使用来说, 不需要任何特殊的配置, 一切使用默认即可. 需要记住的是下图中标示出的”Display number”中的数字, 此处使用默认的0.


    最后一步中的Save configuration可以把这个设置保存为一个文件, 以后每次用这个设置只需运行该文件, 而不用每次都重新配置. 启动完成后, 在托盘区会出现一个”X”形状的图标, 这表示Xming已经在运行了, 将鼠标悬停上去, 能看到当前使用的”Display number”.

    4. PuTTY对X转发的配置

    在Session页面的Host name和port里填好putty的服务器地址和端口.
    在Data页面的Auto-login username里填好登录用户名.
    在SSH页面的Preffered SSH protocal version里设置优先SSH版本是2.
    最重要的一步, 在X11页面选择Enable X11 forwarding, X display location填上localhost:0, 下面的协议选择MIT-Magic-Cookie-1.


    然后连接登录远程主机, 看上去一切正常的样子. 试着运行一下 emacs & 图形界面就出来了, 只是看不到文字, 全是些方块.
    看看终端的输出信息:
    $ emacs &
    Warning: Cannot convert string “-*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-*” to type FontStruct
    Warning: Cannot convert string “-*-helvetica-medium-r-*–*-120-*-*-*-*-iso8859-1” to type FontStruct
    原来是Xming没有相应的字体. 下面安装Xming-fonts 7.4.0.3

    5. Xming-fonts的安装

    双击Xming-fonts-7-4-0-3-setup.exe安装Xming-fonts, 安装路径为默认的C:\Program Files\Xming, 则安装字体之后的字体路径就是C:\Program Files\Xming\fonts. 这样安装字体后, 运行 emacs & 字体能正常显示了. 再来试试, 这下子emacs就正常多了.


    6. SecureCRT对X转发的配置

    在Session Options – Port Forwarding – Remote/X11 里选上”Forward X11 packets”, 如下:


    然后连接登录远程主机, 看上去一切正常的样子. 试着运行一下 emacs & 图形界面就出来了.

    7. 小小的Tips

    用防火墙阻止Xming访问网络. 因为这样的一个X Server本质是不安全的, 而且并不需要它联网, 因为你只是在本机使用而已.
    感受: Xming总体来说还是不如Xmanager, 运行的流畅程度还是有不小的差距, 尤其是鼠标的移动, 感觉一顿一顿的, 纵然是在局域网内, 情况也没有好特别多.

    –End–

  • Fedora17的学习笔记

    fedora 17上已经不再使用chkconfig来配置服务了,RHEL上很多相关命令在fedora 17上都没法正常使用了。
    chkconfig –list只能看到极个别的服务

    systemctl start|stop|status XXX.service
    ntsysv命令在fedora 17下支持的服务不多了

    开启自启动:
    systemctl enable proftpd.service
    ln -s ‘/lib/systemd/system/proftpd.service’ ‘/etc/systemd/system/multi-user.target.wants/proftpd.service’
    systemctl enable mysqld.service
    ln -s ‘/lib/systemd/system/mysqld.service’ ‘/etc/systemd/system/multi-user.target.wants/mysqld.service’

    systemctl status httpd.service
    httpd.service – The Apache HTTP Server (prefork MPM)
    Loaded: loaded (/lib/systemd/system/httpd.service; enabled)
    Active: active (running) since Mon, 04 Feb 2013 10:40:54 +0800; 3h 51min ago
    Main PID: 10991 (httpd)
    CGroup: name=systemd:/system/httpd.service
    ├ 10991 /usr/sbin/httpd -k start
    ├ 10993 /usr/sbin/httpd -k start
    ├ 10994 /usr/sbin/httpd -k start
    ├ 10995 /usr/sbin/httpd -k start
    ├ 10996 /usr/sbin/httpd -k start
    ├ 10997 /usr/sbin/httpd -k start
    ├ 10998 /usr/sbin/httpd -k start
    ├ 10999 /usr/sbin/httpd -k start
    ├ 11000 /usr/sbin/httpd -k start
    ├ 11187 /usr/sbin/httpd -k start
    ├ 11188 /usr/sbin/httpd -k start
    └ 11367 /usr/sbin/httpd -k start