Instalowanie początkowych ports

PERL

To jest podstawa do wszystkiego. Chociaż wystarczy wykonać instalację OpenSSL, a aktualny PERL zostanie zainstalowany.

OpenSSL

To jest druga podstawa wszystkiego pozostałego. Nie zaznaczamy opcji gmp (licencja LGPLv3 -blokada)

# UWAGA! config-recursive warto wykonać 2-3 razy
cd /usr/ports/security/openssl
make config-recursive
make all install clean

OpenSSH portable

# UWAGA! config-recursive warto wykonać 2-3 razy
cd /usr/ports/security/openssh-portable
make config-recursive
make all install clean

echo "openssh_enable=\"YES\"" >> /etc/rc.conf

/etc/rc.d/openssh start

pkgng dla OSVERSION < 10

Natywny (hmm dotychczasowy) pkg_* idzie już do lamusa. Trzeba przejść na pkgng, który bardzo żywo przypomina Linuxowe apt-get, rpm, czy inne tego typu programy (wygląd, czy składnia). Scala w sobie również dotychczasowe narzędzia, jak np. portaudit

UWAGA! pkgng korzysta z SQLite - ale to zostanie doinstalowane.

cd /usr/ports/ports-mgmt/pkg
make config-recursive
make all install clean
pkg2ng

Po wykonaniu pkg2ng, należy skasować dotychczasową "bazę" dla pkg, czyli katalogi. Aby przez pomyłkę wykonując ponownie pkg2ng nie zainstalować "starych" wersji ports

find /var/db/pkg -type d -mindepth 1 -maxdepth 1 -exec rm -rf {} \;

Konieczność dodania w /etc/make/make.local.conf

# wy/l/aczenie komunikat/ow
NO_WARNING_PKG_INSTALL_EOL=     yes

# pokazanie np. portupgrade, /ze jest ju/z pkgng
WITH_PKGNG=                     yes

portupgrade

# UWAGA! config-recursive warto wykonać 2-3 razy
cd /usr/ports/ports-mgmt/portupgrade
make config-recursive
make all install clean

Należy następnie przekopiować z repozytorium CVS lub innego serwera pliki /usr/local/etc/pkgtools.conf oraz /usr/local/etc/pkgtools.interoptioned-pkg.sh (chociaż to na później)

net/chrony

Istnieje konieczność znalezienia alternatywy do ntpd. Wersja "systemowa" może nie być aktualna. ntp zwykłe jest wpisane na listę podatności. ntp-devel: niby działa stabilnie, ale może przestać działać stabilnie. OpenNTPd w wersji portable jest kilka wersji do tyłu w stosunku do wersji OpenBSD. Pozostaje zatem chrony zgodnie z tą dyskusją

Opcji konfiguracyjnych przy instalacji nie ma wielu. Zaś plik konfiguracyjny jest prosty i nieskomplikowany.

portupgrade -N net/chrony

ICU, SQLite

portupgrade -N devel/icu databases/sqlite3

Podstawowe narzędzia

portupgrade -N xinetd ipcalc ipfmeta lang/python27 bsdadminscripts lsof sudo unzip afio p7zip sysutils/moreutils fex screen smartmontools
cd /usr/ports/editors/vim
make WITH_OPTIONS=1 all install clean

portupgrade -N security/nmap security/apg net/mtr net/netcat sysutils/daemontools net/trafshow net/unison security/py-fail2ban
portupgrade -N devel/py-dateutil ftp/wget ftp/ncftp3 ftp/curl emulators/linux_base-f10 sysutils/freebsd-snapshot
portupgrade -N dmidecode bsdstats

Poprawka bsdadminscripts - pkgng

To jest ponowne uruchomienie portconfig, aby móc ustawiać ustawienia dla ports przy pkgng

--- /usr/local/sbin/portconfig.orig     2013-07-10 01:54:15.387843000 +0200
+++ /usr/local/sbin/portconfig  2014-03-11 01:08:32.009584910 +0100
@@ -154,7 +154,7 @@
                        if [ -n "$force" ]; then
                                echo "$port"
                        else
-                               if pkg_version -IO "$port" \
+                               if pkg version -IO "$port" \
                                        grep \< > /dev/null 2>&1; then
                                        echo "$port"
                                fi
@@ -162,18 +162,18 @@

                        if [ -n "$recursive" ]; then
                                getPorts "$depth" $( \
-                                       pkg_info -qR $(pkg_info -qO "$port" \
+                                       pkg info -qr $(pkg info -qO "$port" \
                                        2> /dev/null))
                        fi
                        if [ -n "$upwardrecursive" ]; then
                                getPorts $depth $( \
-                                       pkg_info -qr $(pkg_info -qO "$port" \
+                                       pkg info -qd $(pkg info -qO "$port" \
                                        2> /dev/null) \
                                        | sed 's/@pkgdep //1')
                        fi
                # Handle parameters that look like package names.
                else
-                       candidates="$(pkg_info -Ex "$port")"
+                       candidates="$(pkg info -x "$port")"
                        # The shortest candidate ist bound to be the best match.
                        shortest=
                        for candidate in $candidates; {
@@ -184,11 +184,11 @@
                                        shortest="$candidate"
                                fi
                        }
-                       shortest="$(pkg_info -qo "$shortest" 2> /dev/null)"
+                       shortest="$(pkg info -qo "$shortest" 2> /dev/null)"
                        if [ -n "$force" ]; then
                                echo "$shortest"
                        else
-                               if pkg_version -IO "$shortest" \
+                               if pkg version -IO "$shortest" \
                                        grep \< > /dev/null 2>&1
                                then
                                        echo "$shortest"
@@ -197,14 +197,14 @@

                        if [ -n "$recursive" ]; then
                                getPorts "$depth" $( \
-                                       pkg_info -qR $(
-                                               pkg_info -qO "$shortest"
+                                       pkg info -qr $(
+                                               pkg info -qO "$shortest"
                                        ))
                        fi
                        if [ -n "$upwardrecursive" ]; then
                                getPorts "$depth" $( \
-                                       pkg_info -qr $(
-                                               pkg_info -qO "$shortest"
+                                       pkg info -qd $(
+                                               pkg info -qO "$shortest"
                                        ) | sed 's/@pkgdep //1')
                        fi
                fi
@@ -230,9 +230,9 @@
 # All ports are to be processed.
 if [ -n "$all" ]; then
        if [ -n "$force" ]; then
-               upgrade="$(pkg_info -aqo)"
+               upgrade="$(pkg info -aqo)"
        else
-               upgrade="$(pkg_version -Iol\< | sed -E 's/[[:space:]]*<$//1')"
+               upgrade="$(pkg version -Iol\< | sed -E 's/[[:space:]]*<$//1')"
        fi
 fi
 # Handle explicitly requested ports.

Powyższy patch powinien zadziałać na wszystkie "hardlinks" do portconfig, ale z jakiś przyczyn na UFS tak się nie dzieje (tak, jakby patch traktował to jako oddzielne pliki). Zatem poniższy jednolinijkowiec powinien ładnie pomóc:

for f in `pkg info -l bsdadminscripts | grep 'sbin/port'`; do patch $f ~wtp/scripts/portconfig.patch ; rm $f.orig; done

# wersja dla HQ
#
for f in `pkg info -l bsdadminscripts | grep 'sbin/port'`; do patch $f ~wtp/cvs/unison/portconfig.patch ; rm $f.orig; done

subversion

W sumie to jest potrzebne na kolejną aktualizację źródeł systemu operacyjnego - w końcu dla ports można posłużyć się portsnap-em. Ale i tak może być konieczne zainstalowanie zależności:

portupgrade -N devel/subversion

UWAGA!!! Jeżeli jest to FreeBSD-9.x i skorzystaliśmy z opcji native iconv, to konieczne jest zapatchowanie Makefile'a

@@ -168,3 +168,7 @@
 .if ${PORT_OPTIONS:MFREEBSD_TEMPLATE} && defined(ORGANIZATION)
        @${ECHO_CMD} "#define ORGANIZATION_NAME \"${ORGANIZATION}\"" > ${WRKSRC}/subversion/freebsd-organization.h
 .endif
+
+.if defined(WITH_ICONV)
+       @${REINPLACE_CMD} -e 's/UTF-8\\n/UTF-8/gI' ${WRKSRC}/subversion/po/*.po
+.endif

portdowngrade

Dopiero teraz można instalować: jest zależny od subversion:

portupgrade -N portdowngrade

rrdtool

Na potrzeby różnych monitoringów (np. collectd, czy mailgraph) potrzebna jest ta baza danych:

cd /usr/ports/databases/rrdtool
make config-recursive
make fetch-recursive

# jezeli skorzystalismy z ustawien dot. natywnego iconv, to problemem jest devel/glib20 - patrz rowniez ponizszy patch dla Makefile
cd /usr/ports/devel/glib20
make LIB_ICONV=1 all install clean
cd /usr/ports/databases/rrdtool
make all install clean

Konieczny patch dla devel/glib20

Tylko w przypadku skorzystania z native iconv:

--- Makefile    2013-09-20 19:04:43.000000000 +0200
+++ Makefile.new        2013-10-16 00:32:31.000000000 +0200
@@ -100,6 +100,10 @@
                s|-Werror|| ; \
                s|#define HAVE_SYS_INOTIFY_H 1||' ${WRKSRC}/configure

+.if defined(WITH_ICONV)
+       @${REINPLACE_CMD} -e 's/UTF-8\\n/UTF-8/gI' ${WRKSRC}/po/*.po
+.endif
+
 post-install:
        @${MKDIR} ${PREFIX}/share/GConf/gsettings
        -${PREFIX}/bin/gio-querymodules ${PREFIX}/lib/gio/modules

InstalowaniePorts (ostatnio edytowane 2015-01-02 08:06:44 przez wtps0n)