设为首页 收藏本站
查看: 814|回复: 0

[经验分享] debian软件包管理详解[转]

[复制链接]

尚未签到

发表于 2018-5-16 06:49:10 | 显示全部楼层 |阅读模式
  http://www.roppe.com.cn/it/p9/J91111_2.shtml
正文
用`dpkg来恢复:  # cd /var/cache/apt/archives
  # dpkg -i libc6* libdb2* perl*
  # dpkg -i apt* dpkg* debconf*
  # dpkg -i * # 直至不再出错
  如果软件包丢失,用下述方法从镜像源
  (http://www.debian.org/mirror/)下载:
  # mc # use "ftp link" pointing to debian ftp server
  现在,在http/ftp服务器上,软件包的真正位置不再是传统的`/dist目录而是新的`/pool目录。
  然后开始安装:
  # dpkg -i /var/cache/apt/archives/
  对于坏关联,可这样解决:
  # dpkg --ignore-depends=,... -i # dpkg --force-depends -i # dpkg --force-depends --purge # dpkg --force-confmiss -i # install missing conffile
  恢复软件包选择状态的数据
  如果`/var/lib/dpkg/status因为某种原因坏掉了,debian系统将会完全丢失软件包选择状态的数据。赶快到 `/var/lib/dpkg/status-old或`/var/backups/dpkg.status.*下找找旧的 `/var/lib/dpkg/status文件。
  将`/var/backups/放在其它的分区是个好习惯,因为该目录包含了许多非常重要的系统数据。
  如果旧的`/var/lib/dpkg/status文件也坏了,仍可以从`/usr/share/doc/下的目录进行恢复这些信息。
  # ls /usr/share/doc |
  grep -v [a-z] |
  grep -v ^texmf$ |
  grep -v ^debian$ |
  awk {print " install"} |
  dpkg --set-selections
  # dselect --expert # reinstall system, de-select as needed
  /var被删除后如何恢复系统
  `/var目录包含着定时更新的数据如mail,它们很容易遭破坏。将目录放到别的分区可降低风险,如果最坏的事情发生了,可以通过重建`/var目录来挽救debian系统。
  从相同或旧版本的最简debian系统中取得`/var目录的内容框架,例如var.tar.gz
  (http://people.debian.org/~osamu/pub...膔oot目录,接着
  # cd /
  # mv var var-old # 如果剩有有用内容
  # tar xvzf var.tar.gz # 使用woody框架文件
  # aptitude # 或用dselect
  上述步骤可使系统恢复工作。
  `恢复软件包选择状态的数据中描述的技术加速软件包选择数据的恢复。
  ([fixme]:该过程需要更多的实践来检验)
  为无法启动的系统安装软件包
  使用debian急救软盘/cd或从多启动linux系统其它分区启动。
  `启动系统.
  将无法启动的系统挂载到`/target并使用`dpkg的chroot安装模式。
  # dpkg --root /target -i
  接下来就可以着手配置并解决问题。
  如是只是由于`lilo损坏而造系统无法启动,可使用标准debian急救盘启动。假设你的root分区位于`/dev/hda12且想使用runlevel
  3,在启动提示符输入:
  boot: rescue root=/dev/ 3
  这样,你就可以使用软盘中内核启动系统,新系统的功能基本齐全。(可能丢失某些内核特性或模块)
  如果dpkg命令出错该怎么办
  如果`dpkg损坏就不能安装任何`.deb文件。下面的操作可帮助你修复这种状况。(在第一行,你可将“links”替换成你喜欢的浏览器。)
  $ links http:///debian/pool/main/d/dpkg/
  ... 下载完好的dpkg__.deb
  $ su
  password: *****
  # ar x dpkg__.deb
  # mv data.tar.gz /data.tar.gz
  # cd /
  # tar xzfv data.tar.gz
  对`i386,亦可用`http://packages.debian.org/dpkg作为url。
  文件信息
  查找特定文件所属的软件包:
  $ dpkg pattern # search for pattern in installed packages
  $ wget http://ftp.us.debian.org/debian/dists//
  $ zgrep -e pattern
  # find filename-pattern of files in the debian archive
  或使用专门的软件包命令:
  # apt-get install dlocate
  # conflicts with slocate (secure version of locate)
  $ dlocate # fast alternative to dpkg -l and dpkg -s
  ...
  # apt-get install auto-apt # on-demand package installation tool
  # auto-apt update # create db file for auto-apt
  $ auto-apt search # search for pattern in all packages, installed or not
  软件包信息
  搜索并显示包文件的信息。编辑`/etc/apt/sources.list,让apt指向正确的包文件。如果想了解testing/unstable中的相应软件包与当前系统安装的软件包有何差别,使用`apt-cache
  policy---更好。
  # apt-get check # 更新缓冲区并检查损坏的软件包
  $ apt-cache search # 按文本描述搜索软件包
  $ apt-cache policy # 软件包的priority/dists信息
  $ apt-cache show -a # 显示所有dists中软件包描述信息
  $ apt-cache showsrc # 显示相应源码包的信息
  $ apt-cache showpkg # 软件包调试信息
  # dpkg --audit|-c # 搜索未完成安装的软件包
  $ dpkg ... # 已安装软件包描述
  $ dpkg -l ... # 已安装软件包的状态(每个占一行)
  $ dpkg -l ... # 列出软件包安装的文件的名称
  如果是woody发布版没有为`apt-cache showsrc建档,但该命令可用
  你也这可这样查看软件包信息(我用`mc浏览):
  /var/lib/apt/lists/*
  /var/lib/dpkg/available
  比较下面的文件可以确切了解最近的安装过程对系统造成了那些改变。
  /var/lib/dpkg/status
  /var/backups/dpkg.status*
  使用apt进行全自动系统安装
  进行全自动安装,要在`/etc/apt/apt.conf中加上一行:
  dpkg::options
  另一种等阶的方法是运行`apt-get -q -y
  。这种方法可能产生严重的负作用,所以使用起来要小心。参阅apt.conf(5)和dpkg(1)。
  安装完毕以后重新配置已安装软件包中的方法配置特定的软件包。
  重新配置已安装软件包
  使用下列方法重新配置已安装软件包。
  # dpkg-reconfigure --priority= [...]
  # dpkg-reconfigure --all # 重新配置所有的软件包
  # dpkg-reconfigure locales # 生成别的locales
  # dpkg-reconfigure --p= xserver-xfree86 # 重新配置x服务器
  如果你想永久改变`debconf对话框模式,可这么做。
  某些程序用于生成特殊的配置脚本。
  apt-setup - 创建/etc/apt/sources.list
  install-mbr - 安装主引导(master boot record)管理器
  tzconfig - 设定本地时间
  gpmconfig - 设置gpm鼠标daemon
  sambaconfig - 在potato中配置samba(woody使用debconf来配置)
  eximconfig - 配置exim (mta)
  texconfig - 配置tetex
  apacheconfig - 配置apache (httpd)
  cvsconfig - 配置cvs
  sndconfig - 配置声音系统
  ...
  update-alternatives - 设定默认启动命令,例如设定vi启动vim
  update-rc.d - system-v init脚本管理工具
  update-menus - debian菜单系统
  ...
  删除软件包
  删除软件包但保留其配置文件:
  # apt-get remove ...
  # dpkg --remove ...
  删除软件包并删除配置文件:
  # apt-get remove --purge ...
  # dpkg --purge ...
  阻止旧软件包升级
  举个例子,要阻止`libc6和`libc6-dev通过`dselect或使用`apt-get -u
  upgrade 命令升级,可执行:
  # echo -e "libc6 hold libc6-dev hold" | dpkg --set-selections
  这种方法不影响`apt-get -u install 命令操作。要阻止`apt-get
  -u upgrade 或`apt-get -u
  dist-upgrade命令对软件包执行的强制自动降级行为,可在`/etc/apt/preferences中加上:
  package: libc6
  pin: release a=stable
  pin-priority: 2000
  这里“`package:”后不能使用通配符如“`libc6*”,如果要保持所有与`glibc源码包相关的二进制包的版本同步,可以明确的列出它们。
  该命令可以显示处于“阻止”状态的软件包:
  dpkg --get-selections "*"|grep -e "hold$"
  stable/testing/unstable混合系统
  `apt-show-versions可以列出发行版中可用软件包的版本。
  $ apt-show-versions | fgrep /testing | wc
  ... 你有多少testing软件包
  $ apt-show-versions -u
  ... 列出可升级的软件包
  $ apt-get install `apt-show-versions -u -b | fgrep /unstable`
  ... 将所有unstable软件包升级到最新版本
  删除缓存包文件
  使用apt安装软件包会在`/var/cache/apt/archives目录留下缓存文件,要清除这些文件可使用:
  # apt-get autoclean # removes only useless package files
  # apt-get clean # removes all cached package files
  记录/拷贝系统配置
  对软件包选择情况进行本地备份:
  $ dpkg --get-selections "*" > # or use *
  `“*”使`包含那些被指定“完全删除(purge)”的文件。
  你可将这个文件发送到另一台电脑并在那儿按文件中的选择进行软件包安装。
  # dselect update
  # dpkg --set-selections <
  # apt-get -u dselect-upgrade # dselect install
  stable系统引入软件包
  对stable系统进行部分升级,在软件运行环境中重新编译源码的确是个诱人的想法,这样可以避免由于关联关系不得不对大量软件包升级。首先,将下列镜像源加入
  /etc/apt/sources.list:(以下是美国的debian源)
  deb-src http://http.us.debian.org/debian testing
  main contrib non-free
  deb-src http://non-us.debian.org/debian-non-us testing/non-us
  main contrib non-free
  deb-src http://http.us.debian.org/debian unstable
  main contrib non-free
  deb-src http://non-us.debian.org/debian-non-us unstable/non-us
  main contrib non-free
  由于屏幕输出的限制,上述每条`deb-src命令均分成了2行,实际上在`sources.list中它们均为单行。
  然后下载源码并在本地生成软件包:
  $ apt-get source $ dpkg-source -x $ cd ... 查找需要的软件包(编译所需的关联包列在.dsc文件中)并安装它们,
  你还需要“fakerroot”软件包。
  $ dpkg-buildpackage -rfakeroot
  ...or (no sig)
  $ dpkg-buildpackage -rfakeroot -us -uc # use &quot;debsign&quot; later if needed
  ...then to install
  $ su -c &quot;dpkg -i &quot;
  通常,需要安装一些带“-dev”后缀的软件包以满足关联关系。`debsign在`devscripts软件包中。`auto-apt可以轻松解决这些关联问题。请使用`fakeroot,如是没有必要,就别使用root帐号。
  在woody中,这些关联问题已被简化。例如,编译`pine源码包:
  # apt-get build-dep pine
  # apt-get source -b pine
  完结:以上全部方法同样可用于ubuntu
  作者: lien
  来源: www.linuxsir.org

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-460728-1-1.html 上篇帖子: The Debian menu 转自openbox官方网站 下篇帖子: 在Debian中打造属于自己的deb包[转]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表