Setup Log DS211+: Teil 1 - Das Basissystem

Status
Für weitere Antworten geschlossen.

scythe42

Benutzer
Mitglied seit
16. Sep 2011
Beiträge
90
Punkte für Reaktionen
0
Punkte
0
Hier das Log meines Setups auf der Shell. Viel Spass beim Copy and Paste

Samba soll auch Symlinks folgen
Rich (BBCode):
sed -i '/workgroup=/ a\
\        follow symlinks = yes\
\        wide symlinks = yes\
\        unix extensions = no
' /usr/syno/etc/smb.conf

/usr/syno/etc/rc.d/S80samba.sh restart

SSH Login nur mit Key erlauben
  • Key liegt bereits auf der lokalen Maschine im Home Dir vor
  • root@NAS gegen eigenes Login austauschen
Rich (BBCode):
umask 077
mkdir ~/.ssh
touch ~/.ssh/authorized_keys
umask 022

# Folgendes Kommando auf dem Client ausführen, dann wieder auf der DS weitermachen
cat ~/.ssh/id_rsa.pub | ssh root@NAS "cat >> ~/.ssh/authorized_keys"

sed -i '/^#RSAAuthentication/ s/^#//' /etc/ssh/sshd_config 
sed -i '/^#PubkeyAuthentication/ s/^#//' /etc/ssh/sshd_config 
sed -i '/^#AuthorizedKeysFile/ s/^#//' /etc/ssh/sshd_config 
sed -i '/^#PasswordAuthentication/ s/^#//' /etc/ssh/sshd_config
sed -i '/^PasswordAuthentication/ s/yes$/no/' /etc/ssh/sshd_config

Allgemeines Arbeits- und Testverzeichnis anlegen
Rich (BBCode):
mkdir /volume1/src
ln -s /volume1/src /src
cd /src

Optware Installieren
  • Passendes Bootstrap Script für eigene Hardware nehmen
Rich (BBCode):
wget http://ipkg.nslu2-linux.org/feeds/optware/cs08q1armel/cross/unstable/syno-mvkw-bootstrap_1.2-7_arm.xsh
sh syno-mvkw-bootstrap_1.2-7_arm.xsh

# Folgende beiden Zeiten nur für aktuelle Marvell Prozessoren notwendig
sed -i 's/Feroceon-KW/Feroceon/' bootstrap.sh
./bootstrap.sh 

exit

/opt als Symlink statt als Mount Point einrichten
Rich (BBCode):
umount /opt
rmdir /opt
ln -s /volume1/@optware /opt

Optware Startup Script deaktivieren (aus dem Wiki übernommen)
Rich (BBCode):
cat > /etc/rc.local << "EOF"
#!/bin/sh

# Optware setup
#[ -x /etc/rc.optware ] && /etc/rc.optware start

exit 0
EOF

Neues Optware Startup Script anlegen (aus dem Wiki übernommen)
Rich (BBCode):
cat > /usr/local/etc/rc.d/optware.sh << "EOF"
#!/bin/sh
#
# Optware setup
# Alternatives Optware Startup und Shutdown Script #/usr/local/etc/rc.d/optware.sh
#
case $1 in
start)
       for i in /opt/etc/init.d/S??* ;do
#
               # Ignore dangling symlinks (if any).
               [ ! -f "$i" ] && continue
#
               case "$i" in
                  *.sh)
                       # Source shell script for speed.
                       (
                               trap - INT QUIT TSTP
                               set start
                               . $i
                       )
                       ;;
                  *)
                       # No sh extension, so fork subprocess.
                       $i start
                       ;;
               esac
       done
       ;;
#
stop)
#
       for i in /opt/etc/init.d/S??* ;do
#
               # Ignore dangling symlinks (if any).
               [ ! -f "$i" ] && continue
#
               case "$i" in
                  *.sh)
                       # Source shell script for speed.
                       (
                               trap - INT QUIT TSTP
                               set stop
                              . $i
                       )
                       ;;
                  *)
                       # No sh extension, so fork subprocess.
                       $i stop                       ;;
               esac
         done
         ;;
#
*)
         echo "Usage: $0 [start|stop]"
         ;;
esac
#
# End
EOF

Reboot
Rich (BBCode):
reboot


wget durch wget-ssl austauschen (offline Methode, da es bei mir Probleme gab)
Rich (BBCode):
cd /src
ipkg update
ipkg download wget-ssl libidn openssl
ipkg remove wget
ipkg install openssl_0.9.8p-1_arm.ipk libidn_1.21-1_arm.ipk wget-ssl_1.12-2_arm.ipk
rm openssl_0.9.8p-1_arm.ipk libidn_1.21-1_arm.ipk wget-ssl_1.12-2_arm.ipk

wget.rc einrichten, so dass keine Zertifikate überprüft werden
Rich (BBCode):
cat > ~/.wgetrc << "EOF"
check_certificate=off
EOF
 
Zuletzt bearbeitet:

scythe42

Benutzer
Mitglied seit
16. Sep 2011
Beiträge
90
Punkte für Reaktionen
0
Punkte
0
Setup Log DS211+: Teil 1 - Das Basissystem (Fortsetzung)

Basissoftware installieren
Rich (BBCode):
ipkg install \
  adduser \
  bash \
  bind \
  colordiff \
  coreutils \
  cpio \
  dstat \
  file \
  gawk \
  getopt \
  grep \
  gzip \
  htop \
  iftop \
  iperf \
  lsof \
  mtr \
  nail \
  man \
  multitail \
  netcat \
  nmap \
  p7zip \
  patch \
  procps \
  pwgen \
  ruby \
  screen \
  sed \
  tar \
  tcpdump \
  util-linux-ng \
  unrar \
  unzip \
  vim \
  wakelan \
  which \
  whois

Fehler der IPKGs beheben bzw. Anpassungen vornehmen
Rich (BBCode):
ln -s /opt/bin/bash /bin/bash
mv /opt/etc/init.d/S09named /opt/etc/init.d/_S09named
ln -s /opt/bin/python /usr/bin/python
rm /etc/termcap
ln -s /opt/etc/termcap /etc/termcap
ln -s /opt/bin/bzip2-bzip2 /opt/bin/bunzip2

Basis Development Software installieren
Rich (BBCode):
ipkg install \
  svn \
  git \
  optware-devel \
  ltrace \
  strace \
  gdb

vimpager installieren
Rich (BBCode):
wget http://www.vim.org/scripts/download_script.php?src_id=16902 -O /opt/bin/vimpager
chmod 755 /opt/bin/vimpager

Vim Farbschema und Dircolors einrichten
  • Solarized Farbschema auch im SSH Client verwenden (iTerm2, Putty etc.)
  • "TERM=xterm256-color" verwenden, sollte durch Client automatisch gesetzt werden
  • Als Font kann ich Menlo wärmstens empfehlen
Rich (BBCode):
mkdir -p  ~/.vim/colors
wget https://raw.github.com/altercation/solarized/master/vim-colors-solarized/colors/solarized.vim -P ~/.vim/colors
wget https://raw.github.com/seebi/dircolors-solarized/master/dircolors.256dark O ~/.dircolors

.vimrc anlegen (ist meine aktuelle, verändert sich aber noch)
Rich (BBCode):
cat > ~/.vimrc << "EOF"
set nocompatible
set backspace=indent,eol,start
set background=dark
color solarized  
syntax on
set hidden
set wildmenu
set showcmd
set hlsearch
set incsearch
set showmatch
set ignorecase
set smartcase
set backspace=indent,eol,start
set autoindent
set nostartofline
set ruler
set laststatus=2
set confirm
set visualbell
set t_vb=
set mouse=a
set mousehide
set mousemodel=popup
set cmdheight=2
set laststatus=2
set statusline=[%l,%v\ %P%M][CWD:\ %{CWD()}][FILE:\ %f]\ %r%h%w\ (%{&ff})\ %*
set showcmd
set showmode
set number
function! CWD()
    let curdir = substitute(getcwd(), '/home/root', "~/", "g")
    return curdir
endfunction
set notimeout ttimeout ttimeoutlen=200
set pastetoggle=<F11>
set shiftwidth=2
set softtabstop=2
set expandtab
set noswapfile
set ruler
set cursorline
map Y y$
map <MouseMiddle> <Esc>"*p
nnoremap <C-L> :nohl<CR><C-L>
EOF

.profile für Austausch der Root Shell auf Bash anpassen (verhindert dass man sich aussperrt)
  • Nach Bedarf anpassen bzw. mit weiteren Abfragen ergänzen
Rich (BBCode):
cat > ~/.profile << "EOF"
[ -f /opt/bin/bash -a -f ~/.bash_profile ] && exec /opt/bin/bash --login
EOF

.bash_profile anlegen (ist meine aktuelle, verändert sich aber öfters)
  • Nimmt was euch gefällt und entfernt was ihr nicht wollt
  • Leine Lust für Kommentare drin gehabt
Rich (BBCode):
cat > ~/.bash_profile << "EOF"
[ -z "$PS1" ] && return

[ -f /etc/bashrc ] && . /etc/bashrc

umask 022
ulimit -S -c 0 

# automatically create symlinks if not present after firmware upgrade
# TODO: need to add IPKG fixes
# TOOD: create full restore script in case of reset or upgrade and insert here
[ ! -d /opt ]            && ln -s /volume1/@optware /opt
[ ! -d /backup ]         && ln -s /volume1/backup /backup
[ ! -d /src ]            && ln -s /volume1/src /src
[ ! -d /ipkg ]           && ln -s /volume1/web/download/ipkg /ipkg

export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

PATH="/opt/bin:/opt/sbin:/bin:/sbin:/usr/bin:/usr/sbin:/usr/syno/bin:/usr/syno/sbin:/usr/local/bin:/usr/local/sbin:$PATH"
PATH="$(printf "%s" "${PATH}" | awk -v RS=: -v ORS=: '!($0 in a) {a[$0]; print}')"
export PATH="${PATH%:}" 
export LD_LIBRARY_PATH="/opt/lib:/lib:/usr/lib"
export HOME="/root"
export TERM="${TERM:-cons25}"
export EDITOR="/opt/bin/vim"
export PAGER="/opt/bin/vimpager"
export TAR_OPTIONS="--wildcards"
export SHELL="/bin/bash"
export PROMPT_COMMAND="history -a"
export HISTFILE="$HOME/.history"
export HISTCONTROL="ignoreboth:erasedups"
export HISTSIZE="10000"
export HISTFILESIZE="${HISTSIZE}"
export HISTIGNORE='&:bg:fg:ll:h'
export HISTTIMEFORMAT='%H:%M > '

shopt -s cdspell
shopt -s cdable_vars
shopt -s checkhash
shopt -s checkwinsize
shopt -s sourcepath
shopt -s no_empty_cmd_completion
shopt -s cmdhist
shopt -s histappend histreedit histverify
shopt -s extglob

set -b
set bell-style visible
set -o notify
set -o noclobber
set -o ignoreeof
set -o nounset  

complete -A export     printenv
complete -A variable   export local readonly unset
complete -A alias      alias unalias
complete -A function   function

complete -f -o default -X '*.+(zip|ZIP)'  zip
complete -f -o default -X '!*.+(zip|ZIP)' unzip
complete -f -o default -X '*.+(z|Z)'      compress
complete -f -o default -X '!*.+(z|Z)'     uncompress
complete -f -o default -X '*.+(gz|GZ)'    gzip
complete -f -o default -X '!*.+(gz|GZ)'   gunzip
complete -f -o default -X '*.+(bz2|BZ2)'  bzip2
complete -f -o default -X '!*.+(bz2|BZ2)' bunzip2
complete -f -o default -X '!*.+(zip|ZIP|z|Z|gz|GZ|bz2|BZ2)' extract

if [ "$TERM" != "dumb" ]; then
  export DIR_COLORS="$HOME/.dircolors"
  eval "`dircolors -b $DIR_COLORS`" 
  export PS1='\[\e[0;32m\]\u\[\e[m\] \[\e[1;34m\]\w\[\e[m\] \[\e[1;32m\]\$\[\e[m\] \[\e[1;37m\]'
else
  export PS1='\u \w \$ ' 
fi

alias ..="cd .."
alias mkdir="mkdir -p"
alias vi="$EDITOR"
alias grep="grep -i --color=auto"
alias egrep="egrep --color=auto"
alias ls="ls -lahv --color=auto"
alias more="$PAGER"
alias less="$PAGER"
alias wget="wget -c"
alias du="du -h -d 1"
alias tar="tar --no-same-owner"
alias top="htop"
alias dos2unix="perl -pi -e 's/\r\n/\n/g' *"
alias unix2dos="perl -pi -e 's/\n/\r\n/g' *"
alias ltrim="sed 's/^[ \t]*//i'"
alias rtrim="sed 's/[ \t]*$//'"
alias trim="sed 's/^[ \t]*//;s/[ \t]*$//'"
alias getip="curl -s checkip.dyndns.org | /bin/grep -Eo '[0-9\.]+'"
alias ports="lsof -i -P"
alias sockets="netstat -ptu"

function ff() {
  find . -type f -iname '*'$*'*' -ls
}

function fe()
{
  find . -type f -iname '*'${1:-}'*' -exec ${2:-file} {} \;
}

function clients() {
  echo "Client Connections:"   
  netstat -tu |
  awk 'NR > 2 { print $5 }' |
  cut -d: -f1 |
  sort |
  uniq -c | 
  sort -n
}

function services() {
  lsof -i -P -n |
  cut -f 1 -d " " |
  uniq |
  tail -n +2 |
  sort
}

function packages() {
  rm -f /ipkg/Packages /ipkg/Packages.gz 
  ipkg-make-index -l "/ipkg/Packages.filelist" /ipkg > /ipkg/Packages 
  gzip -c /ipkg/Packages > /ipkg/Packages.gz
  ipkg update
}

function ipkgdeps() {
  find $@ -type f |
  xargs objdump -x 2>/dev/null |
  grep NEEDED |
  awk {'print $2'} |
  sort -u |
  awk '{ print $1 }' |
  xargs -i ipkg -V0 search *{} |
  grep -v 'gnueabi' |
  awk '{ print $1 };' |
  sort -u |
  xargs |
  sed 's/ /, /g'
}

function ipkgstrip() {
  find $@ -type f | xargs strip -s 2>/dev/null
}

function swap() {
    local TMPFILE=tmp.$$ 

    [ $# -ne 2 ] && echo "swap: 2 arguments needed" && return 1
    [ ! -e $1 ] && echo "swap: $1 does not exist" && return 1
    [ ! -e $2 ] && echo "swap: $2 does not exist" && return 1

    mv "$1" $TMPFILE 
    mv "$2" "$1"
    mv $TMPFILE "$2"
}

function extract() {
  if [ -f $1 ] ; then
    case $1 in
      *.tar.bz2) tar -xvjf $1 ;;
      *.tar.gz)  tar -xvzf $1 ;;
      *.bz2)     bunzip2 $1  ;;
      *.rar)     unrar x $1  ;;
      *.gz)      gunzip $1   ;;
      *.tar)     tar -xvf $1  ;;
      *.tbz)     tar -xvjf $1 ;;
      *.tgz)     tar -xvzf $1 ;;
      *.zip)     unzip $1    ;;
      *.Z)       gunzip $1   ;;
      *.7z)      7z x $1     ;;
      *)         echo "'$1' cannot be extracted via >extract<" ;;
    esac
  else
    echo "'$1' is not a valid file"
  fi
}

function memory() {
  free -ko |
  grep "Mem:" |
  awk '{ printf "%.2f MB (total) / %.2f MB (used) / %.2f MB (free)\n", $2 / 1024, $3 / 1024, $4 / 1024 }'
}

function diskfree() {
  echo "Storage:"
  df -kPT |
  sed 's/Media Library/Media_Library/g' |
  tail -n +3 | 
  awk '
    BEGIN {
      printf "      %-30s%13s%13s%12s%8s%s\n", "Mountpoint", "Total Size", "Available", "Capacity", "Type ", "   Filesystem";
      printf "      %-30s%13s%13s%12s%8s%s\n", "----------", "----------", "---------", "--------", "-----", "   ----------";
    }
    {
      printf "      ";
      printf "%-30s", $7;
      if ($3 >= 1024 * 1024 * 1024)
        printf "%10.2f TB", $3 / 1024 / 1024 / 1024;
      else if ($3 >= 1024 * 1024)
        printf "%10.2f GB", $3 / 1024 / 1024;
      else
        printf "%10.2f MB", $3 / 1024;
      if ($5 >= 1024 * 1024 * 1024)
        printf "%10.2f TB", $5 / 1024 / 1024 / 1024;
      else if ($5 >= 1024*1024)
        printf "%10.2f GB", $5 / 1024 / 1024;
      else
        printf "%10.2f MB", $5 / 1024;
      printf "%11.3f%%", $5 / $3 * 100;
      printf "   %-5s", $2;
      printf "   %s", $1;
      printf "\n";
    }
  ' |
  sed 's/Media_Library/Media Library/g'
}

# Startup Programms
clear
echo "System:"
echo "      Processor: `cat /proc/cpuinfo | grep 'Processor' | cut -d: -f2 | ltrim` / `cat /proc/cpuinfo | grep 'BogoMIPS' | cut -d: -f2 | ltrim` BogoMIPS"
echo "      Kernel:    `cat /proc/version` (`uname -m`)"
echo "      IPs:       `getip` (WAN) / `hostname -i`(LAN)"
echo "      Memory:    `memory`"
echo "      Uptime:    `uptime | ltrim | sed 's/,  / \/ /g'`"
echo
diskfree
echo
echo "Connection Details:"
sockets | tail -n +3 | sort -k 2 | awk '{ printf "      %3s    %-25s %-35s %-20s %s\n", $1, $4, $5, $6, $7 }' 
echo
clients
echo
EOF
 
Zuletzt bearbeitet:

scythe42

Benutzer
Mitglied seit
16. Sep 2011
Beiträge
90
Punkte für Reaktionen
0
Punkte
0
Setup Log DS211+: Teil 1 - Das Basissystem (Fortsetzung)

Quick and Dirty Backup von /root einrichten (/root wird bei Upgrade oder Reset zurückgesetzt)
  • Muss mir noch ein richtiges lokales Backup einrichten. Aber das reicht erstmal für's erste zum Arbeiten
Rich (BBCode):
bash -c "mkdir -p /volume1/backup/{hourly,daily,weekly,monthly}"
chmod -R 700 /volume1/backup
ln -s /volume1/backup /backup

echo -e "0\t*\t*\t*\t*\troot\t/usr/syno/bin/rsync -a --inplace /root /backup/hourly/"  >> /etc/crontab
echo -e "0\t0\t*\t*\t*\troot\t/usr/syno/bin/rsync -a --inplace /root /backup/daily/"   >> /etc/crontab
echo -e "0\t0\t*\t*\t0\troot\t/usr/syno/bin/rsync -a --inplace /root /backup/weekly/"  >> /etc/crontab
echo -e "0\t0\t1\t*\t*\troot\t/usr/syno/bin/rsync -a --inplace /root /backup/monthly/" >> /etc/crontab

/usr/syno/etc/rc.d/S04crond.sh stop
/usr/syno/etc/rc.d/S04crond.sh start

Fehlende Tools aus der Toolchain holen
  • Passende Toolchain für eigenen Prozessor bei Sourceforge runterladen
Rich (BBCode):
cd /src
wget http://sourceforge.net/projects/dsgpl/files/DSM%203.2%20Tool%20Chains/Marvell%2088F628x%20Linux%202.6.32/gcc421_glibc25_88f6281-GPL.tgz
tar -xvzf gcc421_glibc25_*-GPL.tgz --no-same-owner --strip-components=4 -C /opt/sbin --wildcards '*/libc/sbin/*'
tar -xvzf gcc421_glibc25_*-GPL.tgz --no-same-owner --strip-components=5 -C /opt/sbin --wildcards '*/libc/usr/sbin/*'
tar -xvzf gcc421_glibc25_*-GPL.tgz --no-same-owner --strip-components=5 -C /opt/bin --wildcards '*/libc/usr/bin/*'

Locale Support einrichten (DS kann UTF-8 nur für das Filesystem out of the Box)
  • Muss nach Reset oder Upgrade erneut gemacht werden
Rich (BBCode):
cd /src
tar -xvzf gcc421_glibc25_*-GPL.tgz --no-same-owner --strip-components=5 -C /usr/share --wildcards '*/libc/usr/share/i18n*'
mkdir /usr/lib/locale
localedef -f UTF-8 -i en_US en_US.UTF-8

Neu Einloggen und gucken ob alles sauber funktioniert
Rich (BBCode):
exit

IPKG-Utils installieren, um einfach IPKGs zu erstellen
Rich (BBCode):
cd /src
wget ftp://ftp.gwdg.de/pub/linux/handhelds/packages/ipkg-utils/ipkg-utils-1.7.tar.gz
tar -xvzf ipkg-utils-1.7.tar.gz
cd ipkg-utils-1.7

sed -i 's/PREFIX=\/usr\/local/PREFIX=\/opt/' Makefile
sed -i 's/python2.1/python/' ipkg-update-index

CC=gcc make
make install

Download Verzeichnis für eigene IPKG Repository einrichten
  • Webstation muss aktiviert sein
Rich (BBCode):
mkdir -p /volume1/web/download/ipkg
ln -s /volume1/web/download/ipkg/ /ipkg
sed '/dest root/ i src local http://localhost/download/ipkg' /opt/etc/ipkg.conf

Fehlerhafte IPKG pthread Library auf ARM bei Bedarf ersetzen
Rich (BBCode):
cd /src

cat > test.c << "EOF"
int main(int argc, char **argv)
{
  return 0;
}
EOF

gcc test.c -o test -lpthread
if [ $? != 0 ]; then
  mkdir /opt/arm-none-linux-gnueabi/lib_disabled
  mv /opt/arm-none-linux-gnueabi/lib/libpthread* /opt/arm-none-linux-gnueabi/lib_disabled
  cp /lib/libpthread.so.0 /opt/arm-none-linux-gnueabi/lib/
  cd /opt/arm-none-linux-gnueabi/lib/
  ln -s libpthread.so.0 libpthread.so
  ln -s libpthread.so.0 libpthread-2.5.so
  cd -
fi

gcc test.c -o test -lpthread
rm test test.c

Prüfen ob Automake IPKG mit installiertem Perl läuft
Rich (BBCode):
automake
if [ $? != 0 ]; then
  echo "Automake verlangt ein Perl mit Threads!"
fi

Aktuelles Perl mit Threads bauen
  • Wer es nicht bauen will, warten bis meine IPKG Repository live geht
Rich (BBCode):
cd /src
wget http://www.cpan.org/src/5.0/perl-5.14.2.tar.gz
tar -xvzf perl-5.14.2.tar.gz
cd perl-5.14.2

sed -i 's/usr\/local\/include/opt\/include/' ext/Errno/Errno_pm.PL 

sh Configure -des \
  -Dprefix=/opt \
  -Dcc=gcc \
  -Doptimze="-O2" \
  -Dusethreads \
  -Dinc_version_list=none \
  -Dlibs="-lnsl -lgdbm -ldb -lc -lgdbm_compat -lcrypt" \
  -Aldflags="-lm -pthread" \
  -Dincpth="/opt/lnclude" \
  -Dlibpth="/opt/lib /lib /usr/lib"
make
make test

IPKG von vorher compiliertem Perl erstellen
Rich (BBCode):
mkdir -p /src/ipkg_temp/CONTROL
make install.perl INSTALL_DEPENDENCE="" DESTDIR=/src/ipkg_temp 
 
ipkgstrip /src/ipkg_temp
DEPS="`ipkgdeps /src/ipkg_temp`"

cat > /src/ipkg_temp/CONTROL/control << EOF
Package: perl
Version: 5.14.2
Architecture: arm
Maintainer: Scythe42 <scythe42@gmail.com>
Description: Perl with threads
Priority: optional
Section: interpreters
Depends: $DEPS
Source: http://www.cpan.org/src/5.0/perl-5.14.2.tar.gz
EOF

ipkg-build /src/ipkg_temp /ipkg
rm -rf /src/ipkg_temp
packages

IPKG mit Docs von vorher compilierten Perl erstellen
Rich (BBCode):
mkdir -p /src/ipkg_temp/CONTROL
make install INSTALL_DEPENDENCE="" DESTDIR=/src/ipkg_temp
rm -rf /src/ipkg_temp/opt/bin/ /src/ipkg_temp/opt/lib/

cat > /src/ipkg_temp/CONTROL/control << EOF
Package: perl-doc
Version: 5.14.2
Architecture: arm
Maintainer: Scythe42 <scythe42@gmail.com>
Description: Perl Man Pages
Priority: optional
Section: interpreters
Source: http://www.cpan.org/src/5.0/perl-5.14.2.tar.gz
EOF

ipkg-build /src/ipkg_temp /ipkg
rm -rf /src/ipkg_temp
packages

Neues Perl installieren und Überbleibsel des Alten entfernen
Rich (BBCode):
ipkg upgrade
rm -rf /opt/lib/perl5/5.10.0 /opt/lib/perl5/site_perl/5.10.0

Vorschau auf Teil 2
  • Im nächsten Teil erneure ich die Toolchain und diverse Packages im Zusammenhang damit
  • Danach gibt's IPKGs für die Marvells bei mir zu holen.
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat