分类存档: Tech/技术-Archlinux - 第2页

archlinux 下安装kde4

一直用fvwm,心血来潮安装kde,画面华丽,但启动速度的确很慢,跟猪一样,2012.12月最新的arch下要安装的kde4,发现两个问题,

1. fcitx启动了但打不出字

2. 网络管理不知道用什么软件

研究了下,配置了.xprofile .profile .xinitrc加入

LOCALE=en_US.UTF-8

export LANG=zh_CN.UTF-8

export LC_ALL="zh_CN.UTF-8"

export XMODIFIERS=@im=fcitx

export GTK_IM_MODULE=fcitx

export QT_IM_MODULE=fcitx

然后安装gdm,用gdm启动,就可以使用fcitx了

至于网络么,就用:

pacman -S networkmanager kdeplasma-applets-networkmanagement

systemctl enable NetworkManager.service

然后kde的”系统管理“-》”网路管理”里面的所有选项就能用了

3.2.2-1版本archlinux下禁用PGP验证

新版本的arch弄了PGP验证,每次都要导入验证码很麻烦,于是禁用了PGP,不知道会不会有啥隐患。

禁用方法:

在/etc/pacman.conf中[options]后加入

SigLevel     =Never

就可以了

3.2.2-1版本archlinux下的xmame的简单使用

以前装好xmame后用图形前端gmamegui运行xmame玩游戏一切正常,可是我更新系统后删除gmamegui后在重新安装gmamegui总是编译出错,错误信息是

archive_read_data_into_buffer这个函数找不到,于是在程序里把这个函数所在的行注释掉了,勉强编译通过了,但是gmameui有些问题,于是打算回归到xmame下,虽然没有图形前端,但是不会有问题啊。

配置xmame

在当前用户目录下生成配置文件

xmame -showconfig > ~/.xmame/xmamerc

xmame的wiki上说可以把xmamerc文件中effect这一条设为5,但我的电脑上设置为5的时候图像很虚,设置为2效果良好。

添加rom路径

在xmaerc中加入

rompath  /usr/share/xmame/roms:~/mygames/roms

~/mygames/roms为游戏zip文件路径

开玩

进入游戏zip文件所在目录,运行

xmame mygame.zip

就可以了。

如果游戏在其他目录可以用-rp指定游戏zip目录,而不用修改配置文件,例如

xmame -rp /other/game/path mygame.zip

xmamerc文件中的其他配置选项介绍

video-mode              1   #0为固定大小,1为可以缩放
fullscreen              0#0为小窗口,1为全屏

其他的选项基本就不用动了。

3.2.2-1版本Archlinux下的virtualbox简单使用

问题:

在3.2.2-1版本的archlinux下安装了archlinux,使用命令

virtualbox

启动的时候出现提示:

WARNING: The vboxdrv kernel module is not loaded. Either there is no module
available for the current kernel (3.2.2-1-ARCH) or it failed to
load. Please reinstall the kernel module virtualbox-modules or
if you don't use our stock kernel compile the modules with

sudo /usr/bin/vboxbuild

You will not be able to start VMs until this problem is fixed.

运行/usr/bin/vboxbuild后再启动virtualbox问题依然

解决方法

这个问题是由于没有加载virtualbox所需的功能模块,在启动virtualbox之前,先到

/lib/modulex/3.2.2-1-ARCH/extramoudules

使用命令

modprobe vboxdrv

modprobe vboxguest

modprobe vboxpci

modprobe vboxvideo

modprobe vboxsf

modprobe vboxnetflt

modprobe vboxnetadp

加载所需的模块,然后在启动virtualbox就可以了,加载了上述模块可在虚拟机里控制usb设备,网卡等。

原创:dyndns使用经验(Arclinux or Freebsd下)

原因

以前使用www.3322.org的二级域名,但是3322的客户端更新ip的时候得到的ip不对,每次都是手动更新,所以转到www.dyndns.org的二级域名了。

//////////////////////////////

附:ddclient配置和使用方法

ddclient的Readme很简单,使用的时候把ddclient拷贝到/usr/sbin,然后在/etc/ddclient/ddclient.conf中加入

## ddclient configuration file
daemon=60
# check every 600 seconds
syslog=yes
# log update msgs to syslog
mail-failure=xxx@xxxl.com # Mail failed updates to user
#pid=/var/run/ddclient.pid
# record PID in file.
## Detect IP with our CheckIP server
use=web, web=checkip.dyndns.com/, web-skip='IP Address'
## DynDNS username and password here
login=username
password=yourpasswd
## Default options
protocol=dyndns2
server=members.dyndns.org
## Dynamic DNS hosts
your_donmain_name.dyndns.org

注意ddclient.conf的权限和所有人,不然ddclient会报错,然后手动运行ddclient就可以了,可以在/var/log/message里面看到ddclient的更新信息。

/////////////////////////////

dyndns的客户端ddclient更新ip效果很好,但是我的是动态ip,设置ddclient定时更新后发现,我的二级域名被dyndns给block了,原来,dyndns网站只要发现ip地址没有发生变化的情况下进行多次更新就会把你的二级域名给block。

我的想法

于是,我想如果做个小程序判断自己的ip是否发生变化,如果变化了在用ddclient更新,就不会被dyndns给block了。检测ip变化可以利用dyndns提供的网页ip检测,即访问网址http://checkip.dyndns.org就可以得ip了,花了个把小时把别人的一个http下载程序修改了下,基本满足了我的需要。该程序每隔20分钟检测下ip是否变化,变化了就用ddclient更新。

源程序如下:

//access http://checkip.dyndns.org/,then return your ip address

//程序采用非阻塞模式
/******* http客户端程序 httpclient.c ************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <errno.h>
#include <unistd.h>
#include <netinet/in.h>
#include <limits.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <ctype.h>
//#include <stropts.h>
#include <unistd.h>
#include <fcntl.h>

//////////////////////////////httpclient.c 开始///////////////////////////////////////////

/********************************************
功能:搜索字符串右边起的第一个匹配字符
********************************************/
char * Rstrchr(char * s, char x)  {

if(!(*s))  return 0;
int i = strlen(s);
while(s[i-1]) if(strchr(s + (i - 1), x))  return (s + (i - 1));  else i--;
return 0;
}

/********************************************
功能:把字符串转换为全小写
上述代码中的:while(*s) *s=tolower(*s++);
应该改为:wh
********************************************/
void ToLowerCase(char * s)  {

while(s && *s) {*s=tolower(*s);s++;}
}

/**************************************************************
功能:从字符串src中分析出网站地址和端口,并得到用户要下载的文件
***************************************************************/
void GetHost(char * src, char * web, char * file, int * port)  {
char * pA;
char * pB;
memset(web, 0, sizeof(web));
memset(file, 0, sizeof(file));
*port = 0;
if(!(*src))  return;
pA = src;
if(!strncmp(pA, "http://", strlen("http://")))  pA = src+strlen("http://");
else if(!strncmp(pA, "https://", strlen("https://")))  pA = src+strlen("https://");
pB = strchr(pA, '/');
if(pB)  {
memcpy(web, pA, strlen(pA) - strlen(pB));
if(pB+1)  {
memcpy(file, pB + 1, strlen(pB) - 1);
file[strlen(pB) - 1] = 0;
}
}
else  memcpy(web, pA, strlen(pA));
if(pB)  web[strlen(pA) - strlen(pB)] = 0;
else  web[strlen(pA)] = 0;
pA = strchr(web, ':');
if(pA)  *port = atoi(pA + 1);
else *port = 80;
}
////////////////////////////////////////////////////////////////////
int main(int argc, char *argv[])
{
int sockfd;
char buffer[1024],buffer_bak[1024],buffer_tmp[1024];
struct sockaddr_in server_addr;
struct hostent *host;
int portnumber,nbytes;
char host_addr[256];
char host_file[1024];
char request[1024];
char pattern[]="<html><head><title>Current IP Check</title></head><body>Current IP Address";
int send, totalsend;
int k,i;
long flag=0,*longp;
char * pt;
char dyndns_site[]="http://checkip.dyndns.org/";

//this send http request to this web site will get your ip address
ToLowerCase(dyndns_site);/*将参数转换为全小写*/
//  printf("lowercase parameter.1 is: %s\n", dyndns_site);
GetHost(dyndns_site, host_addr, host_file, &portnumber);/*分析网址、端口、文件名等*/
memset(buffer_bak, 0, sizeof(buffer_bak));
memset(buffer, 0, sizeof(buffer));
memset(buffer_tmp, 0, sizeof(buffer_tmp));
sockfd=0;
while(1)
{
if((host=gethostbyname(host_addr))==NULL)/*取得主机IP地址*/
{
sleep(10);
printf("myddclient:network error 1,can not resolv host\n");
continue;
}
/* 客户程序开始建立 sockfd描述符 */
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)/*建立SOCKET连接*/
{
sleep(10);
printf("myddclient:network error 2,can not initial socket\n");
continue;
}
/* 客户程序填充服务端的资料 */
bzero(&server_addr,sizeof(server_addr));
server_addr.sin_family=AF_INET;
server_addr.sin_port=htons(portnumber);
server_addr.sin_addr=*((struct in_addr *)host->h_addr);
/* 客户程序发起连接请求 */
if(connect(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1)/*连接网站*/
{
sleep(10);
printf("myddclient:network error 3,can not connect to host\n");
close(sockfd);
continue;
}

//set to nonblock mode
fcntl(sockfd, F_SETFL, O_NDELAY);
sprintf(request, "GET /%s HTTP/1.1\r\nAccept: */*\r\nAccept-Language: zh-cn\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)\r\nHost: %s:%d\r\nConnection: Close\r\n\r\n", host_file, host_addr, portnumber);
/*取得真实的文件名*/
if(host_file && *host_file)  pt = Rstrchr(host_file, '/');
else pt = 0;
/*发送http请求request*/
send = 0;totalsend = 0;
nbytes=strlen(request);
k=0;
while(totalsend < nbytes) {
send = write(sockfd, request + totalsend, nbytes - totalsend);
if(send==-1)  {printf("myddclient:send error!%s\n", strerror(errno));k=1;   close(sockfd); break;}
totalsend+=send;
}
if(k==1)continue;

/* 连接成功了,接收http响应,response */
k=0;
i=0;
sleep(20);
memset(buffer_tmp, 0, sizeof(buffer_tmp));
nbytes=read(sockfd,buffer,1024);
flag=-1;
while(nbytes>0)
{
nbytes--;
flag++;
if(i < 4)  {
if(buffer[flag] == '\r' || buffer[flag] == '\n')  i++;
else i = 0;
}
else  {
buffer_tmp[k]=buffer[flag];
k++;if(k==1024)k=1023;
i++;
if(i==1024)i=1023;
}
}
k=0;
for(i=0;i<strlen(pattern);i++)
if(buffer_tmp[i]!=pattern[i])
{
k=1;
break;
}
if(strcmp(buffer_tmp,buffer_bak)!=0&&k==0)
{
system("/usr/sbin/ddclient");
printf("myddclient ok!\n");
}
else
{
if(k==0)
{
// printf("need not update!\n");
}
else
{
printf("myddclient:error\n get html page is %s!\n",buffer_tmp);
// flag++;
//longp=(long*)buffer_bak;
//*longp=flag;
}
}
memset(buffer_bak, 0, sizeof(buffer_bak));
strcpy(buffer_bak,buffer_tmp);
memset(buffer_tmp,0,sizeof(buffer_tmp));
close(sockfd);
sockfd=0;
sleep(1200);
/* 结束通讯 */

}
}
//////////////////////////////httpclient.c 结束///////////////////////////////////////////

//////////////////////////////httpclient.c 结束///////////////////////////////////////////

Archlinux下使用usb声卡,并将usb声卡设置为主声卡

需要使用asoundconf,当前asoundconf需要用

yaourt -S asoundconf进行安装,(yaourt的使用请自行察看arch wiki)

记住首先要确保加载usb-snd模块:

modprob snd-usb-audio

然后插入usb声卡,运行:

asoundconf is-active

asoundconf list

根据结果进行如下设置

asoundconf set-default-card 声卡名(来自于asoundconf list的输出结果)

Archlinux多声卡情况下用mplayer选择声音输出到指定声卡

其实很简单,用命令


mplayer -ao alsa:device=hw=1,0
就可以了其中hw=1,0可以根据实际情况进行调节

原创:Archlinux和Freebsd8.2下流媒体服务网页Ampache的安装、配置简介

本文参考了ArchWiki中ampache的相关章节,并结合了我的一些Freebsd8.2下的安装经验。

ampache是一个基于php的网页系统,可以用来建立自己的音乐流媒体服务器,功能还是很多的。在安装ampache前需要先安装apache,mysql,php以及php的扩展(需要注意的是php的扩展最好都安装并加载,不然容易出问题,我在freebsd8.2下就出现了没有加载xml,xmlreader,xmlwriter等几个扩展出现了php关于sh256的一个错误)。建议在玩ampache之前先要略懂apache,mysql,和php的相关配置,不然不容易玩转。
apache是web服务软件,php(以及其扩展)是php网页正常显示所需要的,别忘了ampache是用php写的,mysql数据库是ampache进行歌曲录入、查找等功能所需要的。
archlinux下要注意mysql的启动问题,手动启动mysql的方法可以参考我以前的博客文章,如果觉得麻烦可以开机启动,在/etc/rc.conf中的DAEMONS=()中加入mysqld就可以开机启动mysql,不过会造成开机慢几秒,加入httpd会开机启动apache。

archlinux下用yaourt或pacman安装ampache,其实就是把ampache下载了下来,freebsd下到ports里make install clean,就ok了,记得看安装完后的信息里面有ampache的安装目录,下面用得着。

将ampache目录下的文件放在apache服务配置文件指定的根目录下(如果你的服务器只挂ampache这一个网页的话可以这么做),例如freebsd8.2下通常是/usr/local/www/apache22/,archlinux下是/srv/http/。我的apache挂了很多网页,所以我在apache根目录下开了新目录,用了vitual host的方法把个二级域名映射到这个目录了。
弄好后,重启apache,浏览器输入http://localhost(如果你的apache用127.0.0.1:80开启服务的话,否则用你电脑的ip或者域名代替localhost)。这时,如果一切配置正确的话,会出现ampache的配置页面,
webpath设置为“/”如果你的apache根目录下放着ampache的所有文件的话,如果ampache的文件放在根目录下的music文件夹下,那么就是“/music”了
database usernane 是root(你的mysql管理员帐号)
然后就是输入些密码,为ampache创建mysql数据库,以及ampache管理员账户等的一些操作比较简单。
这写东西弄完后,就可以生成配置文件,将生成的配置文件下载,并放到ampache文件中config/目录下,重启apache,你就可以登陆ampache了,用管理员登陆,添加音乐目录和其他用户后,现在你的流媒体服务就开启了。

Linux下的一些视频编辑软件

pitivi
lives
openmovieeditor
openshotvideo
avidemux
kdenlive
kinodv
cinelerra-cv

Archlinux下enlightenment(e17)的安装、启动和桌面图标的添加方法

e17是个不错的桌面系统,小巧,我觉得缺点是,里面自带的文件管理器很不好用,可能是用惯了thunar的缘故吧,用了几天e17,把安装和使用方法简单记录下,备忘。

安装:

pacman -S e17-svn e17-extra-svn

我使用的是gdm登陆管理器:pacman -S gdm。gdm可以自由选择桌面环境,不过有点笨重。

运行:

以root运行gdm,在gdm种选择enlightenment就行了

第一次启动可以设置locale等,所有配置文件在目录   ~/.e  下,如果配置中出现什么错误,直接删除~/.e目录,然后重启桌面就可以一重新设置了。

桌面图标:

如果locale选择的是中文,那么在      ~/桌面      目录下会有一些*.desktop文件,这些文件就是桌面图标文件,可以从/usr/share/applications/目录下复制你需要的程序的.desktop文件到      ~/桌面      目录下,就可以在桌面看到图标了。

第 2 页,共 6 页12345...最旧 »