so true

心怀未来,开创未来!
随笔 - 160, 文章 - 0, 评论 - 40, 引用 - 0
数据加载中……

package management -- apt/dpkg & yum/rpm

yumdownloader --urls mariadb-server #To get URLs for packages
yumdownloader --resolve mariadb-server #To actually download a package and all its dependencies
rpm -iv XXX # install
rpm -e XXX # remove
rpm -qa # list all packages
rpm -ql XXXX #list all files of XXX package
rpm -U XXX # update existed package to newer version
/etc/yum.conf # yum source configure

dpkg -l #列出所有安装的包
dpkg -L xterm #列出xterm包安装后的所有文件
dpkg -s xterm #显示xterm包的状态
dpkg -r xterm #删除xterm包
dpkg -i xterm.deb #安装xterm包
dpkg -S xterm.pc #在安装的包中查找xterm.pc文件
dpkg -c xterm.deb #查看xterm.deb包中的内容
dpkg -x xterm.deb output #提取xterm.deb包中的内容到output目录下
apt-cache search xterm #查询xterm相关的包

也可以通过ppa来安装个人发布的包:
1。到https://launchpad.net/ubuntu/+ppas上搜索需要的包;
2。用类似如下的步骤安装:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java7-installer

遇到一个问题:
The following packages have unmet dependencies:
 libssl-dev : Depends: libssl0.9.8 (= 0.9.8o-1ubuntu4) but 0.9.8o-1ubuntu4.1 is to be installed
解决方法是:sudo apt-get install libssl0.9.8=0.9.8o-1ubuntu4

如果仅仅是想升级一个包,可以用:
sudo apt-get install --only-upgrade XXX #Do not install new packages; When used in conjunction with install, only-upgrade will prevent packages on the command line from being upgraded if they are not already installed.

sudo apt-get autoremove #自动删除没用的包,autoremove is used to remove packages that were automatically installed to satisfy dependencies for some package and that are no more needed.

apt-cache show xterm #查看xterm包的信息,也可以看到xterm包下载的位置,例如Filename: pool/main/x/xterm/xterm_261-1ubuntu3_amd64.deb
apt-cache showsrc xterm #可以看到xterm包的源代码的相关信息
/var/cache/apt/archives/ #下载的包的位置
dpkg -S ls #在已安装的包中,查找哪些包中包含的文件有ls关键字
dpkg -S $(which ls) #在已安装的包中,查找哪些包中包含/usr/bin/ls这个工具
apt-file update && apt-file search xterm.pc #不用下载包,查询那个包含有xterm.pc文件
apt-get install --download-only xterm && dpkg -L xterm #只下载不安装,然后再查看包里的内容,也可以使用apt-file show xterm来查看包里的内容
/etc/apt/sources.list #配置源,如果系统版本较低,例如ubuntu10.10,可以配置ubuntu11.04的源,因为10.10已经不再维护了,源里面的包会不全,其实更好的方式是找到目前依然可以提供10.10包的源,例如lupaworld,官方站的源还有,不过放到了old-releases.ubuntu.com下了。

apt-get source xterm #可以下载包的源代码,下载到当前目录下

通过上面这些有用的方法,成功解决了一个相当有难度的问题:
困扰我很久的一个问题是,X偶尔会freeze,ctrl+alt+backspace不好用,只能通过Alt+PrtScn(SysRq)+k(先按住alt,一直不松,然后依次按下PrtScn、k)来重启X;在X Freeze期间,可以ssh上去,看到X程序cpu使用率为0%,gdb上去打印backtrace,从前几层stack frame中发现问题出在./usr/lib/xorg/modules/drivers/intel_drv.so,进一步找到这个so在xserver-xorg-video-intel包里,其版本号为2.12.0-1ubuntu5,怀疑是它出了问题,找到这个包的下载路径是pool/main/x/xserver-xorg-video-intel/xserver-xorg-video-intel_2.12.0-1ubuntu5_amd64.deb,从http://old-releases.ubuntu.com/ubuntu/上下载这个包的紧邻升级版xserver-xorg-video-intel_2.12.0-1ubuntu5.2_amd64.deb,dpkg -i安装,重启后ok了。

下面是关于apt源路径的一些说明(摘自http://www.linuxgoo.com/2005/66129/10252232428.html):
下边是我的source.list中的一段:
QUOTE:
deb http://security.ubuntu.com/ubuntu dapper-security main restricted

deb-src http://security.ubuntu.com/ubuntu dapper-security main restricted

  其中第一个字段中的deb/deb-src是指软件包(deb)和源代码包(deb-src)

  而第二个字段指向的是软件库的位置,apt会自动根据软件库的位置和第三字段(dapper-security/dapper)的信息去抓取软件索引(/dists)和软件包或源代码包(/pool)的信息,所以你可以用Firefox或者其它浏览器来测试一下各个软件库的速度,然后自己选择放入到源中,不要的用#注释掉即可。

  而第三个字段(dapper/dapper-security/)代表的是Ubuntu的发行版。

  而第三个字段之后的就是关于发行版的软件包了,其中:

  main(主要的)--“main”组件包括了自由软件、可以被自由发布的软件和被Ubuntu团队完全支持的软件。其中包括了大多数流行的和稳定的开源软件,当您安装Ubuntu时默认安装的就是这些软件。

  restricted(限制的)--“restricted”组件是专供普遍用途,而且没有自由软件版权,但依然被Ubuntu团队支持的软件。请注意,因为不能直接修改软件,因而我们可能不能提供完全的技术支持,即便如此,我们还能向实际作者反馈Bug报告。

  universe(宇宙,世界,全人类)--“universe”组件是整个自由、开源Linux世界的缩影。在“universe”组件中,你可以找到大多数开源软件,以及在开源版权下的软件,所有这些都是在公共源的基础上建立的。这些软件都是使用“main”中的组件编写的,它们能与“main”组件相安无事地共同运行,但它们没有安全升级的保障。“universe”组件包含了数以千计的软件。虽然是公共的,用户必须明白它们与稳定的Ubuntu核心的软件的差异和不稳定。

  multiverse--multiverse”组件包含了“不自由”的软件,这意味着这些软件不满足 Ubuntu相对于“main”组件的各种版权政策。当您使用这些软件时,如何调整各种权力以及遵重版权所有者的问题,就完全依靠您自己把握了。这些软件不被我们支持,而且通常不能被修改和更新,您将自己承担任何风险。 现在,作为以上位置的新增功能,实际上新的软件包都存储在pool目录中


附:

一.下列目录存在于任何 Ubuntu 镜像站点的 ubuntu 目录下:

1)dists/:
本目录包含“发行版”(distributions),此处是获得 Ubuntu 发布版本(releases)和已发布版本(pre-releases)的软件包的正规途径。有些旧软件包及 Contens-*.gz Packages.gz 等文件仍在其中。

2)pool/:
所有 Ubuntu 发布版及已发布版的软件包的新的物理地址。

3)indices/:
维护人员文件和重载文件。

4)project/:
大部分为开发人员的资源,如:
project/experimental/:本目录包含了处于开发中的软件包和工具,它们均处于 alpha 测试阶段。用户不应使用这些软件,因为即使是经验丰富的用户也会被搞得一团糟。
project/orphaned/:已不再有人维护的软件包,它们已从发行版中孤立出来。

二.Ubuntu 发行版

现在在 dists 目录下有三个 Ubuntu 发行版。它们是“hoary”发行版,“breezy”发行版,和“dapper”发行版。有时还有一个“edgy”发行版。其中也包含了一个现不再支持"warty"发行版。

1)hoary 发行版
hoary 2005年4月发布

2)breezy 发行版
breezy 2005年10月发布。现在,除了上述目录,新上载的软件包的物理存储位置为pool目录。在breezy下同样有main、restricted、universe和multiverse子目录,它们的作用与hoary中的一样。

3)dapper 发行版
dapper 2006年6月发布。提供了长达3年的支持,新版本以Ubuntu 6.06 LTS(Long Term Support)(长期支持),它针对一些大组织的需求对桌面版和服务器版都做个一定程度上的增强。新上载的软件包的物理存储位置为pool目录。在dapper下同样有main、restricted、universe和multiverse子目录,它们的作用与hoary中的一样。

4)edgy 发行版
edgy 发行版反映了系统的最新开发进展。欢迎广大用户使用并测试这些软件包,同时也提醒你们这些软件包还不完善。使用edgy发行版的好处就是你可以获得Ubuntu项目的最新更新—不过新东西也会出新问题,你得好坏兼收:-)

发布版代号 :
1)Warty Warthog 多疣的疣猪,
2)Hoary Hedgehog 灰白的刺猬,


3)Breezy Badger 活泼的獾,

4)Dapper Darke 漂亮的鸭子,


5)Edgy Eft 躁动的蜥蜴



三.Ubuntu 发布版其它仓库

存在于dists目录下的物理目录名,例如breezy-updates和breezy-security,就是“附加的仓库”。当某个Ubuntu发行版处于维护阶段。将包的必要升级和安全更新放在附加的仓库里。其附加仓库通常有 ***-updates(更新)、***-security(安全)、***-proposed(提议)、***-backports。

四.pool目录

过去,软件包均放在dists目录下相应发行版的子目录中。这种做法产生了许多问题,当镜像站点进行新版本发布时大量带宽被消耗。

现在软件包均放进一个巨大的“池子(pool)”,按照源码包名称分类存放。为了方便管理,pool目录下按属性再分类(main、restricted、 universe和multiverse),分类下面再按源码包名称的首字母归档。这些目录包含的文件有:运行于各种系统架构的二进制软件包,生成这些二进制软件包的源码包。

你可以执行命令apt-cache showsrc mypackagename,查看“Directory:”行获知每个软件包的存放位置。例如:apache软件包存放在 pool/main/a/apache/软件包存放在lib*软件包数量巨大,它们以特殊的方式归档:例如,libpaper软件包存放在 pool/main/libp/libpaper/。

诸如apt等命令访问的索引文件仍位于dists目录中。
通常,你大可不必注意这些,新版的apt和旧版dpkg-ftp会自动处理它们。

五.发布源目录结构

在每个主目录树下(dists/dapper/main、dists/dapper/restricted、dists/dapper/universe、 dists/dapper/multiverse/,等)按芯片架构又分了子目录,每个子目录中存放着在该芯片架构下编译的二进制软件包。
binary-amd64/ AMD64 或 EM64T 架构
binary-i386/ 所有的使用 Intel/AMD/等 处理器的PC,


binary-powerpc/ Apple Macintosh G3, G4, 和 G5


binary-sparc/ Sun UltraSPARC 系统

六.源代码

  Ubuntu 系统中的main,universe组件有源代码,不仅如此,许可证条款规定系统中所有的程序必须和其源代码一起发行,或提供源代码出售。


  通常源代码发布在source目录,该目录同时处于所有架构目录中,更新的源码则在pool目录中。对于不太熟悉 Ubuntu 归档目录结构的用户想获得源代码可以试试apt-get source mypackagename命令。

  有些软件包,如著名的pine,由于许可证限制,只提供源码包。

  restricted和multiverse目录中的软件包可能不提供源代码,因为它们没有正式加入 Ubuntu 系统。

posted on 2013-01-01 16:06 so true 阅读(1203) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: