存档

文章标签 ‘slackware’

VIM复制粘贴的那些事

九月 7th, {2011 11 条评论 16,449 人阅读过  

说起vim的复制粘贴一直是个比较困扰我的问题,之前一直用gvim,跟系统剪贴板之间的复制粘贴都没有问题,gvim毕竟还需要再开个窗口,麻烦,而且不如vim那样快捷,但vim里面最让我头痛的是复制粘贴问题,想把vim里面的内容复制到其它的地方貌似怎么也不行,粘贴进来的话免强可以,但格式可能会很乱,折腾来折腾去,今天先是发现了个往外复制比较蹩脚的办法:

:set mouse=v

这样鼠标就可以变成文本选择指针的样子,可以选择选择字体,然后点右键选复制,或者CTRL+SHIFT+C,但如果mouse=a这种模式下的话选择之后,右键的复制是灰色的,当然这种情况复制如果有行号的话行号也会被复制进去,所以在复制前先把行号关了,复制完再打开,这办法貌似也能凑合,但着实太不专业,而且太麻烦,远不如用gvim的“+y这种来得方便,“+y这个很多推友表示是可以的,但在我这里不可以,刚经@multiple1902指点,有可能是vim编译的问题。

查看了一下vim版本相关信息:

vim --version

发现clipboardxterm_clipboard这些选项都是不可使用的功能,这样看来果然是编译问题了,slackware讲求KISS,编译的时候没有加入该选项也可以理解,于是从vim官网svn上check下来源码(话说我为啥check下来的是7.2呢,难道7.3还没有stable…),重新编译。

编译的时候必须要选上的选项一个是–enable-multibyte,如果没加这个选项的话,中文应该就会乱码了。
另外关于剪贴板相关的选项,具体我也不清楚是哪一个,看了下几个相关的选项觉得最有可能是的是–enable-xim,只加了这两个选项之后编译完测试发现vim已经可以和系统剪贴板之间共享数据了,“+y可以使用了,世界一下子就清爽了很多,于是重新加完整选项编译:

./configure --prefix=/usr \
            --sysconfdir=/etc \
            --enable-tclinterp \
            --enable-pythoninterp \
            --enable-perlinterp \
            --enable-rubyinterp \
            --enable-cscope \
            --enable-multibyte \
            --enable-xim \
            --enable-gtk2-check \
            --enable-fontset \
            --with-x

OK,编译完成之后removepkg vim删掉之前slackware安装包中提供的vim,然后用makepkg打包安装,哎呀,说起包管理方式我还是最喜欢slackware的tgz包,虽然没有debian的apt那么华丽,但简洁就是美啊。

vim安装完之后已经可以用了,但存在一个问题,vim退出之后终端便会乱码,到网上搜了半天各种关于ubuntu下的解法,拿到slackware上来完全不适用,命令啦路径啦什么的根本找不到,最后搜到一个非常简单的解决办法,说是这个问题是因为gnome-terminal标题名称的不标准,我矁了一眼标题写着“终端”两个字,给出的解决办法是在前后各加一个空格,让系统让为它是英文,我直接把它改成了Terminal,然后再启动vim然后退出就没有问题了。

总算解决了我对于vim的怨念,一直以为是vim的问题,没想到竟然是slackware打包的问题。

分类: Linux 标签: ,

slackware13.1安装配置手记

八月 17th, {2010 9 条评论 10,512 人阅读过  

近日实验室一台thinkpad挂在我名下,为了防止资源的闲置浪费我决定拿过来用一段时间,正好也是项目需要,之前的程序需要gnome NetworkManager的支持,我前一段不得已时间在slackware13.0上将xfce换成了gnome,然后又装NetworkManager,后来还是没有成功,装是装好了,可 dbus仍有问题,程序跑不起来,不得已用了在这台机器上装了个ubuntu用了几天,现在项目中期已过,差不多该回过头来整理一下操作系统了,还是钟爱于slackware,而且早就想试一下13.1,正好借这个机会尝试一下。

从slackware官网上下了前两个cd,把vmlinz和initrd.gz解压出来放到了ubuntu的某个目录下,然后把第一个cd解压出来或者在安装的时候临时挂载也行,我是解压出来了,然后就是硬盘安装的各种熟悉的步骤了,只不过这次的grub是ubuntu的grub2,有一点不一样,在加载内核文件的时候需要用linux命令,而不是kernel命令,其它的都一样,之前在安装系统的时候分区用的是cfdisk,这次联想把这个分区表弄得很乱,cfdisk打不开,于是用fdisk分区,其实我已经划好了一块分区准备留给slackware的,只要用mkfs格式化成ext3或者ext4就可以了,格式化完之后还不行,slackware还是检测不到linux分区,需要修改分区的system id:

1
sudo fdisk /dev/sda

然后选择t将分区的system id修改为83,也就是linux分区,w写进分区表就可以啦,fdisk就会显示分区是Linux,而不是FAT12了,这样就可以进行系统安装了,setup就可以了,其它的就没什么特别的了。

这次在系统安装的时候我只安装了cd1,cd2是系统安装完成之后手动安装的,里面有linux source和一些常用的软件还有xorg,这次没有安装xfce,xfce已经让我审美疲劳了,而且这台机器配置也不错,装gnome也不会慢多少,接下来就要安装gnome了。

其实slackware的包管理工具也是很出色的,有slackpkg和slapt-get可以用,而且也都很不错,只不过在国内都找不到它们可用的源,能用的只有官方提供的源,而且都放在国外,教育网要用的话只能加代理,用起来有点麻烦,我比较喜欢slap-get,首先到gsb(Gnome Slackbuild)上下载slapt-get安装,更新一下配置文件

1
sudo vim /etc/slapt-get/slapt-getrc

我把所有的源都注释掉了,只用了下面的一个:

SOURCE=http://get.gnomeslackbuild.org/gsb/gsb-2.30_slackware-13.1/:PREFERRED

然后更新一下源:

1
sudo slapt-get --update

获取密钥:

1
sudo slapt-get --add-keys

在教育网内这些操作之前需要设置代理的环境变量

1
export http_proxy=http://username:password@proxy.bupt.edu.cn:8080

教育网就这点让人不爽,我边githug,sourceforge的svn都用不了。

更新一下系统:

1
sudo slapt-get --upgrade

更新完之后会有一个神奇的现象,我在环境变量里面设置代理貌似对slapt-get就不好用了,每次用slapt-get的时候需要为每条命令都设置代理环境变量才行,如下:

1
sudo http_proxy=http://username:password@proxy.bupt.edu.cn:8080 slapt-get --install gsb-desktop

不知道是什么原因,有懂行的帮忙解释下。

另外上面那条命令就是安装gnome的命令,大约过个十几二十分钟就装完了。

系统的汉化应该没什么问题,不像ubuntu那样还要去下载语言包,slackware已经集成了中文包,只要在/etc/profile.d/lang.sh里面改一下locale的环境变量就可以了。

1
2
3
export LANG=zh_CN
export LC_CTYPE=zh_CN.UTF-8
export LC_TIME=zh_CN.UTF-8

另外这里还要提一下ubuntu的locale设置,它貌似默认的设置都是zh_CN.ut8,其实locale对大小写是敏感的,如果是utf8的话大部分功能都没问题,就是gvim会出问题,各种报错和菜单的中文不显示等问题,最好还是改成zh_CN.UTF-8

OK,汉化也没问题了,重启一下就是中文的了,而且gnome也不会乱码。至于怎么装gdm怎么设置启动的运行级别以前写的一篇安装手记里面貌似都提过了,也很简单,没什么好说的了。

输入法还是小企鹅用得最顺手,去他们官网上下了个最新版的,好像是今天2月份才发布的版本,很不错,界面现在很漂亮,不像以前那些版本那么老土,不过这几天 fcitx经常自己消失了,不知道是不是有什么bug,也可能是我设置的有问题,不过影响不大。

gnome还是很强大的,既然用它就要把它的功能都利用起来,gnome的自动挂载那个功能是用起来最方便的,也不用自己再费劲去改fstab了,但slackware默认情况下是不好用的。

点击分区符的时候报下面的错误:

Cannot mount volume

Error org.freedesktop.DBus.Error.AccessDenied.

这个错误搭眼一看就知道是dbus的问题,幸亏之前耕宇的代码用到了dbus,我也跟着对dbus的原理有了点简单的了解,不过看这错误的命名规则跟java挺像的,不知道它底层是不是用java实现的,谁知道的。

不管怎么说,错误很明显地告诉我这是权限的问题,找了一顿在/etc/dbus-1/system.d/hal.conf里面找到了关于Volume和Storage的相关配置内容。

里面有这样一段话:

<policy group=”plugdev”>
<allow send_destination=”org.freedesktop.Hal”
send_interface=”org.freedesktop.Hal.Device.Storage”/>
<allow send_destination=”org.freedesktop.Hal”
send_interface=”org.freedesktop.Hal.Device.Storage.Removable”/>
<allow send_destination=”org.freedesktop.Hal”
send_interface=”org.freedesktop.Hal.Device.Volume”/>
<allow send_destination=”org.freedesktop.Hal”
send_interface=”org.freedesktop.Hal.Device.Volume.Crypto”/>
</policy>

很显然,只有在plugdev分组里面的用户才有这些权限,这个简单,把用户添加到这个分组里面就可以了,用户是可以属于多个分组的,用下面命令:

1
sudo usermod -G plugdev,audio levin

如果用户要属于多个分组的话就必须将多个分组用逗号隔开,否则用户就只会被添加到一个分组里面去,即只属于那一个分组了。

当然也可以修改/etc/group文件,之后最好再运行一下grpck命令更新一下gshadow文件。

这样就应该就没问题了,再点击分区符就可以成功挂载分区了。另外我上面把用户也添加到audio分组里面了,因为我新创建的用户不属于audio组,导致我的系统没有声音,这个很悲剧,alsaconf配置一下声卡就可以了。

对于挂载的另一种解决方案就是添加一段跟上面的xml相同的话,把groups改成当前用户的分组,那样也可以,我是那么干的。

最烦人的问题是 NetworkManager,我之前都不用的,现在因为项目程序里面用到了,最好还是装上,要不然这台机器就只能用来干私活了。

其实gsb为slackware13.1做的gnome里面已经集成了NetworkManager,但是默认的是跑不起来的, NetworkManager也用了dbus,用刚才的办法去找它的配置文件,修改分组也好,修改配置文件也行。

然后把/etc/rc.d/rc.networkmanager这个脚本的可执行权限给加上。

这样NetworkManager虽然能用了,但还是不能开机启动,关健的方法我自己没琢磨出来,到网上找到的解决方案:

在/etc/NetworkManager/nm-system-settings.conf这个文件里面添加下面这一句话就可以让NetworkManager开机自动启动。

managed=true

另外,还需要NetworkManager的托盘图标,就是nm-applet,把它直接在“启动应用程序”里面添加上就可以让它自动启动了。

一个神奇的问题是,开机后虽然NetworkManager启动了,而且也显示连接成功了,可ifconfig里面的eth0就是没有地址,系统安装完成之后我用

1
sudo netconfig

配置网络为dhcp方式自动获取地址,而且在启动的过程中它也确实显示成功获取到了地址,但开机这后就是没有地址。

而且我用

1
sudo dhclient eth0

获取地址之后,过个2s之后地址又没了,我都晕了,然后我尝试一下用下而把方法把网络停止:

1
sudo /etc/rc.d/rc.inet1 stop

之后再用dhclient获取地址,或者用NetworkManager获取地址都可以,能够正常上网,但这种情况下我的firefox时面菜单弹出相当迟钝,而且还有更神奇的问题是我的gvim里面会有闪铄,这都是些什么问题,我也不清楚slackware自己的网络配置和NetworkManager到底有什么冲突,反正后来我无耐之下用netconfig 把网络地址设成loopback,之后再重启让NetworkManager获取地址就OK了,问题是解决了,但还是觉得挺神奇的,不知道NetworkManager都干了些什么。

其它的就没什么问题了,换了我长期使用的主题T-ish,图标主题是从gsb的源里面找到的一个,感觉不错,也用了很久,叫Neu,在gnome-look上没找到。

删掉了slackware安装cd里面带的firefox3.6.3,安装了3.6.8中文版。

字体以前是用Vera Sans YuanTi,后来用了几天的ubuntu,发现其实微软雅黑看上去确实挺漂亮的,也装了一下,挺舒服的。其它的就没什么特别的了,我也几乎不需要什么娱乐,有个smplayer能看个电影就行,把所有的音乐播放器都删了,电脑上一首歌也没有,都是在线听的,另外有个Adobe Reader和Vim就够了。

分类: Linux 标签: ,

Slackware系统中为LaTeX安装CJK解决中文问题

五月 8th, {2010 7 条评论 11,086 人阅读过  

过几天要做presentation,想借这个机会把LaTeX好好学学,今天在解决中文问题的时候着实把我卡住了,广泛搜索了各方面的资料,一直搞了好几个小时才弄好,把过程总结一下。

首先下载CJK,我在CJK的官网上下载的cjk-4.8.2.tar.gz,解压之后把里面的texinput目录拷贝到/usr/share/texmf/tex/latex/CJK目录下,CJK这个目录默认是没有的,自己创建一个。

从/media/win/WINDOWS/Fonts目录下找到simsun.ttc,simfang.ttf, simhei.ttf,simkai.ttf这四个字体文件,把ttc改成ttf,然后把这四个文件拷贝到/usr/share/texmf/fonts/truetype/chinese目录下就可以了,chinese目录可能默认也没有,自己创建一个。

下载gdbfonts,记不清是在哪里下载的了,gbkfonts-linux-0.3.tar.bz2,里面有三个可执行文件appendconf,go,gbkfonts-glibc2.3,前两个是脚本文件。把gbkfonts-glibc2.3重命名为gbkfonts,并将这三个文件拷贝到/usr/local/bin里面(这样做纯粹是为了以用调用方便)。

进入/usr/share/texmf目录(也可以是一个自己创建的目录,生成的所有和CJK相关的文件都会保存在这个目录里面,不使用系统目录的目的是可以在将来重装系统的时候继续保留中文配置,我估计我也不太可能会重装系统了,也不想弄出各种目录,就直接用系统目录了),然后执行

1
go fonts/truetype/chinese

根据ttf字体来生成TeX字体,并生成各种各样的配置文件。

接着执行下面的命令来组织配置文件

1
appendconf /usr/share/texmf

生成字体之后会有几个map文件,这些map文件里面定义了字体名字和字体文件名之间的映射关系,为了让dvips这样的工具能知道使用哪个map文件,需要修改下面的配置文件

1
vi /usr/share/texmf/dvips/config/config.ps

找到o |lpr这一行注释掉并在后面加上 p +cjk.map这一行。

如果/usr/share/texmf/fonts/map/dvips目录下没有cjk.map这个文件,那么找到这个文件把它复制过来。

最后更新一下TeX字体数据库就可以了

1
mktexlsr

这个时候其实已经算成功了,结果输出的虽然是中文,可都是些乱七八糟的字,根本不是我想要的,我写个“中国”,它显示“涓球”,然后这个问题我郁闷了三个多小时,最后怀疑是vim的原因,以前在新建文件的时候都会先touch一个文件,然后再用vim打开编辑,突然想到touch出来的这个文件是用utf8编码的,而且vim的编码方式设置的也是utf8,而CJK的字符集是GBK,会不会和这个有关系,后来就改了一下vim的编码格式

1
:set encoding=gb2312

OK,再编译就成功地看到中文了,哎,就这么点事我就从中午一直搞到晚上,郁闷啊。

分类: LaTeX 标签: ,

gstreamer播放wav文件

五月 6th, {2010 3 条评论 10,873 人阅读过  

有网友留言希望我在飞信上加上声音提示,下午的时候整了整,很早以前写过一个直接操作/dev/dsp的小程序用来播放wav,后来发现在当另一个程序在使用这个设备文件的时候,程序就无法打开/dev/dsp这个文件,也就无法完成播放,但因为实现简单我在飞信的第一个版本里面用了这种方法,后来觉得不好就直接把声音提示给去掉了。

在网上查了一下实现wav播放的方法,大多数都是这种直接操作/dev/dsp的,GTK也没有像QT那样的直接播放音频文件的类,于是我只好使用第三方的库了,网上很流行的gstreamer,今天简单读了一下它的手册,发现gstreamer确实是很强大,和GTK一样,它也是基于面向对象的思想来实现的,C语言的面向对象,这样对象和对象之间的继承和派生的关系他们都实现的很完美,有时间一定要仔细研究一下具体的实现方法,gstreamer还有一个更强大的特点是它的管道流机制,gstreamer里面的基本元素是element,element上有pad,每一个element都是一个独立的组件,来完成相应的功能,pad应该可以理解成接口吧,我也不知道该翻译成什么,element之间通过各种pad连接起来形成一个pipe,数据流就在这个pipe里面流动,每经过一个element就会经过一层过滤,比如经过数据压缩的element,数据解码的element,这让我想到了很多年前开发OA的时候里面的工作流,不过这种机制用在这里确实是个好主意,要实现一个复杂的功能只需要把各种独立实现某个小功能的element连接成一个pipe,数据流依次流过这个pipe的时候就完成了对这个数据流的复杂的处理,可扩展性也很高,当需要新的功能的时候只需要开发新的组件,提供相应的接口就可以添加到应用程序中去。

gst-inspect命令列出当前系统中已经安装了的gstreamer组件以及这些组件所具有的特性。

gst-launch命令创建并运行一个pipe,组件之间的管道用”!”作为分隔符,为了跟shell的管道分隔符区分开没有用”|”,下面是几个例子:

播放一个mp3文件,第二个组件mad是用来对mp3进行解码的,我系统上没装这个组件…
gst-launch filesrc location=music.mp3 ! mad ! osssink

其中location是组件filesrc的一个属性,filesrc是要从一个文件读取源数据,location指出了文件的路径
具体还有很多,详见http://linux.about.com/library/cmd/blcmdl1_gst-launch.htm

播放wav的时候需要用到wavparse这个组件,它在gst-plugins-good这个包里面,我的slackware没有预装,我在slackbuild.org上下载上来装上了。

在命令行用gst-launch命令播放的时候跟播放mp3时候类似,但在程序里面实现的时候就不同了,简单的把filesrc,wavparse和alsasink这三个组件连接起来会失败,这困扰了我好久,最后终于弄明白了,wavparse这个组件的sink pad只能在数据流来了以后才可以连接,因为wavparse需要先知道输入给它的数据的类型,所以在wavparse创建的时候link就会失败。解决的办法是使用信号动态地连接pad,gst_bin_add_many这个函数调用的时候会触发add_pad信号,回调函数参数列表里面就有新创建的pad,把这个pad连接到alsasink的sink pad上去就可以了,下面是gstreamer播放wav的源码:

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include <gst/gst.h>
 
static void
add_pad (GstElement *element , GstPad *pad , gpointer data){
 
	gchar *name;
	GstElement *sink = (GstElement*)data;
 
	name = gst_pad_get_name(pad);
	gst_element_link_pads(element , name , sink , "sink");
	g_free(name);
}
 
static gboolean
bus_watch(GstBus *bus , GstMessage *msg , gpointer data)
{
    GMainLoop *loop = (GMainLoop *) data;
    if(GST_MESSAGE_TYPE(msg) == GST_MESSAGE_EOS){
        g_main_loop_quit(loop);
    }
    return TRUE;
}
 
void
play_file(const char *filename){
 
	GMainLoop *loop;
	GstElement *pipeline;
	GstBus *bus;
	GstElement *source , *parser , *sink;
 
	loop = g_main_loop_new(NULL , TRUE);
 
	pipeline = gst_pipeline_new("audio-player");
 
	source = gst_element_factory_make("filesrc" , "source");
	parser = gst_element_factory_make("wavparse" , "parser");
	sink = gst_element_factory_make("alsasink" , "output");
 
	g_object_set(G_OBJECT(source) , "location"
			, filename , NULL);
 
	bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline));
	gst_bus_add_watch(bus , bus_watch , loop);
	g_object_unref(bus);
 
	gst_bin_add_many(GST_BIN(pipeline)
			, source , parser , sink , NULL);
 
	g_signal_connect(parser
			, "pad-added" , G_CALLBACK(add_pad) , sink);
 
	if(! gst_element_link(source , parser)){
		g_warning("linke source to parser failed");
	}
 
	gst_element_set_state(pipeline , GST_STATE_PLAYING);
	printf("Start playing...\n");
	g_main_loop_run(loop);
	printf("Playing stopped!!!\n");
	gst_element_set_state(pipeline , GST_STATE_NULL);
	g_object_unref(pipeline);
}
 
int
main(int argc , char *argv[]){
 
	gst_init(&argc , &argv);
 
	play_file(argv[1]);
 
	return 0;
}

编译:

1
$gcc -o gst gst.c `pkg-config --cflags --libs gstreamer-0.10`

分类: C/C++ 标签: , ,

Slackware安装配置

一月 30th, {2010 2 条评论 10,371 人阅读过  

前两天实验室新买了一台服务器,装系统的活就交给了我,一直钟爱于Slackware,于是就想着把服务器上也装一个Slackware,因为是台裸机,没办法就去买了张CD,刻了张Slackware13.0CD1,服务器也不需要图形界面之类的东西,一张CD就完全足够了,然后借了个USB光驱就开始安装了。
1.Slackware安装

第一次用CD安装,过程很顺利,其实也没有什么特别需要说的,就是按照提示一步一步来的,第一步是分区,服务器是1T 的硬盘,这么大的硬盘我还真不知道该怎么分区,留了200G以后以防以后需要装Windows,可能性极小,但还是留了。

我的分区方案是:

swap分区 4G
ext3 40G 挂载在/ 用于存放操作系统
ext3 10G 挂载在/tmp 临时目录,10G着实有点大,不过硬盘空间也实在是用不完
ext3 700G 挂载在/home 把剩下的磁盘空间全给了/home,这样每个人开一个账户,在上面怎么折腾都行
ntfs 200G 挂载在/winback 为将来的windows预留的,十有八九是用不到的

接下来的硬盘安装就很简单了,只不过没有Ubuntu等发行版那么好看的界面,安装起来也一样很方便,引导程序安装了Slackware默认的LILO

另外把我当时硬盘安装的过程也简单写一写:
下载了一个grub020p.zip,解压开后放到了C盘根目录下,然后修改boot.ini文件,在最后面加一句话:

C:\grldr="Start GRUB"

menu.lst改不改无所谓了,我是没改过,还是喜欢直接在grub下用C进入command提示符模式,自己输地几个命令。

然后把slackwarecd1,cd2解压到某分区根目录下,找到bzImage和initrd.img两个文件放到某目录下,注意一定要放在FAT32的分区下,貌似grub识别不了ntfs,没有fat32分区想要硬盘安装就麻烦了。

OK,重启之后就可以进入grub界面了,然后C键,输入下面命令:

grub>root (hd0 , 3)
grub>kernel /boot/bzImage
grub>initrd /boot/initrd.img
grub>setup

这样grub就把内核装进了内存,接下来的操作就跟光盘安装一样了,只不过在选择安装源的时候指定刚才解压的那两个CD的目录就可以了。

2.Slackware基本配置

实验室服务器配置就先暂时不说了,服务器暂时还没有特别的要求,既不做web服务器也不做ftp服务器,把ssh启了就可以了,sshd是默认启动的,所以装完之后我就懒得去管它了。

简单地说一下我自己的机器上的配置吧。slackware安装完成之后默认没有进入图形界面,可用命令startx进行图形界面,前提是安装了图形界面,slackware的六张cd里面,第一张是系统核心的东西,必须安装的,第二张里面有xfce4,第三张里有kde,我没装,剩下的三张没下下来,也不知道有什么,不过前两张cd就完全够用了。

slackware默认的运行级别是3,可以在修改/etc/inittab文件,将启动级别修改为4,则会自动进入图开界面。

ouclwp@darkstar:~$ sudo vi /etc/inittab
# Default runlevel. (Do not set to 0 or 6)
id:3:initdefault:
#将这句话中的3改成4就可以了,各级别的作用如下:
# These are the default runlevels in Slackware:
#   0 = halt
#   1 = single user mode
#   2 = unused (but configured the same as runlevel 3)
#   3 = multiuser mode (default Slackware runlevel)
#   4 = X11 with KDM/GDM/XDM (session managers)
#   5 = unused (but configured the same as runlevel 3)
#   6 = reboot

其实rc.4这个脚本所做的唯一工作是启动了X11 Session Manager,先检测gdm,然后是kdm,都找不到就启动xdm,如果不安装gnome和kde的话就会用xdm启动,xdm是很难看的,我安装了一个kdm,后来用着不爽,最后还是换成了gdm。

我在将kde换成gdm的时候出了一个问题,当时gdm没装好,而kdm已经被我删了,这时候运行级别4和startx都进不了xfce4图形界面,查看了一下/etc/X11/xinit里面的文件,发现xinitrc这个符号链接变成了红色,这也就意味着这个链接的源不见了,查看了一下确实是,它居然是链到xinitrc.kde的,这是我怎么也不能理解的,kde环境连同kdm一起早就被我给删了,xinitrc.kde也不在了,而且我也从来没用过kde,startx就是执行了xinitrc这上脚本,所以就会出问题,我把xinitrc重新连接到了xinitrc.xfce上就没问题了。

编码格式

编码格式刚开始是用的GBK,后来发现用GBK有诸多不便,从网络上读取数据的时候大多数的服务器软件都是用的UTF-8编码,取下来的数据都要通过程转换成GBK,非常麻烦,于是终于鼓起勇气把编码格式转换成了UTF-8。

ouclwp@darkstar:sudo vi /etc/profile.d/lang.sh
#修改下面两句话
export LANG=zh_CN #将系统汉化
export LC_CTYPE=zh_CN.UTF-8  #使用UTF-8做为编码格式

这样修改就可以了,当然从GBK迁移到UTF-8还要做很多修改,最麻烦的就是中文文件名乱码,可以写个脚本全部修改过来的,不过后来看看觉得也不多,就懒得写了,用下面的命令修改:

ouclwp@darkstar:convmv -f gbk -t utf8 --notest *

另外还有一些软件像gftp都要修改的,就不一一写出来了,gftp我已经不再用了,FileZilla我个人觉得是一款极为出色的FTP客户端软件,强烈推荐。

音乐播放器我用的是mocp(music on console),一个纯命令行的音乐播放器,非常漂亮。

中文字体我用的是Vera Sans YuanTi ,下载下来之后放到/usr/share/fonts里面,然后更新一下字体缓存就可以了

ouclwp@darkstar:/usr/share/fonts$ fc-cache -fv

其它的都没有什么值得说的了。个人觉得slackware是一个出色的发行版,而且特别适合做开发,它集成了很多常用的开发包,像libxml2,libpng,openssl等等,用起来非常方便。slackware虽然没有apt或者yum这样在线的包管理工具,但slackware的pkg包管理工具一样很出色,而且在slackbuild.org上可以下载到绝大多数常用的包,强烈推荐每一个coder或者developer使用slackware,它给我最直接的感觉就是简洁,高效,稳定。

分类: Linux 标签: ,