Chinaunix

标题: 2011 DevSummit 特輯: pkgng [打印本页]

作者: zeissoctopus    时间: 2011-10-22 23:25
标题: 2011 DevSummit 特輯: pkgng
本帖最后由 zeissoctopus 于 2011-10-22 23:29 编辑

2011 DevSummit 與 EuroBSDcon 2011 已順利完成今年有很多新點子,本篇試一試翻譯一篇有關 pkgng


pkgng 將會是未來 FreeBSD 的 apt 或 yum
的確令人期待

原文 pdf 網址: http://wiki.freebsd.org/201110DevSummit/Ports?action=AttachFile&do=view&target=pkgng-devsummit.pdf

活動 FreeBSD Developer Summit, EuroBSDcon 2011, Maarssen, The Netherlands
日期 2011 年 10 月 8 日

作者 Baptiste Daroussin (bapt@FreeBSD.org)

請尊重原作者一切版權的權利

Why changing 為何要轉變?

原因一: /usr/src/usr.sbin/pkg_install/add/perform.c 源碼中早已注明

  1. /*
  2. * This is seriously ugly code following.  Written very fast!
  3. * [And subsequently made even worse..  Sigh!  This code was just born
  4. * to be hacked, I guess.. :) -jkh]
  5. */

  6. /*
  7. * 以下是一段非常草率程式碼,過急地被編寫而成,可能令事情變成更差
  8. * 我認為這段由一開始便需要被 hack -jkh (Jordan K. Hubbard)
  9. */
复制代码
原因二: /usr/src/usr.sbin/pkg_install/delete/perform.c 源碼也早已注明

  1. /* This is seriously ugly code following. Written very fast! */

  2. /* 以下是一段非常草率程式碼,過急地被編寫而成 */
复制代码
原因三:  no safe upgrade possible
現在的 pkg_* 沒有可能安全昇級(軟體)

原因四:no clean repository handling
現在的 pkg_* 沒有明晰的 repository 處理機制

原因五:hardly extensible
現在的 pkg_* 機乎不可能有擴展性

原因六:lack features provided by ports
現在的 pkg_* 缺乏了 ports 提供的特色(功能)

原因七:lack features to help improving ports
現在的 pkg_* 缺乏特色(功能)去幫助改善 ports

What is pkgng pkgng 是什麼東西?

binary package managment tool (ala apt/yum)
它是二進碼程式打包管理工具 (正如 apt 或 yum)

library to handle packages (libpkg)
它有一個管理二進碼程式打包管理的函式庫 (libpkg)

very simple and powerful default UI (pkg)
它有一個非常單簡而有力的預設使用者介面 (pkg)

new binarg package format
它制定一個全新的二進碼打包格式準則

fully compatible with ports
它可以完全兼容 ports (二者可以交互使用而不引起衝突)

easy manual package creation
使用它可以很容易 DIY 包打軟體

safe upgrade possible
使用它,軟件安全升級變成有可能的事了

Binary management? 如何二進碼打包管理?

updating the repository informations - 更新 repository 資訊

  1. $ pkg update
  2. http://pkggng.etoilebsd.net/eeepc/repo.txz 100% 157KB 157.KB/s 157KB/s 00:00
复制代码
upgrading 更新軟件

  1. $ pkg upgrade
复制代码
installing 安裝指定軟件

  1. $ pkg install libreoffice
复制代码
cleaning 刪除軟件

  1. $ pkg autoremove
复制代码
searching for remote packages - 尋找遠端軟件包

  1. $ pkg search chromium
  2. chromium-13.0.782.215: A mostly BSD-licensed web browser based on WebKit and Gtk+
复制代码
What else ?  pkgng 還有其他(功能)?

register an alreadly installed port - 註冊一個剛才使用 ports 來安裝的軟件入 pkgng 管理系統

  1. $ pkg register
复制代码
query information from installed packages - 查詢所有已安裝的軟件包之資訊(有二種取向)


user friendly query: 取悅使用者的查詢方法

  1. $ pkg info
复制代码
script firendly query:  取悅手稿的查詢方法

  1. $ pkg query "I am %n version %v" chromium
  2. I am chromium version 13.0.782.215
复制代码
native support for jail and chroot - 原生支援 jail 和 chroot

  1. $ pkg -j myjailname info -a
  2. $ pkg -c /path/to/my/chroot info -a
复制代码
experimental multi repositories support - 實驗性支援同時多過一個 repositories

New package format 全新的二進碼軟件打包格式

more metadata 更多 metadata 資訊

  1. $ pkg search -f chromium
  2. Name           : chromium
  3. Version        : 13.0.782.215
  4. Origin         : www/chromium
  5. Prefix         : usr/local
  6. Categories     : www
  7. Licenses       : MPL | LGPL21 | BSD
  8. Maintainer     : chromium@FreeBSD.org
  9. WWW            : http://www.chromium.org/Home
  10. Comment        : A mostly BSD-licensed web browser based on WebKit and Gtk+
  11. Options        :
  12.          CODECS: on
  13.          GCONF: on
  14.          VPX: on
  15. Flat size      : 74 MB
  16. Pkg size       : 19 MB
  17. Description    :
  18. chromium is an open-source browser project that aims to build a safer,
  19. faster, and more stable way for all users to experience the web.

  20. The Chromium website contains design documents, architecture overviews,
  21. testing information, and more to help you learn to build and work with
  22. the Chromium source code.

  23. WWW: http://www.chromium.org/Home
复制代码
a single serialisable manifest (YAML) 這新格式是一種單數序性清單(YAML)

full path files 這新格式有完整路徑檔案

upgrade scripts 這新格式有更新手稿碼

libpkg 函式庫

simple and consistent API 簡單而一致性的 API

event driven messages 事件驅動的信息

full featured: 完整特色功能:
easy-to-write binding (experimental lua) 容易編寫連結 libpkg 的程式 (實驗 lua 支援 libpkg)

easy to use 容易使用

Thread safe

clean and simple code base 清楚和簡單源碼思路為基礎

easily extensible 很容易地擴展它的功能

New local database 全新的本地數據庫

uses SQLite to store anything 使用 SQLite 儲存 pkgng 任何東西

high level language libpkg 是一種高階程式語言

fast - libpkg 執行速度快

New remote(s) database 全新遠端一個或多個數據庫

uses SQLite to store anything but files 使用 SQLite 儲存一切資訊但不包括檔案

planed an optional files database 計劃了附加的檔案數據庫

easy to create: 容易創造一個 repostry

  1. $ pkg repo my_folder [my_rsa_key]
复制代码


Compatibility with ports 與 ports 並存的兼容性

work out of the box with 95% of the ports tree 一開始便可以順利使用 95% ports

all the magic is in bsd.pkgng.mk 一切功能寫在 /usr/ports/Mk/bsd.pkgng.mk 中

what is not working 那些 ports 不能使用 pkgng 安裝?

what works 那些 ports 可以使用 pkgng 安裝?
除了以上指出那些不能用的 ports 外,其他 ports 皆可以與 pkgng 混合用

Open tasks 未完成的工作

PKGNG:Thanks 謝謝

http://wiki.freebsd.org/pkgng
https://github.com/pkgng/pkgng
作者: tyqchina    时间: 2011-10-23 08:51
这个太好了,年纪越大越不想折腾ports,不知道10.0-release会不会有?
作者: fender0107401    时间: 2011-10-23 10:41
FreeBSD is evolving!
作者: fender0107401    时间: 2011-10-23 12:15
仔细看了一下,这个东西很好,如果发展的好的话,就可以直接使用binary了,到时候FreeBSD就是一个即可以基于src又可以基于binary的系统了。

目前来讲FreeBSD的ports系统是比较成熟的,但是也不是非常的成熟,还有待改进,但却可以接受。

但是,目前的pkg_*就有点简单了。

希望这个工具能够解决目前的现状。
作者: axlrose    时间: 2011-10-24 13:52
到时用FreeBSD桌面,安装升级就很轻松了
作者: dooros    时间: 2011-10-24 15:36
freebsd最近的改动挺大的,从编译器到包管理器,进步啊!
作者: 芭比小柒    时间: 2011-10-24 19:15
还是不会用
作者: ioerr    时间: 2011-10-25 09:56
good,虽然我不用这个,但是支持lz。
作者: jvvt    时间: 2011-10-26 23:28
我是懒人,pkg_info,pkg_add,pkg_delete已经够用了。
作者: axlrose    时间: 2011-10-27 09:34
像我这样的懒人才需要pkgng这种工具,一个命令升级所有pkg,而原来的pkg 工具是做不到的,要全面升级pkg的东西非常麻烦,根本偷不得懒
作者: zeissoctopus    时间: 2011-10-27 10:24
我是懒人,pkg_info,pkg_add,pkg_delete已经够用了。
jvvt 发表于 2011-10-26 23:28


pkgng 背後的重點,我認為是 FreeBSD + pkgng = 每週 或 每月 都可以更新二進碼軟件包一次。情況就好像 arch linux 的 pacman 一樣。
而且 pkgng 可以和 ports 並存而不會衝突。這比 arch linux 的 pacman + ABS 更優勝。

現在  FreeBSD 窘境是
1. 每次  RELEASE 版才會更新一次二進包
2. 如果要用二進包快照版,很需要使用者自己小心維護
3. 同時使用二進包和 ports,很容易互相衝突




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2