create a deb package on ubuntu for ncview

Posted on 六月 14th, 2009 in Linux | No Comments »

ncview is a X-windows based netCDF file browser. ncview是浏览netcdf文件格式非常好用的一个工具,还可以输出图像以及动画(连续的ppm)。
但是ncview现在只提供了源代码方式下载安装,在debian/ubuntu的官方库里都还没有对应的包,但fedora已经有了。
因为官方库还没有,搜索了一通,好像也没有别人在作,因此就尝试了一下自己从头制作DEB包。之前也简单接触过DEB打包,但那都是在别人已经DEB化的基础上所作的小修改,尝试之前就已经预计到会遇到麻烦。
参考ubuntu package guid complete上面的步骤,首先进行的是初始DEB化。这个没有任何问题,然后就是对应的修改,遇到了一堆的问题:
1、license的问题
upstream好像并没有明确声明采用什么LICENSE,但是看代码里没有文件头都有说明采用的是GPL-3的license。
2、orig.tar.gz的问题
ncview发布的包里包含了三个东西,一个是genoverlay,辅助生成overlay的小工具;一个是ncview;还有一个是udunits。udunits是第三方的软件,作者采用的是udunits 1.x的版本,但udunits的官方网站提示udunits现在已经发布了udunits-2版本,原有版本已经不再维护了(deprecated),同时udunits-2已经进入debian ftp master,但还没有审查通过。因此我在打包的时候就只选择了ncview的子目录,其他两个东西都没有考虑。
3、patch的问题
官方发布的软件,我第一次打包就遇到了BUG,是MAN中有一个大小写的错误,因此需要写patch。同时Makefile.in也需要作一些调整:改变NCVIEW_LIB_DIR到/usr/share/ncview目录,修正删除文件的错误(重复删除导致错误)。
没有采用patch管理系统,直接用patch/diff在rules文件中进行处理。开始直接用diff命令根据guide进行处理,最后发现在unpatch的时候就有问题。仔细看guide,原来是需要把新旧二者的目录名命名为new/old,这样就可以进行unpatch处理了。然后在rules文件中也需要进行小调整。
4、签名的问题
在control文件里要使用全名,使用缩写最后会提示一个警告。在制作deb包的时候,要加参数运行:
debuild -kE40642E8
其中k后面的参数是我gpg的pub id。
5、发布的问题
本想发布到revu.ubuntuwire.com的,但死活访问不了,不管是否带tor。因此就想先发布PPA上。
先建立了~/.dput.cf,根据帮助,采用dput上传,

dput ppa *.changes

但到网站上看就是没有反应,搜索了一下,发现会有信息到邮件,去邮件了看了下,果然是被拒。提示信息很奇怪:

Rejected:
Could not find person ''
Further error processing not possible because of a critical previous error

根据这个提示信息搜索,发现有人提交了BUG,但实际上并不是BUG,原因是在安装dput的时候,系统在/etc/dput.cf默认生成了一个问题,但我在~/.dput.cf是按照帮助里拷贝过来的,头没有改(my-ppa),而在/etc/dput.cf里默认也有个ppa,而这个PPA需要进一步的配置,所以就导致了错误。重新修改~/.dput.cf文件,然后再上传就没有问题了。

经历一番辛苦后,终于看到成果了,欢迎访问:
https://launchpad.net/~wangliangxu/+archive/ppa

第一次打包,有任何问题,请反馈给我。

升级ubuntu server

Posted on 四月 30th, 2009 in Linux | No Comments »

ubuntu jaunty已经发布了,服务器现在的版本还是hardy,正好遇到了奇怪的问题,所以就想升级了。

sudo aptitude install update-manager-core

然后修改/etc/update-manager/release-upgrades文件内容,把

Prompt=lts

修改为:

Prompt=normal

然后开始升级:

sudo do-release-upgrade

注意:
1 在升级过程中有个提示,是否要继续操作,其中提示为[yN],但在中文locale下需要输入"是“,估计这是个翻译的BUG?
2 apache在升级后会产生问题,导致所有的网站都定向到默认网站了,需要修改/etc/apache2/ports.conf文件,把

NameVirtualHost *:80

给注释掉,然后在修改默认网站/etc/apache2/sites-enable/000-default,在第一行添加:

NameVirtualHost *

WebDAV on Apache2

Posted on 四月 23rd, 2009 in Linux | No Comments »

本来应该很简单,参考debian administration的操作,结果作下来后,发现没有些权限写。最后才发现是当前目录的父目录有一个word press生成的.htaccess文件,正是这个文件导致了问题的产生。

解决办法:拷贝父目录下的.htaccess文件,然后注释掉里面有影响的句子。

ubuntu下使用netcdf库

Posted on 三月 26th, 2009 in Linux, Program | No Comments »

netcdf自身带了C++接口,可是按照例子,怎么也连接不了,最后发现是要加参数:

g++ -lnetcdf_c++ -lnetcdf -o test *.cpp

ubuntu intrepid下安装envi 4.6.1

Posted on 三月 25th, 2009 in Linux | 2 Comments »

方法和原来的相似:

tar -zxvf envi_linux.x86.tar.gz
cd envi461linux.x86
sudo mkdir /usr/local/itt
sudo mv idl708 /usr/local/itt/
sudo mv install /usr/local/itt/
sudo mv license /usr/local/itt/
cd /usr/local/itt
sudo ./install

然后拷贝license到/usr/local/itt/license,命名为license.lic,就可以运行envi。
但发现我的机器明明是64位的,怎么是按照32位模式运行的呢?
仔细查找后发现,是由于idl的启动脚本里用到了/bin/arch命令,而这个命令已经被取消了,参考ubuntu的BUG
若不想修改脚本的话,就可以建一个/bin/arch的脚本:

#!/bin/bash
uname -m

evolution的中文附件问题

Posted on 三月 21st, 2009 in Linux | 1 Comment »

在ubuntu intrepid上,evolution发出的中文附件(指文件名是中文打头),如果另外一端是采用OUTLOOK活Outlook Express,则不能收到中文附件,或附件的文件名是奇怪的名称(att***.dat)。
在下个版本里这一问题已经得到修正,需要等ubuntu jaunty发布才可以。若现在就想修正这个问题,可以把这个PPA加入到源中:

deb http://ppa.launchpad.net/hggdh2/ppa/ubuntu intrepid main

然后升级系统应该就可以了。

参考:
1 ubuntu bug
2 gnome bug

ubuntu amd64下使用skype

Posted on 三月 20th, 2009 in Linux | 1 Comment »

目前,skype还没有专门的64位版本,在UBUNTU intrepid amd64下使用需要进行一些特殊的处理:
首先:下载skype,从medibuntu库中:
skype-common
skype-static
然后安装:

sudo aptitude install ia32-libs libqtcore4 libqtgui4
wget -N boundlesssupremacy.com/Cappy/getlibs/getlibs-all.deb
sudo dpkg -i getlibs-all.deb
sudo getlibs -p bluez-alsa
sudo dpkg -i *.deb

然后要配置skype,在我的机器上(dell optiplex 755),需要在音量控制里选择最后一个:Capture ...Pulse
然后在skype的声音设置里选择:输入声音 hwintel,0,别的都用pulse,这样就可以正常使用skype了。

最全的howto请参考:
HOWTO: Install Skype on 64-bit Ubuntu

ubuntu intrepid下安装proftpd配置postgresql后端

Posted on 十二月 8th, 2008 in Linux | 1 Comment »

因为在另外一台机器上已经配置过,本以为很简单,复制过来就可以,没想到还是出问题,检查了半天,发现是group table没有设置的原因。
安装:
sudo aptitude install proftpd proftp-pgsql
配置:
在/etc/proftpd/proftpd.conf里把

#Include /etc/proftpd/sql.conf

这行的注释去掉,然后修改/etc/proftpd/sql.conf文件,修改为:


SQLBackend postgres
SQLEngine on
SQLAuthenticate users
SQLAuthTypes Crypt Plaintext
SQLConnectInfo db@server_name_or_ip user password

RequireValidShell off

SQLUserInfo ftp.users userid passwd uid gid homedir shell
SQLGroupInfo ftp.groups groupname gid members
SQLDefaultUID 108 # CHANGE FOR YOUR FTP USERS UID FOUND IN /etc/passwd
SQLDefaultGID 1002 # CHANGE FOR YOUR FTP USERS GID, FOUND IN /etc/groups
SQLDefaultHomedir /home/ftp
RequireValidShell off

SQLNegativeCache off
# 调试时打开
#SQLLogFile /var/log/proftpd-sql

SQLNamedQuery updatecount UPDATE "count=count+1 WHERE userid='%u'" ftp.users
SQLLOG PASS updatecount

SQLNamedQuery count SELECT "count from ftp.users where userid='%u'"
SQLShowInfo PASS "230" "You've logged on %{count} times, %u"

SQLLog STOR newfile
SQLNamedQuery newfile FREEFORM "INSERT INTO ftp.logs(userid,action,file,abs_path,bytes) VALUES ('%U','upload','%J','%f', '%b')"

SQLLog RETR insertfileinfo
SQLNamedQuery insertfileinfo FREEFORM "INSERT INTO ftp.logs(userid,action,file,abs_path,bytes) VALUES ('%U','download','%J','%f', '%b')"

数据库可以参考:http://www.howtoforge.com/proftpd_postgresql_auth_logging

use zc0301 webcam in skype on ubuntu intrepid

Posted on 十二月 1st, 2008 in Linux | No Comments »

原来的方法不起作用了,需要采用这个方法,在终端下运行:

LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so skype

参考:

http://ph.ubuntuforums.com/showthread.php?t=945803

https://bugs.launchpad.net/ubuntu/+source/libv4l/+bug/260918

ubuntu intrepid 升级kernel后重新安装fglrx

Posted on 十二月 1st, 2008 in Linux | No Comments »

ati的显卡,升级后发现无法进入X窗口了。
经过搜索,发现相关解决办法:

http://ubuntuforums.org/showthread.php?t=997913

http://ubuntuforums.org/showthread.php?t=993292

其实,解决办法比较简单:
在进入X窗口失败后,直接进入终端,然后:

sudo rm /var/lib/dkms/fglrx/ -fdr
sudo apt-get remove fglrx*
sudo aptitude install xorg-driver-fglrx

重新进入X应该就可以解决问题了。