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
150
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
170
First try for CAS, SymPy with codegen
wdv4758h
0
680
Android Memory Leak Profiling - VMFive
wdv4758h
0
280
CPython's bug in feature that nobody uses
wdv4758h
0
110
Vim 手指健康操
wdv4758h
3
880
Other Decks in Technology
See All in Technology
AS59105におけるFreeBSD EtherIPの運用と課題
x86taka
0
280
その意思決定、まだ続けるんですか? ~痛みを超えて未来を作る、AI時代の撤退とピボットの技術~
applism118
42
24k
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.3k
現地速報!Microsoft Ignite 2025 M365 Copilotアップデートレポート
kasada
2
1.8k
Introduction to Bill One Development Engineer
sansan33
PRO
0
320
身近なCSVを活用する!AWSのデータ分析基盤アーキテクチャ
koosun
0
4.2k
Greenは本当にGreenか? - B/GデプロイとAPI自動テストで安心デプロイ
kaz29
1
130
[続・営業向け 誰でも話せるOCI セールストーク] AWSよりOCIの優位性が分からない編(2025年11月21日開催)
oracle4engineer
PRO
1
130
Dify on AWS の選択肢
ysekiy
0
110
個人から巡るAI疲れと組織としてできること - AI疲れをふっとばせ。エンジニアのAI疲れ治療法 ショートセッション -
kikuchikakeru
5
1.9k
『ソフトウェア』で『リアル』を動かす:クレーンゲームからデータ基盤までの統一アーキテクチャ / アーキテクチャConference 2025
genda
0
1.1k
Digital omtanke på Internetdagarna 2025
axbom
PRO
0
130
Featured
See All Featured
Writing Fast Ruby
sferik
630
62k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Making Projects Easy
brettharned
120
6.5k
Faster Mobile Websites
deanohume
310
31k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
118
20k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
11
940
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Into the Great Unknown - MozCon
thekraken
40
2.2k
[RailsConf 2023] Rails as a piece of cake
palkan
57
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:
[email protected]
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