首页> linux&软件技术

linux&软件技术 存档

[已解决]没有规则可以创建目标“menuconfig”

2013年08月10日 分类目录 :linux&软件技术 0

我在安装Gentoo的时候内核使用的是稳定版里的gentoo-sources-3.8.13,后来瞎折腾又启用了测试源(即在/etc/portage/make.conf中添上”ACCEPT_KEYWORDS=”~amd64″”),于是把内核升级到了3.10.3,但是当我准备重新编译内核并启用新内核时,出现了标题所说的错误信息,经过一番Google终于了解了个大概的解决方法,这里记录一下解决过程。

当我进入/usr/src/linux执行”make menuconfig”命令进行内核选项修改时,终端提示”make :***没有规则可以创建目标“menuconfig”** 错误”, 出现这个错误的原因我并不清楚,也未就它去调查(目前无心研究这些),所以直接找了个解决方案来应付,经过对这一问题进行Google搜索,终于了解了它的原因所在,按常理,当我们执行”emerge -auDN world”来更新软件之后,如果有新内核被安装,我们会直接执行下面将会提到的操作来启用新内核,然后旧内核就会被抛弃,然后当执行”emerge –depclean”的时候,没用了的旧内核会被删除,但是旧内核的目录会被保留,而如果我们/usr/src/linux仍然与旧内核目录进行链接的话,就会出现这些问题了。   

当我看到这个错误之后,我习惯性地执行了”ls -l /usr/src/linux”,然后发现目前使用的仍然是稳定版的内核,新内核并没有使用。于是先执行”cd /usr/src”进入可以执行下面的操作的目录,之后执行”unlink linux”解除/usr/src/linux和/usr/src/linux-3.8.13-gentoo之间的链接关系,再将新内核目录和linux目录链接起来(执行”ln -s linux-3.10.3-gentoo linux”),然后我们需要将linux-3.8.13-gentoo目录里的.config复制到linux-3.10.3-gentoo目录中,这样才能保留原有配置表。最后就可以照旧执行”make menuconfig”(如果需要增加新选项的话)和”make && make modules_install”来编译安装新内核了。

如果在启用新内核成功之后,我们可以考虑将旧内核的目录从文件系统中删除以节省空间。执行的命令是”rm -r /usr/src/linux-3.8.13-gentoo”。

参考链接:make: *** No rule to make target `menuconfig’. [solved]

, , , ,

perl module Locale::gettext required

2013年08月08日 分类目录 :linux&软件技术 0

刚才在升级进程走到emerge help2man时,又出现因为perl module Locale::gettext required而中断的情况,后来通过google得知,重新安装一次Locale-gettext就可以了.

emerge  Locale-gettext

,

解决gcc无法识别命令行选项的错误

2013年08月08日 分类目录 :linux&软件技术 0

今天在升级我自己打磨的Gentoo时,当emerge到sys-block/thin-provisioning-tools时,ebulid进程被中断了,然后在log中看到如下错误信息"cc1plus error unrecognized command line option ‘-std=c++11’",在google无果的情况下前去gentoo的irc频道求助,这才得知,当emerge新的gcc之后,系统并不会自动启用更新版的gcc,而会仍旧使用旧的,这样一来就可能会出现某些命令行选项无法被正确识别的问题.之后根据irc中其他网友给出的建议,参考Gentoo Gcc Upgrade Guide启用了新的gcc,这里简要记录一下使用到的命令,以便将来需要时查看.

Wangqige wankey # gcc-config -l
 [1] x86_64-pc-linux-gnu-4.6.3 *
 [2] x86_64-pc-linux-gnu-4.7.3
Wangqige wankey # gcc-config 2
 * Switching native-compiler to x86_64-pc-linux-gnu-4.7.3 ...
>>> Regenerating /etc/ld.so.cache...                                      [ ok ]

 * If you intend to use the gcc from the new profile in an already
 * running shell, please remember to do:

 *   . /etc/profile

Wangqige wankey # env-update
>>> Regenerating /etc/ld.so.cache...
Wangqige wankey # source /etc/profile
Wangqige wankey # emerge --oneshot libtool

gcc-config -l是列出系统中已安装的所有gcc版本.之后使用gcc-config 2选择使用第二个gcc版本,如果有更多个版本,则将2改为最新的那个版本相应的序号.随后的env-update和source /etc/profile用来让系统能够识别它.当完成这些步骤之后,我们需要重建libtool,即上面最后一句命令.

最后,为了保证系统的健全状态,我们应该使用新的gcc重建一次系统(?真的吗?在最新的英文版中我没见到相关描述,只在中文版中看到,看来又是过时的吧)

emerge -eav system
emerge -eav world

如果希望将旧版本的gcc删除,我们可以使用类似如下命令

emerge -aC =sys-devel/gcc-3.4*

,

Gentoo安装总结

2013年08月03日 分类目录 :linux&软件技术 0

在折腾劲的推动下,花了整整2周(周末全天+工作日晚上)来安装Gentoo,终于在数十次的重复Gentoo HandBook中的步骤,并参考了多篇Gentoo Wiki上的文章及Funtoo Linux Installation,终于实现了我所期望实现的功能,比如使用UEFI直接从主板进入桌面而非使用Grub等传统Bootloader;使用最简化的KDE桌面环境等等。
经过这一番折腾,让我对Linux的了解更加深入,虽然仍然只算是皮毛,但是却是一个好的开始,这里将就这次安装的经过进行一次简单的总结,理出一些需要注意的地方,以及建议点,希望有机会看到我的文章的同好能够吸取到我的经验,少走一些冤枉路,尽快进入到Gentoo奇妙的殿堂。
1.Gentoo安装媒介
Gentoo官方提供了一个最简化的Live镜像,通过使用它我们可以很好地进行安装工作,但是对于像我这种希望能够实现UEFI启动的来说,它似乎就不是最佳选择了,我在使用它进行安装的过程中,只有一次成功实现了UEFI启动(很不幸这唯一的一次因为其他设置的问题被我给格掉了),后来我参考了Funtoo的安装指南,使用了SystemRecueCD作为安装媒介,虽然第一次仍然出现问题,但是第二次就顺利完成了。而且从名字上就可以得知,SystemRecueCD的性质是应急救援盘,无论我们是在使用Linux的过程中,还是使用Windows等系统,在发生灾难性事件的时候(比如无法进入桌面),我们都可以拿它来应急。此外,由于它已经支持efi启动,所以像是我在配置uefi的时候,用它就会非常方便了。
2.Gentoo安装手册(语言问题)
对于初次接触安装Gentoo的人来说,一份详尽的安装手册是必不可少的,它是我们安装Gentoo的指明灯,在Gentoo的官网上,和安装相关的手册非常多,而且有多种语言的版本可供选择,其中就有简体中文。最初几次我按照简体中文语言版的手册来安装,虽然也算是成功了,但是总有一些奇怪的现象发生,比如在emerge软件的时候看到有2份make.conf文件的提示,又如在分配硬盘一节中,没有提供创建ext4文件系统的命令。后来经过和英文版手册的比较发现,简体中文手册上的部分内容早已过时了,由此引申发现,在其他部分的手册中,简体中文手册的内容都或多或少有过时现象。因此,在这里我建议在安装Gentoo的过程中以英文版手册为准,虽然对于我们这种非英文语系国家的人来说,看英文版有一定的难度,但是好在我们主要是看手册中的那些命令以及配置,介绍性的内容的重要度不大,所以应该问题不大。
3.Gentoo安装手册(技术问题)
我想绝大多数安装Gentoo的朋友就和我一样主要是按照Gentoo HandBook上的步骤来的,在这过程中可能安装的应用也都是手册里推荐的,但是当我在照着操作的过程中,我发现一个很不幸的现象,那就是里面推荐使用的一些软件都是过时了的,比如bootloader一节中介绍使用的是grub,但是在我印象中它已经结束了生命周期,目前普遍使用的是Grub2,更别说Syslinux或我使用的uefi了,虽然grub是经受了历史的检验的稳定版本,但是对于使用Linux的来说,稳定是不够的,应该要尝鲜才对(服务器除外)。所以,按照手册只能作为一个参考,我们还应该去广泛参考那些Wiki上介绍的软件、技术,这样才能构建出一个更好的系统来,否则,大可以去使用那些定制好了的发行版,何必来自己整呢?
4.窗口系统
在安装KDE等桌面环境之前,我们必须先安装窗口系统,它是目前我们必须安装的,无论是qt还是gtk目前都是基于它实现的,而目前我们可选的只有有着25年悠久历史的X窗口了,也许等wayland成熟之后我们才能抛弃它吧。按照Gentoo上的Xorg配置手册(貌似现在文档列表(英文)中已经删除它了)来配置的时候,它会要求设置xorg.conf等配置文件,不过在我的实际操作中发现,其实这些步骤并非必须,至少我的在没有配置的情况下仍然能够很好的运作。
X窗口系统有X11-Server和Xorg-Server两个版本,他们的区别在于前者夹带了许多我们永远不会用到的东西,所以我们必选后者。
5.KDE桌面环境
在众多桌面环境中,KDE一直是我心目中最漂亮最现代化的桌面环境了(事实上本来就是),但是很不幸,在使用诸如Fedora\Ubuntu的KDE定制版时发现,它捆绑的形形色色的软件太多,不少还不能安全的删除。而在Gentoo的世界里,这种让人不爽的现象可以有效地避免了。当我在配置桌面环境时,我发现Getnoo的源里有一个startkde版本,于是我尝试性的安装了它,发现果然清爽,只携带了极少的一部分软件(甚至没有浏览器、文件管理器和终端程序)。
6.必装软件
文件管理器:Dolphin(KDE默认文件管理器)
音乐播放器:Clementine(目前我所能找到的最好的基于Qt的音乐播放器)
终端:Konsole(喜欢去到文字界面执行命令的可以无视,否则它是我们执行各种命令的好帮手)
浏览器:Chromium(基于Qt的浏览器我实在没能找到一款满意的,所以就它吧)
输入法:Fcitx(Linux的世界还有哪款输入法和与之匹敌?)
………
7.待续

,

解决源码编译时的cannot found -lXX问题

2013年07月15日 分类目录 :linux&软件技术 0

最近心血来潮编译起了PyQT5,虽然我相信我不会用它做出什么程序来,不过还是对折腾它有兴趣。在我编译的过程中,遇到了一点问题,经过万能google的帮助解决了,这里记录一下。

在我使用python3 configure.py命令配置PyQT5的编译环境的时候,出现了

/usr/bin/ld cannot found -lGL

的错误信息,虽然好像这对最后的编译安装影响不大,至少后面的make命令顺利执行了,但是对我这种不容任何可能出现的问题产生的人来说,消灭它还是必须的,于是就去google上调查了一把,最后发现原来是缺少相应的开发包的缘故。根据网文显示,如果出来形如cannot found -lXX字样的错误信息的话,通常意味着系统中缺少相应的libXX.so,这时我们就需要去源里安装相关的开发包了。相关搜索命令如下:

For Debian:

apt-cache search libXX-dev

For RedHat:

yum search libXX-devel

当搜索到结果之后从中选择适当的安装就可以解决问题了。

, , ,

在Linux中创建应用快捷方式

2013年04月02日 分类目录 :linux&软件技术 0

      从使用Fedora的Gnome3版开始,我就养成了桌面不放置图标的习惯,启动应用不是通过应用菜单就是用过快捷命令,在那段时间里,我对空落落的桌面还有一丝丝遗憾,如此大的可发展空间却只能浪费了,而当我从Gnome转到KDE之后,这种遗憾彻底没有了。在KDE的桌面模式中,有一种探索模式(具体名称不记得了),桌面上显示的正是应用菜单。然而,这种模式也有点缺陷,那就是一些解压即可使用的程序并不会出现在应用菜单中(比如Intellij idea),此外从源码编译安装的程序也可能不会出现在应用菜单中(这要看安装脚本是否写了相关操作)。遇到这种软件,那就麻烦了,我们可能要打开N层文件夹才能找到软件执行文件,话说回来,有一些解压即可使用的程序,它的执行文件是一个sh文件(图标为终端命令符),就算是放到桌面了也很难看。那么,是否有可能解决前面说到的这难题呢?答案必须是肯定的。

虽然这是一个常识性问题,我也从一开始就坚信能够解决,但是直到这周,我才找到解决方案(主要是之前没有耐心去找,去学习),这里就简单的整理一下。
      应用菜单中的应用快捷方式都存放在了”/usr/share/applications/”目录下,其文件后缀是.desktop,里面定义了一些和该应用相关的属性,比如名字、图标、分类等等,当我们需要把一个软件显示在应用菜单中时,我们只需要在该目录下为其制定一个desktop文件,之后就可以从应用菜单启动程序了,此外,喜欢把快捷方式放在桌面的朋友也可以再把应用菜单中的快捷方式发送到桌面(不同的桌面环境的称呼不用,各位就根据理解去找吧)。
      到这,我们开始进入正题,讲一讲这个desktop文件里面的格式和写法(此处参考了一些网络上的相关资料,文末将给出相关链接)。网上一些教程都是用某程序的快捷方式来举例说明这个文件的,不过在我实际学写快捷方式的时候,就被那些程序的快捷方式给坑了。当时我随便挑了个ThunderBird的快捷方式来参照,打开来吓了一大跳,它里面有N多国际化用到的内容,还有一些特殊设置,而我只是为了自己方便而做快捷方式,所以不用考虑国际化,也不用考虑一些特殊设置,参照它只会浪费时间。鉴于此,我在本文中不以任何已有快捷方式来举例,就新建一个快捷方式吧。

      由于”/usr/share/applications/”目录需要root权限才能操作,所以我们需要在终端中临时获取root权限(已经root登录的就不必了)来创建文件(下面我以Eclipse为例),Debain系(如Ubuntu)用户可以在终端中使用:

sudo gedit /usr/share/applications/eclipse.desktop

来编辑文本,而Red hat系(如Fedora)则先登录为su,再启动gedit,命令如下:

su
 gedit /usr/share/applications/eclipse.desktop

然后我们开始写Desktop Entry内容:

和那些配置文件、脚本文件一样,第一行我们先要定义好下面内容所使用的标准格式,这里使用的是[Desktop Entry]。之后按照每行一个属性的格式写上一些必选项,使其可用。

  • Name=eclipse。该关键词定义了该快捷方式的名称。
  • Type=Application。该关键词定义了该快捷方式的类型,常见的还有”Link”。
  • Exec=/opt/eclipse/eclipse。该关键词定义了该快捷方式所指向的执行文件路径。
  • Icon=/opt/eclipse/icon.xpm。该关键词定义了该快捷方式所显示的图标路径。
  • Categories=Development。该关键词定义了该快捷方式所显示的应用菜单类别,Development指显示在编程开发一类中。
  • Terminal=false。该关键词定义了该快捷方式所指向的exec是否需要在终端中运行。

以上几项便是我们创建eclipse快捷方式所需要定义的属性,其中后4项只有当Type为Application时才有效。此外,除去上面几个属性之外,还有需要可选项可以设置,不过对我们来说没有必要再多做设定了。

设定完成之后保存关闭,我们就可以在应用菜单的编程开发中看到我们刚刚创建的这个快捷方式了,怎么样,其实也还很简单吧?


参考:Linux Desktop Enrty文件深入解析

PS:由于本文在XP环境下写成,所以就暂不提供截图了。晚上回家截了张图下来,仅供参考

Fedora18的安装配置记录

2013年03月09日 分类目录 :linux&软件技术 0

       自去年台式机购置之后,就没考虑过Windows系统的使用,于是一直在几个知名不知名的Linux发行版之间试用,以期找到一个满意的、适合自己的版本。

       现在最流行的Ubuntu在我使用了没几天的情况下就被抛弃了,于是很长一段时间我使用的都是国内新锐Deepin,前端时间12.12 Alpha版发布之后,我也第一时间进行了升级,不过使用下来总有些不舒服,于是又跳回到了Fedora这个用得相对舒服的版本。
       目前Fedora最新版本是18,代号为Spherical Cow。这个版本可谓是我自从07年尝试Linux以来最纠结的一个版本了,前前后后重装了4、5次我才把它配置成能正常使用的系统。不少以前不需要自己去配置、安装的应用在这个版本中都变得需要自己去配置、安装了,无奈~
       桌面版本我毫无疑问使用的是KDE,GNOME的那个界面风格太让我感到压抑了,还是KDE这种有着现代感的看起来舒服点,说到这,其实Deepin的DE挺好看的,唯一的不足是它性能差了点,不知道正式版的时候是不是能流畅操作?
       由于我主机没有装光驱,只能用USB启动安装了,先在Windows(笔记本)上用Universal-USB-Installer制作,具体方法参照《制作操作系统U盘启动应用》。不过不知道是什么原因,用它做出来的在启动时会有些小麻烦,比如说要改引导才行之类的,还有就是安装好的系统关机时不会自动切断电源,要手动关闭,很是奇怪。后来勉强装好之后,又用Fedora自带的LiveUSB Creator重新制造安装了次,这次就没什么问题了。
      Fedora的安装过程就不多说了,18里的安装引导比之前的简单了很多,很容易就能装好。接下来要说的是安装完成之后的工序:
为了更快完成下面的下载,先把yum-fastestmirror安装上吧,它可以为我们挑选最快的软件源。

       由于我们使用的是简体中文系统,然后LiveCD里的中文化程度并不高(GNOME版基本完美,KDE就……,故而以下均为KDE环境的操作,GNOME者跳过),所以我们还需要安装简体中文语言包,然后就这个语言包的安装又折腾了我半响,我印象中使用yum install kde-i18n-Chinese就可以了,可没想安装好重起并没有起效,然后就去查系统设置的语言,发现也是对的,查来查去,最后发现这个kde-i18n-chinese竟然是KDE3的语言包,而KDE4的语言包却是kde-l10n-Chinese,无奈,竟然搞错包了,重新安装并重起,终于出现熟悉的汉字了。
       浏览器我选择了Chrome来替代默认的Konqueror,在安装它的过程中也遇到了点小问题,下载下来的RPM包无法双击安装,现象是显示安装成功,但是实际上并没有成功,后来只好在终端里用命令安装:rpm -ivh *.rpm。
      哦,对了,貌似到现在为止还没法输入中文?先把ibus安装好。
      显卡驱动可以选择官方的,不过安装官方的可能会需要每次升级内核后都重新安装一次驱动(我没试过,只是听说),要省心就装RPMFusion里的吧:yum localinstall –nogpgcheck http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-18.noarch.rpm  http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-18.noarch.rpm。执行完之后再执行yum install akmod-nvidia来安装驱动。RPMFusion里还有MP3解码器等实用工具,因为我没这需求,所以没装,有需要的自行google之。
   对于Fedora,虽然我曾经有过大半年的使用经历,但是我还是个新人,自己还在不断地摸索中,如果有说错的地方还请见谅。

后记,KDE的Desktop方案里有一个搜索和启动,这个模式的桌面蛮不错的,是我喜欢的类型。

,

解决在Linux环境下解压zip的乱码问题

2011年12月30日 分类目录 :linux&软件技术 6

        今天折腾了下把windows下的文件全部转移到了Fedora中,之后在解压那些在Windows下压缩为zip格式的压缩包时出现了久违了的乱码问题。于是乎,为了解决这个麻烦事,Google了一堆解决办法一一试过去,却依然没法解决。最后,终于在翻了N页之后找到了一段代码,抱着尝试的心理试用了一下,没想到竟然解决了这一大难题。好东西不忍独享,故而在此贴出让更多人使用。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import sys
import zipfile

print "Processing File " + sys.argv[1]

file=zipfile.ZipFile(sys.argv[1],"r");
for name in file.namelist():
    utf8name=name.decode('gbk')
    print "Extracting " + utf8name
    pathname = os.path.dirname(utf8name)
    if not os.path.exists(pathname) and pathname!= "":
        os.makedirs(pathname)
    data = file.read(name)
    if not os.path.exists(utf8name):
        fo = open(utf8name, "w")
        fo.write(data)
        fo.close
file.close()

从代码来看并没有多少技术含量,但是却很实用。

将这段代码保存为 unzip.py之后,将其和需要解压的文件放置在同一个文件夹中,之后在终端中使用下面的代码就可以了:

python unzip.py *.zip

, , , ,

Linux禁止apache、mysql、tomcat自动启动

2011年11月04日 分类目录 :linux&软件技术 0

最近完成了web开发环境在Linux中的搭建,由于图省心,就直接在源中安装一系列的软件,包括apache、mysql、tomcat等。不过,之后就发现了一个小问题,由于我是通过源安装的,所以这几个软件的默认设置都是开机自动启动,而我并非一直需要用到它们。虽然对于现在的电脑性能来说,让它们一直运行在那里并不拖累性能,但是这总让人不舒服,因此就将它们禁止掉,当需要时才启用了。

其实,方法很简单,在终端中输入以下命令即可:

sudo update-rc.d -f apache2 remove

sudo update-rc.d -f tomcat* remove //*替换为你安装的tomcat版本 

而mysql就相对烦了那么点:

sudo service mysql stop

sudo gedit /etc/mysql/mysql.conf 

start on (net-device-up
and local-filesystems
and runlevel [2345])
改为 start on runlevel [!0123456]

, , ,

Linux下解决MySQL中文乱码问题

2011年11月03日 分类目录 :linux&软件技术 0

对于数据库应用来说,编码是一个非常讨厌的障碍。最近使用eclipse做一个电子商务网站的作业,当我创建了sql文件并执行之后,总会暴出一些稀奇古怪的错误,导致sql执行中断,而当我把同样的代码直接在MySQL终端中执行时,却又能顺利执行(当然,偶尔也会有怪问题出现)。痛苦了许久,总算是找到了问题之所在。这一切都是编码惹的祸!

当我从源中安装好MySQL之后,遗忘了编码的设置,因此当往数据库插入带中文字符的数据之后,就会因编码问题出现乱码、问号、或者就像是我遇到奇怪错误的现象。当我想起这茬事之后,就赶忙弥补这个低级错误,最终验证也解决了乱码的问题。

由于之前曾在Win7中安装过一次MySQL,当时曾修改过一次相关配置,因此想着Linux下应该也差不多,就跑去MySQL安装的目录找配置文件了。MySQL在Windows中的配置文件为“my.ini”,而在Linux中则是my.cnf。

遵照Linux的文件结构习惯,my.cnf位于/etc/mysql/目录下,在终端中使用”sudo gedit /etc/mysql/my.cnf”命令打开该文件,然后在[client]和[mysqld]下添加“default-character-set=utf8”。添加完之后关闭编辑器,重启MySQL,这就搞定了。现在可以试着创建一个表,并插入一些中文内容了。

更新:刚忘了说了,修改前创建的表中的中文依然会是乱码,不会自动更正。需要在mysql中执行以下sql语句来手动更正:

ALTER   TABLE   tbl_name   CONVERT   TO   CHARACTER   SET utf8

, ,