“UbuntuHelp:AutoWeeklyUpdateHowTo/zh”的版本间的差异
来自Ubuntu中文
(→二选一:使用Aptitude记录软件包更新记录) |
|||
(未显示3个用户的16个中间版本) | |||
第1行: | 第1行: | ||
− | {{ | + | {{Copyedit translation|from=https://help.ubuntu.com/community/AutoWeeklyUpdateHowTo}}{{From|https://help.ubuntu.com/community/AutoWeeklyUpdateHowTo}}{{Translator|黄金小强}}{{Verifier|}}{{Languages|UbuntuHelp:AutoWeeklyUpdateHowTo}} |
− | + | ||
− | + | ||
== 如何每周自动更新 <br> == | == 如何每周自动更新 <br> == | ||
− | === | + | === 使用cron-apt自动更新软件包<br> === |
− | + | 软件包cron-apt被设计为自动更新软件包列表和下载已更新的软件包。因此,它主要使用命令 | |
<pre>apt-get upgrade</pre> | <pre>apt-get upgrade</pre> | ||
和 | 和 | ||
第14行: | 第12行: | ||
。 | 。 | ||
− | === | + | === 安装cron-apt === |
− | 你可以从Universe | + | 你可以从Universe Repositories得到cron-apt。 |
− | === | + | === 使cron-apt定期运行 === |
− | + | 为了使cron-apt定期地运行,创建一个到/etc/cron.daily或者/etc/cron.weekly的链接 | |
− | <pre>sudo ln -s /usr/sbin/ | + | <pre>sudo ln -s /usr/sbin/cron-apt /etc/cron.daily |
</pre> | </pre> | ||
− | + | cron-apt只下载新的软件包,你需要手动运行来安装它们 | |
<pre>sudo apt-get dist-upgrade | <pre>sudo apt-get dist-upgrade | ||
</pre> | </pre> | ||
− | 。<br> * | + | 。<br> * 如果是使用cron-apt,你不需要参照如下步骤。 |
− | === <br> | + | === <br>使用cron和apt-get每周自动升级软件包 === |
− | '''警告:''' | + | '''警告:'''就任何的系统变化,都有可能发生新的或附加错误。请确保备份你的数据和设置!由自己承担使用本文档的後果。定期更新你的Ubuntu(或基于Debian)的软件包有助于加强系统安全性以及排除系统运行漏洞。这份HOWTO指南介绍了如何在你的系统上安装cron job来每周更新你的系统以及删除任何安装後不曾使用的软件包。这份文档假设你的系统基于最普遍或最常见的宽带环境,不是拨号上网、Internet连接。 |
− | ==== | + | ==== 新建周期性cron Job文件 ==== |
− | + | 首先你需要新建cron job文件。你可以使用简单的文本编辑器创建并保存到你的主文件夹。在Ubuntu系统中,打开应用程序>附件>文本编辑器。在编辑器中,输入下列内容: | |
<pre>#!/bin/bash | <pre>#!/bin/bash | ||
− | apt-get | + | apt-get update |
apt-get upgrade -y | apt-get upgrade -y | ||
apt-get autoclean | apt-get autoclean | ||
第42行: | 第40行: | ||
然後保存文件并以类似于“autoupdt”命名。默认文件夹应该是你的主文件夹,但请确认一下。(下面的步骤假设该文件保存在你的主文件夹。) | 然後保存文件并以类似于“autoupdt”命名。默认文件夹应该是你的主文件夹,但请确认一下。(下面的步骤假设该文件保存在你的主文件夹。) | ||
− | ==== | + | ==== 移动Cron Job文件到Cron.Weekly ==== |
− | + | 现在你已经创建了cron job文件,需要把它移动到cron weekly文件夹才能使它每周自动运行。为此,你需要打开命令行终端。在Ubuntu中,单击应用程序>系统工具>终端。现在你应该能看到终端提示符。在提示符处输入“ls”并按下回车键(某些键盘是返回键)。在列表中应该可以看到你新建的文件“autoupdt”。 | |
<pre>user@system:~$cd ~ | <pre>user@system:~$cd ~ | ||
user@system:~$ls | user@system:~$ls | ||
</pre> | </pre> | ||
现在我们已经确认文件存在,我们需要将它移动到正确的文件夹。在提示符後输入以下命令来移动文件: | 现在我们已经确认文件存在,我们需要将它移动到正确的文件夹。在提示符後输入以下命令来移动文件: | ||
− | <pre>user@system:~$sudo mv autoupdt /etc/ | + | <pre>user@system:~$sudo mv autoupdt /etc/cron.weekly |
</pre> | </pre> | ||
− | + | (你要正确输入你的sudo密码,也就是你的个人密码。)现在我们需要确认文件已被移至Cron文件夹。在提示符後输入: | |
− | <pre>user@system:~$cd /etc/ | + | <pre>user@system:~$cd /etc/cron.weekly |
user@system:~$ls | user@system:~$ls | ||
</pre> | </pre> | ||
你应该能在列表中看到“autoupdt”。(如果没有,再试一下先前的移动命令。) | 你应该能在列表中看到“autoupdt”。(如果没有,再试一下先前的移动命令。) | ||
− | ==== | + | ==== 使Cron Job文件可执行 ==== |
− | + | 现在文件已经创建并准备由cron每周运行,我们还需要使文件可执行使得它能被运行。因为你已经处于cron.weekly文件夹,你只需要输入一下命令: | |
<pre>user@system:~$sudo chmod 755 autoupdt | <pre>user@system:~$sudo chmod 755 autoupdt | ||
</pre> | </pre> | ||
第66行: | 第64行: | ||
==== 完成 ==== | ==== 完成 ==== | ||
− | + | 由于文件是可执行的,所以任务完成。cron job会每周运行并升级你的源列表(检查是否有可更新的软件包),发现并按需要升级软件包,然後清理旧的、安装後不曾使用的软件包。你仍旧可以使用新立得软件包管理器或命令apt-get,但现在你可以休息一下因为每周自动更新。 | |
==== 二选一:使用Aptitude记录软件包更新记录 ==== | ==== 二选一:使用Aptitude记录软件包更新记录 ==== | ||
第84行: | 第82行: | ||
aptitude clean >> ${tmpfile} 2>&1 | aptitude clean >> ${tmpfile} 2>&1 | ||
− | mail -s "Aptitude | + | mail -s "Aptitude cron $(data)" root < ${tmpfile} |
rm -f ${tmpfile} | rm -f ${tmpfile} | ||
</pre> | </pre> |
2010年11月29日 (一) 23:26的最新版本
点击翻译: |
English • 中文 |
目录
如何每周自动更新
使用cron-apt自动更新软件包
软件包cron-apt被设计为自动更新软件包列表和下载已更新的软件包。因此,它主要使用命令
apt-get upgrade
和
apt-get dist-upgrade -d
。
安装cron-apt
你可以从Universe Repositories得到cron-apt。
使cron-apt定期运行
为了使cron-apt定期地运行,创建一个到/etc/cron.daily或者/etc/cron.weekly的链接
sudo ln -s /usr/sbin/cron-apt /etc/cron.daily
cron-apt只下载新的软件包,你需要手动运行来安装它们
sudo apt-get dist-upgrade
。
* 如果是使用cron-apt,你不需要参照如下步骤。
使用cron和apt-get每周自动升级软件包
警告:就任何的系统变化,都有可能发生新的或附加错误。请确保备份你的数据和设置!由自己承担使用本文档的後果。定期更新你的Ubuntu(或基于Debian)的软件包有助于加强系统安全性以及排除系统运行漏洞。这份HOWTO指南介绍了如何在你的系统上安装cron job来每周更新你的系统以及删除任何安装後不曾使用的软件包。这份文档假设你的系统基于最普遍或最常见的宽带环境,不是拨号上网、Internet连接。
新建周期性cron Job文件
首先你需要新建cron job文件。你可以使用简单的文本编辑器创建并保存到你的主文件夹。在Ubuntu系统中,打开应用程序>附件>文本编辑器。在编辑器中,输入下列内容:
#!/bin/bash apt-get update apt-get upgrade -y apt-get autoclean
然後保存文件并以类似于“autoupdt”命名。默认文件夹应该是你的主文件夹,但请确认一下。(下面的步骤假设该文件保存在你的主文件夹。)
移动Cron Job文件到Cron.Weekly
现在你已经创建了cron job文件,需要把它移动到cron weekly文件夹才能使它每周自动运行。为此,你需要打开命令行终端。在Ubuntu中,单击应用程序>系统工具>终端。现在你应该能看到终端提示符。在提示符处输入“ls”并按下回车键(某些键盘是返回键)。在列表中应该可以看到你新建的文件“autoupdt”。
user@system:~$cd ~ user@system:~$ls
现在我们已经确认文件存在,我们需要将它移动到正确的文件夹。在提示符後输入以下命令来移动文件:
user@system:~$sudo mv autoupdt /etc/cron.weekly
(你要正确输入你的sudo密码,也就是你的个人密码。)现在我们需要确认文件已被移至Cron文件夹。在提示符後输入:
user@system:~$cd /etc/cron.weekly user@system:~$ls
你应该能在列表中看到“autoupdt”。(如果没有,再试一下先前的移动命令。)
使Cron Job文件可执行
现在文件已经创建并准备由cron每周运行,我们还需要使文件可执行使得它能被运行。因为你已经处于cron.weekly文件夹,你只需要输入一下命令:
user@system:~$sudo chmod 755 autoupdt
(你还需要再一次确认密码。)
完成
由于文件是可执行的,所以任务完成。cron job会每周运行并升级你的源列表(检查是否有可更新的软件包),发现并按需要升级软件包,然後清理旧的、安装後不曾使用的软件包。你仍旧可以使用新立得软件包管理器或命令apt-get,但现在你可以休息一下因为每周自动更新。
二选一:使用Aptitude记录软件包更新记录
Apt-get并不在记录文件内写下具体变化。如果postfix已安装,apptitude记录到/var/log/apptitude的内容可以发送邮件报告至系统管理员。如上面的例子,创建脚本/etc/cron.weekly/audoupdt并设置其为可执行:
#!/bin/bash tmpfile=$(mktemp) echo "aptitude update" >> ${tmpfile} aptitude update >> ${tmpfile} 2>&1 echo "" >> ${tmpfile} echo "aptitude dist-upgrade" >> ${tmpfile} aptitude -y dist-upgrade >> ${tmpfile} 2>&1 echo "" >> ${tmpfile} echo "aptitude clean" >> ${tmpfile} aptitude clean >> ${tmpfile} 2>&1 mail -s "Aptitude cron $(data)" root < ${tmpfile} rm -f ${tmpfile}
这里有一个有用的脚本(基于上面的)如果你没有安装sendmail或postfix。它记录所有aptitude的输出并手动通过你指定的邮件服务发送一封邮件。你必须指定收件人。同上面的例子,创建脚本/etc/cron.weekly/autoupde并使其可执行:
#!/bin/bash # # use aptitude to automatically install updates. log and email any # changes. # # # variables to change # # address to send results to [email protected] # host name of smtp server MAIL=mail.yourisp.com # # script is below here (do not change) # tmpfile=$(mktemp) # # smtp setup commands # echo "helo $(hostname)" >> ${tmpfile} echo "mail from: root@$(hostname)" >> ${tmpfile} echo "rcpt to: $MAILTO" >> ${tmpfile} echo 'data'>> ${tmpfile} echo "subject: Aptitude cron $(date)" >> ${tmpfile} # # actually run aptitude to do the updates, logging its output # echo "aptitude update" >> ${tmpfile} aptitude update >> ${tmpfile} 2>&1 echo "" >> ${tmpfile} echo "aptitude dist-upgrade" >> ${tmpfile} aptitude -y dist-upgrade >> ${tmpfile} 2>&1\echo "" >> ${tmpfile} echo "aptitude clean" >> ${tmpfile} aptitude clean >> ${tmpfile} 2>&1 # # i get a lot of escaped new lines in my output. so the following # removes them. this could be greatly improved tmpfile2=$(mktemp) cat ${tmpfile} | sed 's/\r\r/\n/g'|sed 's/\r//g' > ${tmpfile2} mv ${tmpfile2} ${tmpfile} # # smtp close commands # echo >> ${tmpfile} echo '.' >> ${tmpfile} echo 'quit' >> ${tmpfile} echo >> ${tmpfile} # # now send the email (and ignore output) # telnet $MAIL 25 < ${tmpfile} > /dev/null 2> /dev/null # # and remove temp files # rm -f ${tmpfile