免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4069 | 回复: 10
打印 上一主题 下一主题

[FreeBSD] 2011 DevSummit 特輯: pkgng [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-10-22 23:25 |只看该作者 |倒序浏览
本帖最后由 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: 完整特色功能:
  • everything to deal with packages 一切處理軟件打包的功能
  • everything to create packages 一切產生軟件打包的功能
  • everything to deal with repositories 一切處理 repositories 功能
  • everything to create repositories 一切產生 repositories 功能
easy-to-write binding (experimental lua) 容易編寫連結 libpkg 的程式 (實驗 lua 支援 libpkg)

easy to use 容易使用
  • create.c 158 行
  • install.c 132 行
  • upgrade.c 123 行

Thread safe

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

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

New local database 全新的本地數據庫

uses SQLite to store anything 使用 SQLite 儲存 pkgng 任何東西
  • reliable 因此 libpkg 可靠
  • transactions 因此 libpkg 具備事務特性
  • ACID -libpkg 具備 ACID 完整邏輯事務特性

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

fast - libpkg 執行速度快

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

uses SQLite to store anything but files 使用 SQLite 儲存一切資訊但不包括檔案
  • can be signed using RSA (SHA256) 可以用 RSA 來簽署 (SHA256 加密)
  • tar using xz compression (small size) 用 tar 作 xz 解縮 (相對較少身段)

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 安裝?
  • @exec/unexec in the middle of the plist - 當 ports 的 @exec/unexec 是放在 plist 檔案的中間
  • non sh scripts - 當 ports 不是使用 sh 手稿
  • buggy plist that are now detected - 發現 plist 沖積錯誤碼

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

Open tasks 未完成的工作

  • Safer for installation / upgrades 加強安裝或更新軟件時的安全性
  • detect upspecified conflicts early 提早發現軟件們相衝突
  • better ordering of the packages 更有效地把軟件排序
  • code review, in particular the SSL usage 審閱 pkgng 程式碼,尤其是有關使用 SSL
  • capsicum 增加支援 capsicum
  • may be a pkg rquery 或許實現反向查詢 pkg rquery
  • packagekit backend 實現 packagekit 為後置的 pkgng
  • write a migration plan! 編寫一個轉移計劃
PKGNG:Thanks 謝謝

http://wiki.freebsd.org/pkgng
https://github.com/pkgng/pkgng

评分

参与人数 1可用积分 +5 收起 理由
fender0107401 + 5 Good!

查看全部评分

论坛徽章:
0
2 [报告]
发表于 2011-10-23 08:51 |只看该作者
这个太好了,年纪越大越不想折腾ports,不知道10.0-release会不会有?

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
3 [报告]
发表于 2011-10-23 10:41 |只看该作者
FreeBSD is evolving!

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
4 [报告]
发表于 2011-10-23 12:15 |只看该作者
仔细看了一下,这个东西很好,如果发展的好的话,就可以直接使用binary了,到时候FreeBSD就是一个即可以基于src又可以基于binary的系统了。

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

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

希望这个工具能够解决目前的现状。

论坛徽章:
0
5 [报告]
发表于 2011-10-24 13:52 |只看该作者
到时用FreeBSD桌面,安装升级就很轻松了

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:192015年迎新春徽章
日期:2015-03-04 09:57:09
6 [报告]
发表于 2011-10-24 15:36 |只看该作者
freebsd最近的改动挺大的,从编译器到包管理器,进步啊!

论坛徽章:
0
7 [报告]
发表于 2011-10-24 19:15 |只看该作者
还是不会用

论坛徽章:
0
8 [报告]
发表于 2011-10-25 09:56 |只看该作者
good,虽然我不用这个,但是支持lz。

论坛徽章:
0
9 [报告]
发表于 2011-10-26 23:28 |只看该作者
我是懒人,pkg_info,pkg_add,pkg_delete已经够用了。

论坛徽章:
0
10 [报告]
发表于 2011-10-27 09:34 |只看该作者
像我这样的懒人才需要pkgng这种工具,一个命令升级所有pkg,而原来的pkg 工具是做不到的,要全面升级pkg的东西非常麻烦,根本偷不得懒
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP