您的位置:首页 > 其它

apt-get 安装卸载,wget下载,hg clone克隆

2016-12-28 16:19 453 查看

一、apt-get

apt-get install package 安装

apt-get remove package 卸载但不删除配置

apt-get purge package 卸载并且删除相关配置

apt-cache search package搜索包

apt-cache show package获取包的相关信息,如说明、大小、版本等

sudo apt-get install package -- reinstall重新安装包

sudo apt-get -f install修复安装"-f = --fix-missing"

sudo apt-get update更新源

sudo apt-get upgrade更新已安装的包

sudo apt-get dist-upgrade 升级系统

sudo apt-get dselect-upgrade 使用 dselect 升级

apt-cache depends package 了解使用依赖

apt-cache rdepends package 是查看该包被哪些包依赖

sudo apt-get build-dep package安装相关的编译环境

apt-get source package下载该包的源代码

sudo apt-get clean && sudo apt-get autoclean清理无用的包

sudo apt-get check检查是否有损坏的依赖

应用:

1 > 将一个软件依赖的包、库之类下载下来

① 找包:apt-cache depends package

② 下载:

用apt-get install dependpackname --reinstall -d来下载所依赖的包。 -d是表示只下载
③ 批量安装

#有些包名中有<>符号,用tr将其删除
sudo apt-get install --reinstall -d `apt-cache depends packname | grep depends | cut -d: f2 |tr -d "<>"`


例如:



2 > 进阶,下载所依赖的包所依赖的包

递归3次下载所依赖的脚本如下:

#!/bin/bash

logfile=/home/perrin/Desktop/log
ret=""
function getDepends()
{
echo "fileName is" $1>>$logfile
# use tr to del < >
ret=`apt-cache depends $1|grep Depends |cut -d: -f2 |tr -d "<>"`
echo $ret|tee  -a $logfile
}
# 需要获取其所依赖包的包
libs="gnome-shell"                  # 或者用$1,从命令行输入库名字

# download libs dependen. deep in 3
i=0
while [ $i -lt 3 ] ;
do
let i++
echo $i
# download libs
newlist=" "
for j in $libs
do
added="$(getDepends $j)"
newlist="$newlist $added"
apt install $added --reinstall -d -y
done

libs=$newlist
done


二、wget

Linux wget是一个下载文件的工具,它用在命令行下。

1、使用wget下载单个文件 



从网络下载一个文件并保存在当前目录 
wget http://cn.wordpress.org/wordpress-3.1-zh_CN.zip 
在下载的过程中会显示进度条,包含(下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间)。 

 

2、使用wget -O下载并以不同的文件名保存 



wget默认会以最后一个符合”/”的后面的字符来命令,对于动态链接的下载通常文件名会不正确。 
错误:下面的例子会下载一个文件并以名称download.php?id=1080保存 

wget http://www.centos.bz/download?id=1 
即使下载的文件是zip格式,它仍然以download.php?id=1080命令。 
正确:为了解决这个问题,我们可以使用参数-O来指定一个文件名: 

wget -Owordpress.zip http://www.centos.bz/download.php?id=1080 
3、使用wget –limit -rate限速下载 

 

当你执行wget的时候,它默认会占用全部可能的宽带下载。但是当你准备下载一个大文件,而你还需要下载其它文件时就有必要限速了。 

wget –limit -rate=300k http://cn.wordpress.org/wordpress-3.1-zh_CN.zip 
4、使用wget -c断点续传 
使用wget -c重新启动下载中断的文件: 

wget -c http://cn.wordpress.org/wordpress-3.1-zh_CN.zip 
对于我们下载大文件时突然由于网络等原因中断非常有帮助,我们可以继续接着下载而不是重新下载一个文件。需要继续中断的下载时可以使用-c参数。 

5、使用wget -b后台下载 

对于下载非常大的文件的时候,我们可以使用参数-b进行后台下载。 

wget -b http://cn.wordpress.org/wordpress-3.1-zh_CN.zip 
Continuing inbackground, pid 1840. 

Output will bewritten to `wget-log’. 

你可以使用以下命令来察看下载进度 

tail -fwget-log 

6、伪装代理名称下载 

有些网站能通过根据判断代理名称不是浏览器而拒绝你的下载请求。不过你可以通过–user-agent参数伪装。 

wget –user -agent=”Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16(KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16″下载链接 

7、使用wget –spider测试下载链接 
当你打算进行定时下载,你应该在预定时间测试下载链接是否有效。我们可以增加–spider参数进行检查。 

wget –spider URL 

如果下载链接正确,将会显示 

wget –spider URL
Spider modeenabled. Check if remote file exists.
HTTP request sent,awaiting response… 200 OK
Length: unspecified[text/html]
Remote file existsand could contain further links,
but recursion isdisabled — not retrieving.

这保证了下载能在预定的时间进行,但当你给错了一个链接,将会显示如下错误 

wget –spider url
Spider modeenabled. Check if remote file exists.
HTTP request sent,awaiting response… 404 Not Found
Remote file doesnot exist — broken link!!!


你可以在以下几种情况下使用spider参数: 

定时下载之前进行检查 
间隔检测网站是否可用 
检查网站页面的死链接 

8、使用wget –tries增加重试次数 
如果网络有问题或下载一个大文件也有可能失败。wget默认重试20次连接下载文件。如果需要,你可以使用–tries增加重试次数。 

wget –tries=40 URL 

9、使用wget -i下载多个文件 
首先,保存一份下载链接文件 

cat >filelist.txt
url1
url2
url3
url4

接着使用这个文件和参数-i下载 

wget -i filelist.txt 

10、使用wget –mirror镜像网站 
下面的例子是下载整个网站到本地。 

wget –mirror -p–convert-links -P ./LOCAL URL 

–miror:开户镜像下载 
-p:下载所有为了html页面显示正常的文件 
–convert-links:下载后,转换成本地的链接 
-P ./LOCAL:保存所有文件和目录到本地指定目录 

11、使用wget –reject过滤指定格式下载 
你想下载一个网站,但你不希望下载图片,你可以使用以下命令。 

wget –reject=gifurl 

12、使用wget -o把下载信息存入日志文件 
你不希望下载信息直接显示在终端而是在一个日志文件,可以使用以下命令: 

wget -odownload.log URL 

13、使用wget -Q限制总下载文件大小 
当你想要下载的文件超过5M而退出下载,你可以使用以下命令: 

wget -Q5m -ifilelist.txt 

注意:这个参数对单个文件下载不起作用,只能递归下载时才有效。 

14、使用wget -r -A下载指定格式文件 
可以在以下情况使用该功能 

下载一个网站的所有图片 
下载一个网站的所有视频 
下载一个网站的所有PDF文件 

wget -r -A.pdf url 

15、使用wget FTP下载 
你可以使用wget来完成ftp链接的下载。 
使用wget匿名ftp下载 

wget ftp-url 

使用wget用户名和密码认证的ftp下载 

wget–ftp-user=USERNAME –ftp-password=PASSWORD url



wget是在Linux下开发的开放源代码的软件。它有以下功能和特点: 

(1)支持断点下传功能;这一点,也是网络蚂蚁和FlashGet当年最大的卖点,现在,Wget也可以使用此功能,那些网络不是太好的用户可以放心了; 
(2)同时支持FTP和HTTP下载方式;尽管现在大部分软件可以使用HTTP方式下载,但是,有些时候,仍然需要使用FTP方式下载软件; 
(3)支持代理服务器;对安全强度很高的系统而言,一般不会将自己的系统直接暴露在互联网上,所以,支持代理是下载软件必须有的功能; 
(4)设置方便简单;可能,习惯图形界面的用户已经不是太习惯命令行了,但是,命令行在设置上其实有更多的优点,最少,鼠标可以少点很多次,也不要担心是否错点鼠标; 
(5)程序小,完全免费;程序小可以考虑不计,因为现在的硬盘实在太大了;完全免费就不得不考虑了,即使网络上有很多所谓的免费软件,但是,这些软件的广告却不是我们喜欢的; 

wget虽然功能强大,但是使用起来还是比较简单的,基本的语法是:wget [参数列表] URL。下面就结合具体的例子来说明一下wget的用法。 

1、下载整个http或者ftp站点。 
wget http://place.your.url/here 
这个命令可以将http://place.your.url/here首页下载下来。使用-x会强制建立服务器上一模一样的目录,如果使用-nd参数,那么服务器上下载的所有内容都会加到本地当前目录。 

wget -r http://place.your.url/here 
这 个命令会按照递归的方法,下载服务器上所有的目录和文件,实质就是下载整个网站。这个命令一定要小心使用,因为在下载的时候,被下载网站指向的所有地址同 样会被下载,因此,如果这个网站引用了其他网站,那么被引用的网站也会被下载下来!基于这个原因,这个参数不常用。可以用-l number参数来指定下载的层次。例如只下载两层,那么使用-l 2。 

要是您想制作镜像站点,那么可以使用-m参数,例如:wget -mhttp://place.your.url/here 

这时wget会自动判断合适的参数来制作镜像站点。此时,wget会登录到服务器上,读入robots.txt并按robots.txt的规定来执行。 

2、断点续传。 
当文件特别大或者网络特别慢的时候,往往一个文件还没有下载完,连接就已经被切断,此时就需要断点续传。wget的断点续传是自动的,只需要使用-c参数,
例如: 
wget -c http://the.url.of/incomplete/file 
使用断点续传要求服务器支持断点续传。-t参数表示重试次数,例如需要重试100次,那么就写-t 100,如果设成-t 0,那么表示无穷次重试,直到连接成功。-T参数表示超时等待时间,例如-T 120,表示等待120秒连接不上就算超时。 

3、批量下载。 
如果有多个文件需要下载,那么可以生成一个文件,把每个文件的URL写一行,例如生成文件download.txt,然后用命令:wget -i download.txt 
这样就会把download.txt里面列出的每个URL都下载下来。(如果列的是文件就下载文件,如果列的是网站,那么下载首页) 

4、选择性的下载。 
可以指定让wget只下载一类文件,或者不下载什么文件。例如: 
wget -m –reject=gifhttp://target.web.site/subdirectory 

表示下载http://target.web.site/subdirectory,但是忽略gif文件。–accept=LIST 可以接受的文件类型,–reject=LIST拒绝接受的文件类型。 

5、密码和认证。
wget只能处理利用用户名/密码方式限制访问的网站,可以利用两个参数: 
–http-user=USER设置HTTP用户 
–http-passwd=PASS设置HTTP密码 
对于需要证书做认证的网站,就只能利用其他下载工具了,例如curl。 

6、利用代理服务器进行下载。 
如果用户的网络需要经过代理服务器,那么可以让wget通过代理服务器进行文件的下载。此时需要在当前用户的目录下创建一个.wgetrc文件。文件中可以设置代理服务器: 
http-proxy =111.111.111.111:8080 
ftp-proxy =111.111.111.111:8080 
分别表示http的代理服务器和ftp的代理服务器。如果代理服务器需要密码则使用: 
–proxy-user=USER设置代理用户 
–proxy-passwd=PASS设置代理密码 
这两个参数。 
使用参数–proxy=on/off使用或者关闭代理。 
wget还有很多有用的功能,需要用户去挖掘。 

附录: 

命令格式: 
wget [参数列表] [目标软件、网页的网址] 

-V,–version 显示软件版本号然后退出; 
-h,–help显示软件帮助信息; 
-e,–execute=COMMAND执行一个 “.wgetrc”命令 

-o,–output-file=FILE将软件输出信息保存到文件; 
-a,–append-output=FILE将软件输出信息追加到文件; 
-d,–debug显示输出信息; 
-q,–quiet 不显示输出信息; 
-i,–input-file=FILE从文件中取得URL; 

-t,–tries=NUMBER 是否下载次数(0表示无穷次) 
-O–output-document=FILE下载文件保存为别的文件名 
-nc, –no-clobber 不要覆盖已经存在的文件 
-N,–timestamping只下载比本地新的文件 
-T,–timeout=SECONDS设置超时时间 
-Y,–proxy=on/off 关闭代理 

-nd,–no-directories不建立目录 
-x,–force-directories强制建立目录 

–http-user=USER设置HTTP用户 
–http-passwd=PASS设置HTTP密码 
–proxy-user=USER设置代理用户 
–proxy-passwd=PASS设置代理密码 

-r,–recursive 下载整个网站、目录(小心使用) 
-l,–level=NUMBER 下载层次 

-A,–accept=LIST 可以接受的文件类型 
-R,–reject=LIST拒绝接受的文件类型 
-D,–domains=LIST可以接受的域名 
–exclude-domains=LIST拒绝的域名 
-L,–relative 下载关联链接 
–follow-ftp 只下载FTP链接 
-H,–span-hosts 可以下载外面的主机 
-I,–include-directories=LIST允许的目录 
-X,–exclude-directories=LIST拒绝的目录 

中文文档名在平常的情况下会被编码, 但是在 –cut-dirs 时又是正常的, 
wget -r -np -nH–cut-dirs=3 ftp://host/test/  测试.txt 
wget -r -np -nH -ndftp://host/test/ 

%B4%FA%B8%D5.txt 
wget “ftp://host/test/*” 

%B4%FA%B8%D5.txt 

由 於不知名的原因,可能是为了避开特殊档名, wget 会自动将抓取档名的部分用 encode_string 处理过, 所以该 patch 就把被 encode_string 处理成 “%3A” 这种东西, 用decode_string 还原成 “:”,并套用在目录与档案名称的部分,decode_string 是 wget 内建的函式。 
wget -t0 -c -nH -x-np -b -m -P /home/sunny/NOD32view/ http://downloads1.kaspersky-labs.com/bases/-o wget.log

三、hg 

Mercurial 程序命名为 hg。每一个 Mercurial 命令以 hg 开头,后面跟命令名,然后是选项和参数。 
目前 Mercurial 已经安装,我们应该可以在命令行上简单键入 hg,程序应该显示一些有用的命令汇总: 

1、hg命令汇总
$ hg
Mercurial Distributed SCM
basic commands:
add           add the specified files on the next commit($ hg add /fullpath/filename //加入文件)
annotate      show changeset information by line for each file
clone         make a copy of an existing repository
commit        commit the specified files or all outstanding changes(生成你的代码的第一个版本)
diff          diff repository (or selected files)
export        dump the header and diffs for one or more changesets
forget        forget the specified files on the next commit
init          create a new repository in the given directory(生成repository)
log           show revision history of entire repository or files(查看所有历史版本)
merge         merge working directory with another revision
pull          pull changes from the specified source
push          push changes to the specified destination
remove        remove the specified files on the next commit
serve         start stand-alone webserver
status        show changed files in the working directory
summary       summarize working directory state
update        update working directory (or switch revisions)
use "hg help" for the full list of commands or "hg -v" for details

初始化
假设你的源代码目录为proj,执行以下步骤可以建立初始的repository

$cd proj

$hg init        
//生成repository

$hg add /fullpath/filename//加入文件

或者

$ hg addremove   
//加入可识别的文件,去除其他文件

$ hg commit      
//生成你的代码的第一个版本

执行此命令会让hg调用vi,这时你可以键入一些关于当前提交内容的一些信息,然后保存退出,这个版本就行程了。

版本:

使用hg commit命令来生成一个新的版本

$hg parent //查看当前的版本

$ hg log    
//查看所有历史版本

$hg tag   
//可以在一些重大的阶段制作tag,以便于将来对代码的一些里程碑进行回溯  

$hg tags  
//查看所有的tag,进行大的版本比较

$hg co
版本号 //可以检出任意一个版本进行修改文件

$hg status 
//查看现在代码中文件的状态,m表示修改过,a表示新加的文件,?表示文件状态未知。

新生成的文件使用 $ hg add /fullpath/filename后状态就会由?变为a

!!!新生成的文件务必要用add命令加入repository,否则在做diff文件的时候会没有新文件的内容!!!

$hg revert//当你改变了一些文件又后悔后就可以使用此命令来取消改动

$ hg clone source dest
//可以完整地将一个repository拷贝到另一个目录,这很适合做分支处理或者作一些实验型代码。

$hg update //从原始代码树中取得最新的更新

$ hg pull和hg
push分别从原始地代码树中取得或者提交最新更新地文件

patch:

$hg diff
//比较当前改动和当前版本的区别,也可以用-r参数指定两个版本进行比较,比较的结果可以从定向到文件,此文件即是一个标准的patch文件。

$hg import /fullpath/filename
//将patch文件打到当前的代码树上

2、hg version: Mercurial 版本

$ hg version

Mercurial Distributed SCM (version 2.8.2)

(see http://mercurial.selenic.com for more information)
Copyright (C) 2005-2013 Matt Mackall and others
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

3、hg clone :克隆

$ hg clone http://www.selenic.com/repo/hello my-hello

成功运行后,当前目录下发现一个目录叫 my-hello

4、hg log : 查看仓库的历史记录,按时间顺序从近到远输出在仓库中发生的每一个事件。 

$ cd my-hello

$ hg log

changeset: 1:82e55d328c8c

tag: tip

user: mpm@selenic.com

date: Fri Aug 26 01:21:28 2005 -0700

summary: Create a makefile

changeset: 0:0a04b987be5a

user: mpm@selenic.com

date: Fri Aug 26 01:20:50 2005 -0700

summary: Create a standard "hello, world" program

每一段描述一个特定的改变集。一个或几个文件的改变集合在一起形成一个逻辑单元,称为改变集。

changeset
标识了一个 改变集. 

冒号前面的数字代表版本号;
它是一种标识改变集的本地缩写.只是在你的本地仓库中这个版本号才有意义. 

冒号后面的那个很长的十六进制串是
ChangeSetID; 它是标识改变集的全局唯一标识符, 在所有包含这个改变集的仓库中都相同. 如果你正在和其他人讨论某个改变集,请使用这个 ChangeSetID,而不是上面说的版本号. 

tag
:是一个标签,可以理解成为一个改变集指定的名字. 

你可以给任何改变集指定一个或者多个标签.
实际上, 许多改变集都是没有标签的, 所以tag这一行很多时候都不存在. 

名叫tip
的特殊标签总是表示,它是仓库中最后一个改变集。 如果你创建另外的改变集(一会我们会看到),那么它将会变成 Tip。 

user
:确定了谁创建了本改变集。这是一个无格式的字符串; 它通常包括电子邮件地址,个人姓名等。 

date:描述了改变集是什么时候创建的。这些时间是创建改变集的人所在区域的当地时间。 

summary
:给出了改变集描述的首行。它是在创建改变集时进入的,它可以帮助创建者和其它人了解改变集的目的。 

parent
标志了改变集的父辈,当你从几个仓库合并而来的情况下,父辈有多个。 

大多数情况只有一个父辈,它比目前的改变集旧。这是在我们例子中使用的。 

指定-v诊断输出选项来获得更多更详细的历史信息,
或者指定--debug选项来获得历史信息中的一切细节: 

$hg log -v
changeset: 1:82e55d328c8ca4ee16520036c0aaace03a5beb65
tag: tip
user: mpm@selenic.com
date: Fri Aug 26 01:21:28 2005 -0700
files: Makefile
description:
Create a makefile
(...)

$ hg log --debug
manifest: 1:0c7c1d435e6703e03ac6634a7c32da3a082d1600
changeset: 1:82e55d328c8ca4ee16520036c0aaace03a5beb65
tag: tip
parent: 0:0a04b987be5ae354b710cefeba0e2d9de7ad41a9
parent: -1:0000000000000000000000000000000000000000
user: mpm@selenic.com
date: Fri Aug 26 01:21:28 2005 -0700
files+: Makefile
description:
Create a makefile
(...)

--v的输出比缺省输出要多。 changeset 给出不缩略的改变集标号。 files 列出在本改变集中文件的改变。 
description 包含了改变集的完整多行描述而不仅是头一行。 
在我们例子中,描述都只有一行,所以没什么特别不同的地方。 
--debug 给谓词输出添加了以下方面: 
file+ 列出了在此改变集中增加的文件。 
file- 列出了在此改变集中删除的文件。 
manifest 给这个改变集一个 Manifest 号。 
两个 parent 域给这个改变集的两个父辈号码, -1:0000000000000000000000000000000000000000 表示没有父改变集。 

log 命令与 -r 选项一起使用可以查看特定改变集。 
$ hg log -r1
changeset: 1:82e55d328c8c
tag: tip
user: mpm@selenic.com
date: Fri Aug 26 01:21:28 2005 -0700
summary: Create a makefile

log 命令与 -p 选项一起可以显示和此改变集相关联的补丁。 
$ hg log -r1 -p
changeset: 1:82e55d328c8c
tag: tip
user: mpm@selenic.com
date: Fri Aug 26 01:21:28 2005 -0700
summary: Create a makefile

diff -r 0a04b987be5a -r 82e55d328c8c Makefile
--- /dev/null Fri Aug 26 01:20:50 2005 -0700
+++ b/Makefile Fri Aug 26 01:21:28 2005 -0700
@@ -0,0 +1,1 @@
+all: hello

5、 hg tip :显示 tip 的信息
tip 命令除了不支持 -p 选项外,它可以当做 log -r tip 的快捷方式, 

$ hg tip
changeset: 1:82e55d328c8c
tag: tip
user: mpm@selenic.com
date: Fri Aug 26 01:21:28 2005 -0700
summary: Create a makefile

$ hg log -r tip
changeset: 1:82e55d328c8c
tag: tip
user: mpm@selenic.com
date: Fri Aug 26 01:21:28 2005 -0700
summary: Create a makefile

6、hg status
$ hg status
M hello.c
输出很简短:以 M 开头的行意思就是hello.c文件修改过了,那么我们的变更已经可以加入一个变更集了。 

7、hg diff:检查文件实际的改变: 

$ hg diff
diff -r 82e55d328c8c hello.c
--- a/hello.c Fri Aug 26 01:21:28 2005 -0700
+++ b/hello.c Fri Sep 30 10:27:47 2005 +0800

@@ -12,5 +12,6 @@
int main(int argc, char **argv)
{
printf("hello, world!n");
+ printf("sure am glad I'm using Mercurial!n");
return 0;
}

8、hg revert:恢复到没有更改的状态。请确认你确实知道这是你真的希望做的。 

$ hg revert

9、hg commit:创建一个变更集的动作称为提交它。使用hg commit命令来执行提交。 

$ hg commit

10 、hg update

$ hg update

11、 合并改变
$ cd ..
$ hg clone my-hello my-hello-desc
$ cd my-hello-desc
$ vi hello.c
$ hg commit -m 'Add description of hello.c'
$ hg pull ../my-hello-new-output
$ hg update
$ hg merge
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  apg-get wget hg clone