Slide 1

Slide 1 text

FreeBSD ports system dv 許邱翔 @ NCTU

Slide 2

Slide 2 text

前情提要 有來上次社課的話 應該已經裝好一個自己的 FreeBSD 了

Slide 3

Slide 3 text

前情提要 (cont'd) 沒有自己的 FreeBSD 可以用的話 馬上舉手 0.0/ (我們有備好虛擬機可以用)

Slide 4

Slide 4 text

前情提要 (cont'd) 現在請先開好自己的 FreeBSD

Slide 5

Slide 5 text

說明 以下投影片中 # 開頭的都是指令

Slide 6

Slide 6 text

說明 (cont'd) 在修改系統設定檔、安裝軟體時 需要 root 權限

Slide 7

Slide 7 text

\社課正式開始/

Slide 8

Slide 8 text

一般軟體安裝 Click, Click, Click

Slide 9

Slide 9 text

FreeBSD 軟體安裝 use command !!!

Slide 10

Slide 10 text

ports tree ports tree 是 FreeBSD 上的 軟體列表 而且是有經過檢驗的 而放在裡面的軟體就被稱為 ports

Slide 11

Slide 11 text

ports tree (cont'd) 接下來將教你如何藉由 ports tree 來安裝軟體

Slide 12

Slide 12 text

ports tree (cont'd) Ports tree is what you need before installing ports Path: /usr/ports/

Slide 13

Slide 13 text

ports tree (cont'd) 請先 cd 進去 /usr/ports/ 看看裡面是不是空的 如果你安裝時沒有勾選 ports 的話 應該是空的 現在來教如何抓 ports tree ~

Slide 14

Slide 14 text

portsnap 更新、管理 ports tree 的工具

Slide 15

Slide 15 text

portsnap (cont'd) First time # edit /etc/portsnap.conf SERVERNAME=portsnap.FreeBSD.org SERVERNAME=portsnap.tw.FreeBSD.org

Slide 16

Slide 16 text

portsnap (cont'd) First time # portsnap fetch # portsnap extract merge => # portsnap fetch extract

Slide 17

Slide 17 text

portsnap (cont'd) After the first use # portsnap fetch # portsnap update merge => # portsnap fetch update

Slide 18

Slide 18 text

Search - whereis # whereis NAME # whereis rsync rsync: /usr/ports/net/rsync

Slide 19

Slide 19 text

Search - echo (using wildcard) # echo /usr/ports/*/NAME # echo /usr/ports/*/rsync /usr/ports/net/rsync # echo /usr/ports/*/*NAME*

Slide 20

Slide 20 text

INDEX # make fetchindex (the files are INDEX-*) For make search & make quicksearch

Slide 21

Slide 21 text

Search - make search # cd /usr/ports/ # make search name=NAME # make search key=KEYWORD If names or keywords have multiple words, use ' ' or " "

Slide 22

Slide 22 text

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/

Slide 23

Slide 23 text

B-deps B-deps means Build dependencies

Slide 24

Slide 24 text

R-deps R-deps means Run dependencies

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

Search - psearch ports-mgmt/psearch # psearch NAME # psearch rsync net/rsync Network file distribution...

Slide 27

Slide 27 text

in the ports 請先 cd 到 /usr/ports/security/sudo

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

in the ports (cont'd) other files ● pkg-message - msg to user (after installed)

Slide 30

Slide 30 text

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}

Slide 31

Slide 31 text

make # cd /path/to/your/ports # make # make install # make clean merge => # make install clean

Slide 32

Slide 32 text

make (cont'd) # make deinstall delete software anyway even if it is required by other packages

Slide 33

Slide 33 text

make (cont'd) change config again # make config

Slide 34

Slide 34 text

make your make faster # edit /etc/make.conf FORCE_MAKE_JOBS=yes MAKE_JOBS_NUMBER=6

Slide 35

Slide 35 text

portmaster ports-mgmt/portmaster # portmaster PORTS_PATH ex: # portmaster security/sudo

Slide 36

Slide 36 text

portmaster (cont'd) check upgrade (all installed software) # portmaster -a

Slide 37

Slide 37 text

portmaster (cont'd) ● -a 確認所有的ports有沒有可以升級的 ● -d 升級或移除ports的時候自動將用不到的 distfiles砍掉 ● -B 升級時,不將舊的套件備份起來 ● -f 強制編譯升級ports ex: # portmaster -dB security/sudo

Slide 38

Slide 38 text

portmaster (cont'd) ● -G 不跳出 make config 選擇視窗 ● -y 對所有問題都回答yes ● --clean-distfiles 移除不需要的distfiles ● --clean-packages 移除不需要的packages ● --check-depends 確認目前所有的ports相 依性

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

pkg_add, pkg_delete # pkg_add LOCAL_PACKAGE_FILES # pkg_add -r PACKAGE_NAME (remote)

Slide 41

Slide 41 text

pkg_add, pkg_delete (cont'd) # pkg_delete NAME-VERSION pkg_delete need specific version

Slide 42

Slide 42 text

pkg_add, pkg_delete (cont'd) # pkg_delete NAME\*

Slide 43

Slide 43 text

pkg_add, pkg_delete (cont'd) # pkg_delete -r -v PACKAGE_NAME ● -r : Recursive removal ● -v : Turn on verbose output ● -f : force

Slide 44

Slide 44 text

pkgng ports-mgmt/pkg a replacement for pkg_* tools convert the package database # pkg2ng (This step is not reversible)

Slide 45

Slide 45 text

pkgng (cont'd) # pkg install NAME # pkg delete NAME

Slide 46

Slide 46 text

pkgng (cont'd) earlier than FreeBSD 10.X require this line in /etc/make.conf WITH_PKGNG = YES

Slide 47

Slide 47 text

pkgng notice 不要在使用 pkg2ng 來轉成使用 pkgng 前 在 make.conf 加入 WITH_PKGNG = YES

Slide 48

Slide 48 text

Other command list and describe installed packages # pkg_info # pkg info (pkgng)

Slide 49

Slide 49 text

Other command (cont'd) compares the package version to the current version found in the ports tree # pkg_verson # pkg version (pkgng)

Slide 50

Slide 50 text

Rehash # rehash

Slide 51

Slide 51 text

Updating check /usr/ports/UPDATING it documents some of the problems you may encounter when upgrading your ports

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

Updating (cont'd) list installed software and search for updates # portmaster -L upgrade all ports that can be upgraded # portmaster -a

Slide 54

Slide 54 text

Portaudit ports-mgmt/portaudit check if installed ports are listed in a database of published security vulnerabilities

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

pkg audit Fetch the database before checking # pkg audit -F # pkg audit ● -F Fetch the database

Slide 57

Slide 57 text

Task Today install below software ● screen ● vim-lite ● sudo ● subversion ● git ● python

Slide 58

Slide 58 text

Reference ● FreeBSD handbook ● NCTU SA - Install Applications ● FreeBSD Ports - pellaeon ● FreeBSD wiki - pkgng ● FreeBSD wiki - Pkg Primer ● portmaster - Hsian Studio ● command manual

Slide 59

Slide 59 text

This is the end of today's course Thanks for everyone

Slide 60

Slide 60 text

More things

Slide 61

Slide 61 text

PKGSITE 如果想改用其他 FreeBSD Packages Mirror 就得設定此環境變數 # setenv PKGSITE PACKAGES_MIRROR_URL

Slide 62

Slide 62 text

PKGSITE (cont'd) 如果之後想移除此環境變數時 可下此指令 # unsetenv PKGSITE

Slide 63

Slide 63 text

portconf 一次設定好編譯參數 以後裝新機就不用重新勾選

Slide 64

Slide 64 text

portconf (cont'd) /usr/local/etc/ports.conf net/rsync: WITH_ICONV Wildcard can be used.

Slide 65

Slide 65 text

ports tree (cont'd) ● distfiles/ 預設會把安裝軟體時所需要下載的檔案 存到 /usr/ports/distfiles/ 底下

Slide 66

Slide 66 text

ports tree (cont'd) ● CHANGES major changes to ports and the ports infrastructure (for ports committers, maintainers and other developers)

Slide 67

Slide 67 text

ports tree (cont'd) ● MOVED A list of (recently) moved or removed ports