Difference between revisions of "System Administration Practice"

m
 
(7 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
== Keep Portage Tree Up-To-Date ==
 
== Keep Portage Tree Up-To-Date ==
Even if you're not doing a full update every day, you should sync the portage tree and overlays regularly. It will reduce the time that you need to sync tree before a system upgrade. Also, if you just want to install something, it will be installed with latest deps so you will not waste time on upgrading it later. Here is an example script to upgrade portage and overlay every day:
+
Even if you're not doing a full update every day, you should sync the portage tree and overlays regularly. It will reduce the time that you need to sync tree before a system upgrade. Also, if you just want to install something, it will be installed with latest deps so you will not waste time on upgrading it later. Here is an example script to upgrade portage and overlay every day. Edit <code>/etc/cron.daily/autosync.sh</code> with your favorite text editor:
<console>
+
 
###i## nano /etc/cron.daily/autosync.sh
+
<pre>
 
#!/bin/bash
 
#!/bin/bash
 
log="/var/log/autosync.log"
 
log="/var/log/autosync.log"
Line 20: Line 20:
 
/usr/bin/layman -S --nocolor >> $log 2>&1
 
/usr/bin/layman -S --nocolor >> $log 2>&1
 
fi
 
fi
</console>
+
</pre>
  
 
== Purge unused distfiles ==
 
== Purge unused distfiles ==
Line 27: Line 27:
 
* Remove distfiles which wasn't accessed in last 90 days. ('''WARNING''': It will not work if distfiles are on filesystem with '''noatime''' option. You may want think about '''relatime''').
 
* Remove distfiles which wasn't accessed in last 90 days. ('''WARNING''': It will not work if distfiles are on filesystem with '''noatime''' option. You may want think about '''relatime''').
  
{{Code|/etc/cron.daily/distfiles-auto-purge.sh|<source lang="bash">#!/bin/bash
+
 
find /usr/portage/distfiles -maxdepth 1 -type f -atime +90 -exec rm {} \;</source>}}
+
<pre>
 +
#!bin/bash
 +
find /usr/portage/distfiles -maxdepth 1 -type f -atime +90 -exec rm {}  
 +
</pre>
 +
Alternative is using <tt>eclean</tt> purge utility for distfiles and binary packages, it is part of <tt>app-portage/gentoolkit</tt> package.
 +
Let's say we want to purge distfiles in <tt>/usr/portage/distfiles</tt>
 +
<console>
 +
###i## eclean-dist -i
 +
</console>
 +
This command will prompt for each distfile and ask user's confirmation (can be slow). Example of advanced usage, let's clean all distfiles except for installed packages (exact version), those which are less than one month old, bigger than 50MB, or fetch-restricted:
 +
<console>
 +
###i## eclean-dist -d -t1m -s50M -f
 +
</console>
 +
Cron lovers :)
 +
clean packages in the safest mode, and then distfiles in deep mode but protecting files less than a week old, every sunday at 1am:
 +
<console>
 +
###i## 0 1 * * sun  eclean -C -q packages ; eclean -C -q -d -t1w distfiles
 +
</console>
 +
 
  
 
[[Category:HOWTO]]
 
[[Category:HOWTO]]

Latest revision as of 00:25, February 19, 2014

Keep Portage Tree Up-To-Date

Even if you're not doing a full update every day, you should sync the portage tree and overlays regularly. It will reduce the time that you need to sync tree before a system upgrade. Also, if you just want to install something, it will be installed with latest deps so you will not waste time on upgrading it later. Here is an example script to upgrade portage and overlay every day. Edit /etc/cron.daily/autosync.sh with your favorite text editor:

#!/bin/bash
log="/var/log/autosync.log"
if [ ! -f $log ]; then
	touch $log
	chmod 600 $log
	chown root:root $log
fi

echo >> $log
echo "*** autosync started! ($(date +'%d-%m-%Y %H:%M:%S'))" >> $log
echo "*** running emerge --sync" >> $log
emerge -q --sync >> $log 2>&1
if [ -f /usr/bin/layman ]; then
	echo >> $log
	echo "*** running layman -S" >> $log
	/usr/bin/layman -S --nocolor >> $log 2>&1
fi

Purge unused distfiles

Distfiles may take up a lot of space on disk, and if you do not clean them from time to time it may become an issue. There are many ways to clean them.

  • Remove distfiles which wasn't accessed in last 90 days. (WARNING: It will not work if distfiles are on filesystem with noatime option. You may want think about relatime).


#!bin/bash
find /usr/portage/distfiles -maxdepth 1 -type f -atime +90 -exec rm {} 

Alternative is using eclean purge utility for distfiles and binary packages, it is part of app-portage/gentoolkit package. Let's say we want to purge distfiles in /usr/portage/distfiles

# eclean-dist -i 

This command will prompt for each distfile and ask user's confirmation (can be slow). Example of advanced usage, let's clean all distfiles except for installed packages (exact version), those which are less than one month old, bigger than 50MB, or fetch-restricted:

# eclean-dist -d -t1m -s50M -f

Cron lovers :) clean packages in the safest mode, and then distfiles in deep mode but protecting files less than a week old, every sunday at 1am:

# 0 1 * * sun   eclean -C -q packages ; eclean -C -q -d -t1w distfiles