Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
FreeBSD ports system
Search
dv
October 18, 2013
Technology
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
FreeBSD ports system
FreeBSD ports system @NCTU
dv
October 18, 2013
More Decks by dv
See All by dv
Python module in Rust
wdv4758h
0
210
First try for CAS, SymPy with codegen
wdv4758h
0
740
Android Memory Leak Profiling - VMFive
wdv4758h
0
330
CPython's bug in feature that nobody uses
wdv4758h
0
140
Vim 手指健康操
wdv4758h
3
950
Other Decks in Technology
See All in Technology
1人アドミンな私はAWSアカウント申請をSlackで完結したい!
ysuzuki
0
110
OpenClawでAzure DevOpsのWiki更新を自動化する - クラウドAIだけでは届かない場所へ
yutakaosada
0
140
AIに攻撃される前に、AIに攻撃させる
tsuchikazu
0
100
【データ横丁主催】AI Agentがコンテキストを使って仕事をした後、何が残るのか― 組織の経験を次の判断に引き継ぐ「Agent Memory」
shisyu_gaku
2
310
生成AIを使って「人が」考える技術 ― AI時代の人機共想と実践ノウハウ|UNITT AC2026
ishiirikie
0
520
AIに書かせて、プラットフォームで縛る ― EKSプラットフォームで実践した責任境界と権限設計
elmodev09
1
1.1k
ログラスのマルチプロダクトを 支える認証基盤 〜テナントごとに異なる統制とどう向き合うか〜
dada4386
3
320
GitHub Agentic Workflows を触ってみる
htkym
2
910
VS Code × GitHub Copilot での Fabric 開発
ryomaru0825
1
210
spanner-autoscalerに学ぶ CRD設計パターン 〜自動化と緊急時対応を両立する Kubernetesコントローラーの作り方〜
tkuchiki
0
220
行動するAIのためのオントロジー | DevRev — Encraft #26.pdf
dvrv_tknrszk
2
670
スキルを作る、その前に!複数人で使われるスキルを 作るためのプロセス
junkifurukawa
2
170
Featured
See All Featured
Tell your own story through comics
letsgokoyo
1
1.1k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
520
How Software Deployment tools have changed in the past 20 years
geshan
2
34k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
Everyday Curiosity
cassininazir
0
340
Mind Mapping
helmedeiros
1
390
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
58k
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