LiangShuang's ...

I'm not a programmer...

latex添加中文CJK支持(FC14)

     参考了好多网上的资料终于把中文搞出来了。

     准备


1. 安装Latex

sudo yum install texlive-latex

2. 安装IDE Kile

3. 安装CJK

网上的资料都是下载CJK文件,直接解压复制到/usr/share/texmf/tex/latex/下,但是里面有很多压缩包,不知道怎么弄了,就直接找了个CJK的RPM包,安装就行了。

4. 下载cyberbit.ttf和Unicode.sfd文件,放到同一个文件夹下。

5. 安装ttf2tmf和ttf2pfb

这两个工具在源里找不到,上网搜到了RPM包,在freetype-tools里面可以找到这两个工具,安装的时候依赖libttf.so.2这个动态库,这个库在 freetype1中可以找到。

6. 将cyberbit.ttf转化成*.tfm和*.enc格式的文件

输入命令 ttf2tfm cyberbit.ttf -w cyberbit@Unicode@就可以得到大量的*.tfm和*.enc文件,但是不知道为什么我的没有生成,于是就直接下载已经做好了的*.tfm*.enc压缩包。

7. 将cyberbit.ttf转化成.pfb格式

ttf2pfb cyberbit.ttf -o cyberbit.pfb

8. 下载delloye.free.fr/c70cyberbit.fd,放到/usr/share/texmf/tex/latex/cyberbit/下。

配置cyberbit


1. 将*.tfm和*.enc放到对应的目录下

*.tfm ==> /usr/share/texmf/fonts/tfm/bitstream/cyberbit

*.enc ==> /user/share/texmf/fonts/enc/pdftex/cyberbit

2. 安装cyberbit.ttf和cyberbit.pfb文件

cyberbit.ttf ==> /usr/share/texmf/fonts/truetype/

cyberbit.pfb ==> /usr/share/texmf/fonts/type1/

3. 安装cyberbit.map文件

cyberbit.map ==> /usr/share/texmf/fonts/map/pdftex/cyberbit/

4. 修改updmap.cfg文件

在/usr/share/texmf/web2c/updmap.cfg添加Map cyberbit.map /usr/share/texmf/fonts/map/pdftex/cyberbit/cyberbit.map

然后运行udpmap

最后运行sudo texhash,更新改变。

参考:

http://www.math.nus.edu.sg/aslaksen/cs/cjk.html

http://www.oiegg.com/viewthread.php?tid=735190

 

'LD_LIBRARY_PATH' Is Bad!!

前段时间想学习以下Latex编辑器,于是装了个集成开发环境Kile,但是一直运行不起来,在终端下运行时显示的错误是‘symbol lookup error: /usr/lib/libQtSvg.so.4: undefined symbol ......',到网上查了很长时间都没有找到解决办法。今天有时间又弄了以下,觉得是动态库的问题,ldd /usr/bin/kile,果然,看到结果后就可以确定问题是出在LD_LIBRARY_PATH这个环境变量上了,

    linux-gate.so.1 =>  (0x00671000)
    libkhtml.so.5 => /usr/lib/libkhtml.so.5 (0x06640000)
    libkrosscore.so.4 => /usr/lib/libkrosscore.so.4 (0x00294000)
    libkfile.so.4 => /usr/lib/libkfile.so.4 (0x06d18000)
    libktexteditor.so.4 => /usr/lib/libktexteditor.so.4 (0x042ed000)
    libkparts.so.4 => /usr/lib/libkparts.so.4 (0x04bc7000)
    libkjs.so.4 => /usr/lib/libkjs.so.4 (0x04d65000)
    libQtScript.so.4 => /usr/lib/libQtScript.so.4 (0x06392000)
    libkio.so.5 => /usr/lib/libkio.so.5 (0x060f8000)
    libQtXml.so.4 => /opt/programs/altera/10.0/quartus/linux/libQtXml.so.4 (0x001f2000)
    libnepomuk.so.4 => /usr/lib/libnepomuk.so.4 (0x007cf000)
    libsoprano.so.4 => /usr/lib/libsoprano.so.4 (0x04135000)
    libQtNetwork.so.4 => /opt/programs/altera/10.0/quartus/linux/libQtNetwork.so.4 (0x002b2000)
    libkdeui.so.5 => /usr/lib/libkdeui.so.5 (0x05ceb000)
    libQtSvg.so.4 => /usr/lib/libQtSvg.so.4 (0x006f6000)
    libkdecore.so.5 => /usr/lib/libkdecore.so.5 (0x04f80000)
    libQtCore.so.4 => /opt/programs/altera/10.0/quartus/linux/libQtCore.so.4 (0x003d8000)
    libpthread.so.0 => /lib/libpthread.so.0 (0x00c88000)
    libQtDBus.so.4 => /usr/lib/libQtDBus.so.4 (0x00110000)
    libQtGui.so.4 => /opt/programs/altera/10.0/quartus/linux/libQtGui.so.4 (0x00ca3000)
    libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x008ae000)
    libm.so.6 => /lib/libm.so.6 (0x00c5c000)
    libgcc_s.so.1 => /opt/programs/altera/10.0/quartus/linux/libgcc_s.so.1 (0x00189000)
    libc.so.6 => /lib/libc.so.6 (0x00ad0000)
    libphonon.so.4 => /usr/lib/libphonon.so.4 (0x04ea0000)
    libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x04c8b000)
    libgif.so.4 => /usr/lib/libgif.so.4 (0x0074d000)
    libpng12.so.0 => /usr/lib/libpng12.so.0 (0x00194000)
    libz.so.1 => /lib/libz.so.1 (0x001bc000)
    libSM.so.6 => /usr/lib/libSM.so.6 (0x00a9c000)
    libICE.so.6 => /usr/lib/libICE.so.6 (0x047be000)
    libX11.so.6 => /usr/lib/libX11.so.6 (0x0536e000)
    libXext.so.6 => /usr/lib/libXext.so.6 (0x001d1000)
    libXft.so.2 => /usr/lib/libXft.so.2 (0x00a64000)
    libXau.so.6 => /usr/lib/libXau.so.6 (0x001e2000)
    libXpm.so.4 => /usr/lib/libXpm.so.4 (0x0088b000)
    libsolid.so.4 => /usr/lib/libsolid.so.4 (0x0421e000)
    libXrender.so.1 => /usr/lib/libXrender.so.1 (0x001e5000)
    libpcre.so.0 => /lib/libpcre.so.0 (0x04c44000)
    libpcreposix.so.0 => /usr/lib/libpcreposix.so.0 (0x001ee000)
    libstreamanalyzer.so.0 => /usr/lib/libstreamanalyzer.so.0 (0x0099f000)
    libstreams.so.0 => /usr/lib/libstreams.so.0 (0x042b2000)
    libacl.so.1 => /lib/libacl.so.1 (0x04b4b000)
    libattr.so.1 => /lib/libattr.so.1 (0x04aff000)
    libsopranoclient.so.1 => /usr/lib/libsopranoclient.so.1 (0x006a2000)
    libdbusmenu-qt.so.2 => /usr/lib/libdbusmenu-qt.so.2 (0x00265000)
    libXtst.so.6 => /usr/lib/libXtst.so.6 (0x00a59000)
    libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0x00238000)
    libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0x00242000)
    libbz2.so.1 => /lib/libbz2.so.1 (0x04a90000)
    liblzma.so.0 => /usr/lib/liblzma.so.0 (0x04b23000)
    libresolv.so.2 => /lib/libresolv.so.2 (0x00247000)
    libfam.so.0 => /usr/lib/libfam.so.0 (0x00668000)
    libdl.so.2 => /lib/libdl.so.2 (0x00672000)
    librt.so.1 => /lib/librt.so.1 (0x00677000)
    /lib/ld-linux.so.2 (0x00aaf000)
    libdbus-1.so.3 => /lib/libdbus-1.so.3 (0x00782000)
    libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x01716000)
    libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x00a1c000)
    libglib-2.0.so.0 => /lib/libglib-2.0.so.0 (0x017a8000)
    libpulse.so.0 => /usr/lib/libpulse.so.0 (0x0448f000)
    libpulse-mainloop-glib.so.0 => /usr/lib/libpulse-mainloop-glib.so.0 (0x00a8e000)
    libuuid.so.1 => /lib/libuuid.so.1 (0x00680000)
    libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00756000)
    libxml2.so.2 => /usr/lib/libxml2.so.2 (0x04340000)
    libXi.so.6 => /usr/lib/libXi.so.6 (0x00685000)
    libexpat.so.1 => /lib/libexpat.so.1 (0x018b6000)
    libpulsecommon-0.9.21.so => /usr/lib/libpulsecommon-0.9.21.so (0x045b1000)
    libwrap.so.0 => /lib/libwrap.so.0 (0x00a83000)
    libsndfile.so.1 => /usr/lib/libsndfile.so.1 (0x04b55000)
    libasyncns.so.0 => /usr/lib/libasyncns.so.0 (0x00a7b000)
    libnsl.so.1 => /lib/libnsl.so.1 (0x04b06000)
    libFLAC.so.8 => /usr/lib/libFLAC.so.8 (0x04d26000)
    libvorbisenc.so.2 => /usr/lib/libvorbisenc.so.2 (0x0487b000)
    libvorbis.so.0 => /usr/lib/libvorbis.so.0 (0x04aab000)
    libogg.so.0 => /usr/lib/libogg.so.0 (0x04aa3000)

红色部分就是问题之所在,由于之前在安装quartus的时候设置了一个so的路径,还以为LD_LIBRARY_PATH和PATH一样的都是按顺序查找各个部分呢,但是LD_LIBRARY_PATH是加在系统默认的加载路径之前的,'This list is prepended to the existing list of compiled-in loader paths for a given executable, and any system default loader paths',那么这个问题就和上次的那个nautilus程序的问题一样,都是连接到了错误的so文件,导致符号找不到或版本问题。

'LD_LIBRARY_PATH is handy for development and testing, but shouldn't be modified by an installation process for normal use by normal users; see ``Why LD_LIBRARY_PATH is Bad'' at http://www.visi.com/~barr/ldpath.html for an explanation of why',原文是这么说的,这个环境变量主要用于开发和测试阶段,不适合在应用程序的安装过程中修改。。

CentOS下CVS配置

由于实验室的项目需要进行版本控制,正好有台空闲的CentOS,可以拿来作服务器,于是就搞了一下,配置过程如下:

    环境:

  • OS:CentOS 5.5
  • Kernel:Linux hit-centos 2.6.18-194.32.1.el5 #1 SMP
  • CVS Version:Concurrent Versions System (CVS) 1.11.22 (client/server)

1. 首先确认CVS是否安装:

    rpm -qa | grep cvs,如果出现 cvs-1.11.22-7.el5就说明CVS已经在主机上安装了。

2. 建立CVS管理所对应的用户和组:

    在centos下这个过程有个小插曲,首先如果终端下直接输入sudo groupadd的话会提示出错,"sudo: groupadd: command not found",然后切换到root用户su,仍然是找不到命令,Google了一下centos的wiki上(http://wiki.centos.org/TipsAndTricks/BecomingRoot)讲得还是很清楚的,当我们想要change为root身份时su就足够了,但是不会获得其环境配置信息,因此当执行groupadd或ifconfig时就会提示找不到命令,正确的切换命令应该是su -,the trailing dash is the tricky. 之后就可以新建组groupadd cvs,然后添加一个新用户到工作组useradd -g cvs -G cvs -d /home/cvs-wsn hit-wsn,指定用户密码passwd hit-wsn

3. 以hit-wsn进行CVS的相关操作,初始化cvs源代码库,此操作生成目录/home/cvs-wsn/wsn-opdk/CVSROOT,其下为一些初始化文件,wsn-opdk为CVS管理的工程目录:

    su hit-wsn

    mkdir wsn-opdk

    cvs -d /home/cvs-wsn/wsn-opdk/ init,注意这里的路径为绝对路径。

4. CVS server的配置文件:

    sudo vim /etc/xinetd.d/cvspserver,内容如下:

    service cvspserver
    {
        flags           = REUSE
        socket_type     = stream
        wait            = no
        user            = hit-wsn
        protocol        = tcp
        server          = /usr/bin/cvs
        server_args     = -f --allow-root=/home/cvs-wsn/wsn-opdk pserver
        log_on_failure += USERID
        disable         = no
    }

5. 检查cvsperver服务:

    cat /etc/services | grep cvspserver
    结果显示 cvspserver      2401/tcp                        # CVS client/server operations
             cvspserver      2401/udp                        # CVS client/server operations

说明服务已存在。

6. 重启xinetd服务:

    sudo /etc/init.d/xinetd restart

7. 再次检查cvspserver服务是否已经启动:

    netstat -l | grep cvspserver,结果为"tcp 0      0 *:cvspserver    *:*                         LISTEN"

8. 添加CVS登录用户:

    在刚才新建的CVS代码库的CVSROOT目录下新建一个passwd文件,htpasswd -c passwd fc14,将新建一个叫做passwd的文件并且提示输入密码,密码经过md5加密放入passwd文件.以后新加用户不用-c,其中fc14是我的CVS登录用户名,

9. 修改passwd文件,将CVS用户于系统用户对应:

    每个用户那行最后添加:cvsroot ,然后去掉每行第二个冒号以后的所有内容,并添上字符串cvsroot

    我这里的系统用户为hit-wsn,所以就在后面添加了:hit-wsn,如:fc14:qfFRYXwG3SOaQ:hit-wsn
10. 这里我把方护墙和selinux都禁用了,根据以前的经验selinux会对此进行限制:

    vim /etc/sysconfig/selinux SELINUX=enforcing change to SELINUX=disabled

11. 测试一下:

    测试是在在局域网中的一台安装有CVS client的机器上的,就是我的fedora 14上,首先设置CVSROOT环境变量,在.bashrc下添加如下内容:

    export CVSROOT=:pserver:fc14@$(server_ipaddr):2401:/home/cvs-wsn/wsn-opdk/,其中psrver为协议,fc14是我刚刚添加的登录用户名,后面是CVS服务器的IP地址和端口号,最后是仓库的路径。

    输入密码登录成功之后就可以 cvs add file,cvs commit file了,我之后把项目工程放到了wsn-opdk下了,cvs checkout top_dir成功!

做得过程中参考了如下链接:

    http://blog.donews.com/zzw45/index.php/2007/05/centos4-5-%E4%B8%8A%E9%85%8D%E7%BD%AE-cvs/

    http://wiki.centos.org/TipsAndTricks/BecomingRoot

   

 

 

fedora防火墙太厉害了!

    最近新装了Fedora14,感觉还不错,就是用惯了ubuntu对于Fedora的一些习性有些不太习惯,不如说第一次用sudo的时候系统提示当前用户不在sudoers列表中,只好再手动添加一遍了:

# Change to root
su
# Make /etc/sudoers writable
chmod +w /etc/sudoers
# Add user to sudoers
echo "username ALL=(ALL) ALL" >> /etc/sudoers
chmod -w /etc/sudoers
# Ctrl-D to resume

除了这个和ubuntu的用法不太一样,还有网卡的配置文件,添加软件源……,这些还好都能在网上找到相关的用法。但是当我在Fedora上安装samba共享linux下的目录时又出现了一个问题。按照网上的安装教程sudo yum install -y samba,然后设置/etc/samba/smb.conf文件,修改后testparm结果如下:

[global]
	server string = %h server(Samba,fedora)
	username map = /etc/samba/smbusers
	log file = /var/log/samba/log.%m
	max log size = 50
	cups options = raw

[printers]
	comment = All Printers
	path = /var/spool/samba
	printable = Yes
	browseable = No

[ShareFedora]
	comment = share with widows
	path = /home/water/Share
	valid users = water
	read only = No
	create mask = 0777
	directory mask = 0777
	guest ok = Yes
	locking = No

然后添加smb用户sudo smbpasswd -a username,在/etc/samba/smbusers加上,water = "network username",然后重启samba服务,sudo service smb restart,在windows下访问测试说没有权限访问此计算机,在ubuntu下也用过samba和windows系统共享文件怎么就没出现过这种问题呢?于是又在网上查了其他的一些教程,才发现Fedora的防火墙selinux对samba进行了限制,需要修改防火墙过滤规则(/etc/sysconfig/iptables要求有root权限),让防火墙不要拦截windows用户对samba的访问,sudo system-config-firewall,在打开的Trusted Services配置页面,选中Linux Samba和Samba Client,并Apply,然后重启samba服务,一切都正常访问了,另外还可以直接把防火墙关掉,虽然这样会引起安全问题。

    这个问题是我联想起前几天使用nc传文件的问题,我能给别人传cat filename | nc <ip> <port>,但是别人传过来的文件我却接受不到,nc -l 1234 > <filename>,今天试着把防火墙关了再试试,结果真的是Fedora的防火墙限制了一些网络程序的访问。