Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
FreeBSD ports system
Search
dv
October 18, 2013
Technology
0
120
FreeBSD ports system
FreeBSD ports system @NCTU
dv
October 18, 2013
Tweet
Share
More Decks by dv
See All by dv
Python module in Rust
wdv4758h
0
150
First try for CAS, SymPy with codegen
wdv4758h
0
640
Android Memory Leak Profiling - VMFive
wdv4758h
0
220
CPython's bug in feature that nobody uses
wdv4758h
0
96
Vim 手指健康操
wdv4758h
3
810
Other Decks in Technology
See All in Technology
移行できそうでやりきれなかった 10年超えのシステムを葬るための戦略
ryu955
2
180
30代エンジニアが考える、エンジニア生存戦略~~セキュリティを添えて~~
masakiokuda
4
1.9k
「エンジニアマネージャー」の役割を担っている / 担ってみたい方へのキャリアパスガイド
coconala_engineer
1
220
これからクラウドエンジニアになるために本当に必要なスキル 5選
hiyanger
1
440
株式会社アゲテク会社説明資料
mimimimimicky
0
230
View Transition API
shirakaba
1
830
Compose MultiplatformにおけるiOSネイティブ実装のベストプラクティス
enomotok
1
170
開発組織全体で意識するSLI/SLOを実装している話
zepprix
1
730
BCMathを高速化した一部始終をC言語でガチ目に解説する / BCMath performance improvement explanation
sakitakamachi
2
690
モジュラーモノリスでスケーラブルなシステムを作る - BASE のリアーキテクチャのいま
panda_program
7
1.7k
グループポリシー再確認
murachiakira
0
140
Road to SRE NEXT 仙台 IVRyの組織の形とSLO運用の現状
abnoumaru
0
210
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.2k
The World Runs on Bad Software
bkeepers
PRO
67
11k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.3k
VelocityConf: Rendering Performance Case Studies
addyosmani
328
24k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.2k
Raft: Consensus for Rubyists
vanstee
137
6.8k
Designing for humans not robots
tammielis
250
25k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Making Projects Easy
brettharned
116
6.1k
Transcript
FreeBSD ports system dv 許邱翔 @ NCTU
前情提要 有來上次社課的話 應該已經裝好一個自己的 FreeBSD 了
前情提要 (cont'd) 沒有自己的 FreeBSD 可以用的話 馬上舉手 0.0/ (我們有備好虛擬機可以用)
前情提要 (cont'd) 現在請先開好自己的 FreeBSD
說明 以下投影片中 # 開頭的都是指令
說明 (cont'd) 在修改系統設定檔、安裝軟體時 需要 root 權限
\社課正式開始/
一般軟體安裝 Click, Click, Click
FreeBSD 軟體安裝 use command !!!
ports tree ports tree 是 FreeBSD 上的 軟體列表 而且是有經過檢驗的 而放在裡面的軟體就被稱為
ports
ports tree (cont'd) 接下來將教你如何藉由 ports tree 來安裝軟體
ports tree (cont'd) Ports tree is what you need before
installing ports Path: /usr/ports/
ports tree (cont'd) 請先 cd 進去 /usr/ports/ 看看裡面是不是空的 如果你安裝時沒有勾選 ports
的話 應該是空的 現在來教如何抓 ports tree ~
portsnap 更新、管理 ports tree 的工具
portsnap (cont'd) First time # edit /etc/portsnap.conf SERVERNAME=portsnap.FreeBSD.org SERVERNAME=portsnap.tw.FreeBSD.org
portsnap (cont'd) First time # portsnap fetch # portsnap extract
merge => # portsnap fetch extract
portsnap (cont'd) After the first use # portsnap fetch #
portsnap update merge => # portsnap fetch update
Search - whereis # whereis NAME # whereis rsync rsync:
/usr/ports/net/rsync
Search - echo (using wildcard) # echo /usr/ports/*/NAME # echo
/usr/ports/*/rsync /usr/ports/net/rsync # echo /usr/ports/*/*NAME*
INDEX # make fetchindex (the files are INDEX-*) For make
search & make quicksearch
Search - make search # cd /usr/ports/ # make search
name=NAME # make search key=KEYWORD If names or keywords have multiple words, use ' ' or " "
Search - make search (cont'd) Port: rsync-3.0.9_3 Path: /usr/ports/net/rsync Info:
Network file distribution/synchronization utility Maint: ehaupt@FreeBSD.org B-deps: R-deps: WWW: http://rsync.samba.org/
B-deps B-deps means Build dependencies
R-deps R-deps means Run dependencies
Search - make quicksearch # cd /usr/ports/ # make quicksearch
name=NAME Port: rsync-3.0.9_3 Path: /usr/ports/net/rsync Info: Network file distribution/synchronization utility
Search - psearch ports-mgmt/psearch # psearch NAME # psearch rsync
net/rsync Network file distribution...
in the ports 請先 cd 到 /usr/ports/security/sudo
in the ports (cont'd) • Makefile • distinfo - info
about files and checksums • files/ - some patches and files • pkg-descr - more descriptions • pkg-plist - all files that port will install
in the ports (cont'd) other files • pkg-message - msg
to user (after installed)
Before getting the source # edit /etc/make.conf MASTER_SITE_BACKUP?= \ http://freebsd.cs.nctu.edu.tw/distfiles/${DIST_SUBDIR}/
MASTER_SITE_OVERRIDE?= ${MASTER_SITE_BACKUP}
make # cd /path/to/your/ports # make # make install #
make clean merge => # make install clean
make (cont'd) # make deinstall delete software anyway even if
it is required by other packages
make (cont'd) change config again # make config
make your make faster # edit /etc/make.conf FORCE_MAKE_JOBS=yes MAKE_JOBS_NUMBER=6
portmaster ports-mgmt/portmaster # portmaster PORTS_PATH ex: # portmaster security/sudo
portmaster (cont'd) check upgrade (all installed software) # portmaster -a
portmaster (cont'd) • -a 確認所有的ports有沒有可以升級的 • -d 升級或移除ports的時候自動將用不到的 distfiles砍掉 •
-B 升級時,不將舊的套件備份起來 • -f 強制編譯升級ports ex: # portmaster -dB security/sudo
portmaster (cont'd) • -G 不跳出 make config 選擇視窗 • -y
對所有問題都回答yes • --clean-distfiles 移除不需要的distfiles • --clean-packages 移除不需要的packages • --check-depends 確認目前所有的ports相 依性
ports & package package • Install faster, but run slower
(binary) • less flexibility • save the time building from source ports • Build from source • Install slower than package, but run faster • more flexibility • easier to modify code
pkg_add, pkg_delete # pkg_add LOCAL_PACKAGE_FILES # pkg_add -r PACKAGE_NAME (remote)
pkg_add, pkg_delete (cont'd) # pkg_delete NAME-VERSION pkg_delete need specific version
pkg_add, pkg_delete (cont'd) # pkg_delete NAME\*
pkg_add, pkg_delete (cont'd) # pkg_delete -r -v PACKAGE_NAME • -r
: Recursive removal • -v : Turn on verbose output • -f : force
pkgng ports-mgmt/pkg a replacement for pkg_* tools convert the package
database # pkg2ng (This step is not reversible)
pkgng (cont'd) # pkg install NAME # pkg delete NAME
pkgng (cont'd) earlier than FreeBSD 10.X require this line in
/etc/make.conf WITH_PKGNG = YES
pkgng notice 不要在使用 pkg2ng 來轉成使用 pkgng 前 在 make.conf 加入
WITH_PKGNG = YES
Other command list and describe installed packages # pkg_info #
pkg info (pkgng)
Other command (cont'd) compares the package version to the current
version found in the ports tree # pkg_verson # pkg version (pkgng)
Rehash # rehash
Updating check /usr/ports/UPDATING it documents some of the problems you
may encounter when upgrading your ports
Updating (cont'd) # pkg_updating # pkg updating (pkgng) # pkg_updating
NAME_OF_SOFTWARE # pkg updating NAME_OF_SOFTWARE (pkgng) print the ${PORTSDIR}/UPDATING entries that concern your installed packages
Updating (cont'd) list installed software and search for updates #
portmaster -L upgrade all ports that can be upgraded # portmaster -a
Portaudit ports-mgmt/portaudit check if installed ports are listed in a
database of published security vulnerabilities
Portaudit (cont'd) # portaudit -Fda # portaudit • -F Fetch
the current database • -d Print the creation date of the database • -a Print a vulnerability report for all installed packages
pkg audit Fetch the database before checking # pkg audit
-F # pkg audit • -F Fetch the database
Task Today install below software • screen • vim-lite •
sudo • subversion • git • python
Reference • FreeBSD handbook • NCTU SA - Install Applications
• FreeBSD Ports - pellaeon • FreeBSD wiki - pkgng • FreeBSD wiki - Pkg Primer • portmaster - Hsian Studio • command manual
This is the end of today's course Thanks for everyone
More things
PKGSITE 如果想改用其他 FreeBSD Packages Mirror 就得設定此環境變數 # setenv PKGSITE PACKAGES_MIRROR_URL
PKGSITE (cont'd) 如果之後想移除此環境變數時 可下此指令 # unsetenv PKGSITE
portconf 一次設定好編譯參數 以後裝新機就不用重新勾選
portconf (cont'd) /usr/local/etc/ports.conf net/rsync: WITH_ICONV Wildcard can be used.
ports tree (cont'd) • distfiles/ 預設會把安裝軟體時所需要下載的檔案 存到 /usr/ports/distfiles/ 底下
ports tree (cont'd) • CHANGES major changes to ports and
the ports infrastructure (for ports committers, maintainers and other developers)
ports tree (cont'd) • MOVED A list of (recently) moved
or removed ports