Ubuntu包管理工具介绍及本地源配置(三)

2023-11-03

    不论是在学习还是在做Linux运维的过程中都需要安装各种软件包以及使用包管理工具,但由于很多内网环境几乎不允许生产环境的服务器连接互联网,这样就造成内网服务器无法使用网上的各种源,而且如果使用来回拷贝软件包安装还得解决依赖问题,所以就需要搭建个本地源。

    下面先来介绍Ubuntu两款包管理工具然后再来介绍本地源的配置。

一、包管理工具介绍

1 dpkg包管理器

dpkg 即 package manager for Debian ,是 Debian 和基于 Debian 的系统中一个主要的包管理工具,可以用来管理 deb 格式的软件包。。它可以安装、删除和构建包,但与其他包管理系统不同,它不能自动下载和安装包或者安装包的依赖项。

使用语法:

 dpkg (选项) (参数)

选项介绍:

       -i:安装软件包;

       -r:删除软件包;

       -P:删除软件包的同时删除其配置文件;

      -L package: 显示于软件包关联的文件;

     -l package:显示已经安装包的版本

       -l:显示已安装软件包列表;

     -S keyword : 搜索所属的包内容

      -unpack:解开软件包;

      -c:显示软件包内文件列表;

     –confiugre:配置软件包。

参数:

       Deb软件包:指定要操作的.deb软件包。

2 dpkg命令使用示例

2.1 列出已安装软件包列表

列出系统包数据库中已安装的所有包,从终端提示符类型:

2.2 查看是否安装了特定的包

根据系统上的包数量,这可能会生成大量输出。通过grep输出管道来查看是否安装了特定的包:

sudo dpkg - l | grep apache2

2.3 查询软件包关联的文件

要列出一个包所安装的文件,在本例中是ufw包,输入:

arshou@arshou-ser:~$ dpkg -L ufw

/.

/etc

/etc/default

/etc/default/ufw

/etc/init.d

/etc/init.d/ufw

/etc/logrotate.d

/etc/logrotate.d/ufw

/etc/rsyslog.d

/etc/rsyslog.d/20-ufw.conf

/etc/ufw

/etc/ufw/applications.d

/etc/ufw/sysctl.conf

/lib

/lib/systemd

/lib/systemd/system

/lib/systemd/system/ufw.service

/lib/ufw

/lib/ufw/ufw-init

/lib/ufw/ufw-init-functions

/usr

/usr/lib

/usr/lib/python3

/usr/lib/python3/dist-packages

/usr/lib/python3/dist-packages/ufw

/usr/lib/python3/dist-packages/ufw/__init__.py

/usr/lib/python3/dist-packages/ufw/applications.py

/usr/lib/python3/dist-packages/ufw/backend.py

/usr/lib/python3/dist-packages/ufw/backend_iptables.py

/usr/lib/python3/dist-packages/ufw/common.py

/usr/lib/python3/dist-packages/ufw/frontend.py

/usr/lib/python3/dist-packages/ufw/parser.py

/usr/lib/python3/dist-packages/ufw/util.py

/usr/lib/python3/dist-packages/ufw-0.36.1.egg-info

/usr/sbin

/usr/sbin/ufw

/usr/share

/usr/share/bash-completion

/usr/share/bash-completion/completions

/usr/share/bash-completion/completions/ufw

/usr/share/doc

/usr/share/doc/ufw

/usr/share/doc/ufw/README.Debian

/usr/share/doc/ufw/README.gz

/usr/share/doc/ufw/changelog.Debian.gz

/usr/share/doc/ufw/copyright

/usr/share/doc/ufw/examples

/usr/share/doc/ufw/examples/skel-ui.example

/usr/share/lintian

/usr/share/lintian/overrides

/usr/share/lintian/overrides/ufw

/usr/share/man

/usr/share/man/man8

/usr/share/man/man8/ufw-framework.8.gz

/usr/share/man/man8/ufw.8.gz

/usr/share/ufw

/usr/share/ufw/after.init

/usr/share/ufw/after.rules.md5sum

/usr/share/ufw/after6.rules.md5sum

/usr/share/ufw/before.init

/usr/share/ufw/before.rules.md5sum

/usr/share/ufw/before6.rules.md5sum

/usr/share/ufw/check-requirements

/usr/share/ufw/iptables

/usr/share/ufw/iptables/after.rules

/usr/share/ufw/iptables/after6.rules

/usr/share/ufw/iptables/before.rules

/usr/share/ufw/iptables/before6.rules

/usr/share/ufw/iptables/user.rules

/usr/share/ufw/iptables/user6.rules

/usr/share/ufw/messages

/usr/share/ufw/messages/ar.mo

/usr/share/ufw/messages/ast.mo

/usr/share/ufw/messages/bg.mo

/usr/share/ufw/messages/bs.mo

/usr/share/ufw/messages/ca.mo

/usr/share/ufw/messages/ce.mo

/usr/share/ufw/messages/cs.mo

/usr/share/ufw/messages/da.mo

/usr/share/ufw/messages/de.mo

/usr/share/ufw/messages/el.mo

/usr/share/ufw/messages/en_AU.mo

/usr/share/ufw/messages/en_GB.mo

/usr/share/ufw/messages/es.mo

/usr/share/ufw/messages/et.mo

/usr/share/ufw/messages/fi.mo

/usr/share/ufw/messages/fr.mo

/usr/share/ufw/messages/he.mo

/usr/share/ufw/messages/hu.mo

/usr/share/ufw/messages/id.mo

/usr/share/ufw/messages/it.mo

/usr/share/ufw/messages/ja.mo

/usr/share/ufw/messages/ko.mo

/usr/share/ufw/messages/lv.mo

/usr/share/ufw/messages/nb.mo

/usr/share/ufw/messages/nl.mo

/usr/share/ufw/messages/pl.mo

/usr/share/ufw/messages/pt.mo

/usr/share/ufw/messages/pt_BR.mo

/usr/share/ufw/messages/ru.mo

/usr/share/ufw/messages/se.mo

/usr/share/ufw/messages/sk.mo

/usr/share/ufw/messages/sl.mo

/usr/share/ufw/messages/sr.mo

/usr/share/ufw/messages/sv.mo

/usr/share/ufw/messages/tl.mo

/usr/share/ufw/messages/tr.mo

/usr/share/ufw/messages/uk.mo

/usr/share/ufw/messages/ur.mo

/usr/share/ufw/messages/zh_CN.mo

/usr/share/ufw/messages/zh_TW.mo

/usr/share/ufw/ufw.conf

/usr/share/ufw/user.rules.md5sum

/usr/share/ufw/user6.rules.md5sum

/usr/share/ufw/after.rules

/usr/share/ufw/after6.rules

/usr/share/ufw/before.rules

/usr/share/ufw/before6.rules

/usr/share/ufw/user.rules

/usr/share/ufw/user6.rules

arshou@arshou-ser:~$

2.4  查询软件包的版本

列出一个包所安装的版本,执行dpkg -l 包名,示例如下:

使用 dpkg -l 命令列出当前系统中已经安装的软件以及软件包的状态有如下:

命令输出的第一行为期望状态,期望状态有以下几种:

  • u:即 unknown,软件包未安装且用户未请求安装
  • i:即 install,用户请求安装该软件包
  • r:即 remove,用户请求卸载该软件包
  • p:即 purge,用户请求卸载该软件包并清理配置文件
  • h:即 hold,用户请求保持续当前软件包版本

命令输出的第二行为当前状态有以下几种:

  • n:即 not-installed,软件包未安装
  • i:即 installed,软件包已安装并完成配置
  • c:即 config-files,软件包已经被卸载,但是其配置文件未清理
  • u:即 unpacked,软件包已经被解压缩,但还未配置
  • f:即 half-configured,配置软件包时出现错误
  • w:即 triggers-awaited,触发器等待
  • t:即 triggers-pending,触发器未决

命令输出的第三行为错误状态,有以下几种:

  • h:软件包被强制保持
  • r:即 reinstall-required,需要卸载并重新安装
  • x:软件包被破坏

因此 ii 表示该软件需要安装且已经安装,没有出现错误; iu 表示已经安装该软件,但未正确配置; rc 表示该软件已经被删除,但配置文件未清理。

2.4.1 筛选查找模式匹配的软件包

使用命令格式:dpkg -l <package_name_pattern>

arshou@ub-client:~$ sudo dpkg -l "apache*"

Desired=Unknown/Install/Remove/Purge/Hold

| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend

|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)

||/ Name                            Version           Architecture Description

+++-===============================-=================-============-==============================================>

un  apache2-api-20120211            <none>            <none>       (no description available)

un  apache2-api-20120211-openssl1.1 <none>            <none>       (no description available)

ii  apache2-bin                     2.4.52-1ubuntu4.5 amd64        Apache HTTP Server (modules and other binary f>

ii  apache2-data                    2.4.52-1ubuntu4.5 all          Apache HTTP Server (common files)

un  apache2-doc                     <none>            <none>       (no description available)

un  apache2-suexec-custom           <none>            <none>       (no description available)

un  apache2-suexec-pristine         <none>            <none>       (no description available)

ii  apache2-utils                   2.4.52-1ubuntu4.5 amd64        Apache HTTP Server (utility programs for web s

un 表示此软件包没有安装。

2.5 安装本地软件包

使用dpkg安装本地软件包,本地必须有这个软件包,并且这个包没有其他包的依赖关系,使用dpkg才能安装成功,如果有依赖其他包则安装或报错。

以下安装zip包,执行以下命令:

arshou@arshou-ser:~$ sudo dpkg -i zip_3.0-12build2_amd64.deb

(Reading database ... 110181 files and directories currently installed.)

Preparing to unpack zip_3.0-12build2_amd64.deb ...

Unpacking zip (3.0-12build2) over (3.0-12build2) ...

Setting up zip (3.0-12build2) ...

Processing triggers for man-db (2.10.2-1) ...

arshou@arshou-ser:~$

这里使用dpkg安装有依赖的软件包安装部成功之后会有提示报错,比如安装ansible。

查看安装结果:

 这里iU 表示已经安装该软件,但未正确配置;

这个时候安装其他软件包时会提示有包绝少依赖,其他软件无法安装成功,如下:

解决方法把这个已经安装该软件,但未正确配置的软件包删除,然后再安装其他软件包。

2.6 卸载软件包

使用dpkg卸载软件包时,有两个选项可以使用,使用选项P不保留其配置信息,使用选项r时,有配置文件的软件包会保留配置信息。

列如使用选项r卸载apache2时,因为apache2有配置文件,所以使用选项r卸载时会保留配置信息,出口已经卸载的软件时会显示rc。

卸载和查看示例如下:

再使用选项P卸载时,查看就没有apache2时就没有发现apache2了,如下:

 

3 高级包装工具- APT

apt命令是一个强大的命令行工具,它与Ubuntu的高级打包工具(apt)一起工作。apt中包含的命令提供了安装新软件包、升级现有软件包、更新软件包列表索引,甚至升级整个Ubuntu系统的方法。

3.1 安装软件包

使用apt安装软件包非常简单。例如,要安装apache2做web服务器,请输入以下命令:

sudo apt install apache2

3.2移除包

删除一个(或多个)包也很简单。要删除前面示例中安装的包,只需输入:

sudo apt remove apache2

这样删除软件包,会保留软件包的配置文件,当使用dpkg -l | grep 软件包名时显示结果会显示rc

有些包卸载不彻底,也会导致各种问题。

debian系的底层包管理程序dpkg可以对于帮助我们找到这些包。

使用dpkg --list可以查看所有包的状态,其中前两位表示状态,第一位为期望的状态,第二位为实际的状态。可以大致理解为:当我们输入安装命令时,第一位置为i(表示install),当命令完成时,第二位置为i。

一个常见的非理想状态是:第一位为r(removed),第二位为c(Cfg-file存在)。

向apt remove添加——purge选项将删除包配置文件。这可能是也可能不是想要的效果,所以要小心使用。

移除软件包是增加--purge参数将会删除软件包已经相关的配置文件,再次查看移除的软件包时就没有rc了

二、配置本地源

1 前言

    由于很多内网环境都是不允许连接互联网,无法使用网上的各种源,而且在安装软件包时由于多数软件包的安装都需要解决依赖关系,使用来回拷贝软件包安装麻也比较麻烦,并且还得解决软件包之间的依赖问题,所以就需要搭建个本地源。

2 系统环境

系统版本

 IP

用途

Ubuntu 22.04.1 LTS

192.168.20.128

软件包源服务器

3 下载软件包

     首先执行下载命令的时候,会系统会默认保存下载的安装包,路径是/var/cache/apt/archives,可以从这里面复制出去安装包,然后就可以拿去制作本地源了。

单纯下载软件包的话,使用以下命令:

如下载时间同步chrony:

root@server:~# apt download chrony

但是更多时候我们需要同时下载一个软件和他的依赖软件,这时候执行如下命令可以一块下载他的依赖,-d参数就是下载模式,不安装,这个的前提是没有安装过这个软件才能下载

root@server:~# apt -d install ansible -y

这样软件包就会下载到/var/cache/apt/archives目录下。

4 安装dpkg-dev工具

需要安装dpkg-dev软件包,才能为本地APT仓库创建软件包元数据。

root@server:~#  apt install -y dpkg-dev

5、配置提供本机使用的源

5.1 创建本地仓库的存储目录

创建/soft/repo目录,用来存放软件包:

root@server:~# mkdir -p /soft/repo

 

将下载好的软件包放置在/soft/repo目录下(这里是下载ansible的安装包和依赖包做源后测试无公网连接来安装ansible):

root@server:~# ll /soft/repo/

total 22380

drwxr-xr-x 2 root root     4096 Jun 13 02:16 ./

drwxr-xr-x 3 root root     4096 Jun 13 02:11 ../

-rw-r--r-- 1 root root 17530700 Jun 13 02:16 ansible_2.10.7+merged+base+2.10.8+dfsg-1_all.deb

-rw-r--r-- 1 root root  1887104 Jun 13 02:16 ieee-data_20210605.1_all.deb

-rw-r--r-- 1 root root    27236 Jun 13 02:16 python3-argcomplete_1.8.1-1.5_all.deb

-rw-r--r-- 1 root root   123058 Jun 13 02:16 python3-dnspython_2.1.0-1ubuntu1_all.deb

-rw-r--r-- 1 root root    21708 Jun 13 02:16 python3-jmespath_0.10.0-1_all.deb

-rw-r--r-- 1 root root    23012 Jun 13 02:16 python3-kerberos_1.1.14-3.1build5_amd64.deb

-rw-r--r-- 1 root root  1554184 Jun 13 02:16 python3-libcloud_3.2.0-2_all.deb

-rw-r--r-- 1 root root    14576 Jun 13 02:16 python3-lockfile_1%3a0.12.2-2.2_all.deb

-rw-r--r-- 1 root root   308658 Jun 13 02:16 python3-netaddr_0.8.0-2_all.deb

-rw-r--r-- 1 root root    20384 Jun 13 02:16 python3-ntlm-auth_1.4.0-1_all.deb

-rw-r--r-- 1 root root    30672 Jun 13 02:16 python3-packaging_21.3-1_all.deb

-rw-r--r-- 1 root root  1026726 Jun 13 02:16 python3-pycryptodome_3.11.0+dfsg1-3build1_amd64.deb

-rw-r--r-- 1 root root    11892 Jun 13 02:16 python3-requests-kerberos_0.12.0-2_all.deb

-rw-r--r-- 1 root root     6160 Jun 13 02:16 python3-requests-ntlm_1.1.0-1.1_all.deb

-rw-r--r-- 1 root root    37984 Jun 13 02:16 python3-requests-toolbelt_0.9.1-1_all.deb

-rw-r--r-- 1 root root   158910 Jun 13 02:16 python3-selinux_3.3-1build2_amd64.deb

-rw-r--r-- 1 root root    54722 Jun 13 02:16 python3-simplejson_3.17.6-1build1_amd64.deb

-rw-r--r-- 1 root root    21660 Jun 13 02:16 python3-winrm_0.3.0-2_all.deb

-rw-r--r-- 1 root root    12608 Jun 13 02:16 python3-xmltodict_0.12.0-2_all.deb

root@server:~#

 

5.2 创建本地软件源的文件

进入/soft/repo目录下:

root@server:~# cd /soft/repo

创建本地软件源的Package.gz和index文件

root@server:/soft/repo# dpkg-scanpackages ./ | gzip -9c > Packages.gz

dpkg-scanpackages: info: Wrote 19 entries to output Packages file.

root@server:/soft/repo#

root@server:/soft/repo# apt-ftparchive packages ./ > Packages

root@server:/soft/repo# apt-ftparchive release ./ > Release

root@server:/soft/repo#

 

5.3 更改安装源为本地源

root@server:/soft/repo# mv /etc/apt/sources.list /etc/apt/sources.list.old

root@server:/soft/repo#

root@server:/soft/repo# vi /etc/apt/sources.list

输入以下内容并保存:

deb [trusted=yes] file:///soft/repo/ ./

更新源

root@server:/soft/repo# apt update

Get:1 file:/soft/repo ./ InRelease

Ign:1 file:/soft/repo ./ InRelease

Get:2 file:/soft/repo ./ Release [1,204 B]

Get:2 file:/soft/repo ./ Release [1,204 B]

Get:3 file:/soft/repo ./ Release.gpg

Ign:3 file:/soft/repo ./ Release.gpg

Get:4 file:/soft/repo ./ Packages [8,635 B]

Reading package lists... Done

Building dependency tree... Done

Reading state information... Done

All packages are up to date.

root@server:/soft/repo#

执行更新源命令后,源就只有本地源可以使用了。

5.4 安装软件

前面是下载ansible和其依赖包来做包的安装源,那么我们就安装ansible:

 

先验证是否已经安装有ansible:

 

验证结果没有安装ansible软件,下面进行安装。

root@server:~# apt install -y ansible

Reading package lists... Done

Building dependency tree... Done

Reading state information... Done

The following additional packages will be installed:

  ieee-data python3-argcomplete python3-dnspython python3-jmespath python3-kerberos python3-libcloud python3-lockfile python3-netaddr

  python3-ntlm-auth python3-packaging python3-pycryptodome python3-requests-kerberos python3-requests-ntlm python3-requests-toolbelt

  python3-selinux python3-simplejson python3-winrm python3-xmltodict

Suggested packages:

  cowsay sshpass python3-sniffio python3-trio python-lockfile-doc ipython3 python-netaddr-docs

The following NEW packages will be installed:

  ansible ieee-data python3-argcomplete python3-dnspython python3-jmespath python3-kerberos python3-libcloud python3-lockfile python3-netaddr

  python3-ntlm-auth python3-packaging python3-pycryptodome python3-requests-kerberos python3-requests-ntlm python3-requests-toolbelt

  python3-selinux python3-simplejson python3-winrm python3-xmltodict

0 upgraded, 19 newly installed, 0 to remove and 0 not upgraded.

Need to get 0 B/22.9 MB of archives.

After this operation, 243 MB of additional disk space will be used.

Get:1 file:/soft/repo ./ python3-packaging 21.3-1 [30.7 kB]

Get:2 file:/soft/repo ./ python3-pycryptodome 3.11.0+dfsg1-3build1 [1,027 kB]

Get:3 file:/soft/repo ./ python3-dnspython 2.1.0-1ubuntu1 [123 kB]

Get:4 file:/soft/repo ./ ieee-data 20210605.1 [1,887 kB]

Get:5 file:/soft/repo ./ python3-netaddr 0.8.0-2 [309 kB]

Get:6 file:/soft/repo ./ ansible 2.10.7+merged+base+2.10.8+dfsg-1 [17.5 MB]

Get:7 file:/soft/repo ./ python3-argcomplete 1.8.1-1.5 [27.2 kB]

Get:8 file:/soft/repo ./ python3-jmespath 0.10.0-1 [21.7 kB]

Get:9 file:/soft/repo ./ python3-kerberos 1.1.14-3.1build5 [23.0 kB]

Get:10 file:/soft/repo ./ python3-lockfile 1:0.12.2-2.2 [14.6 kB]

Get:11 file:/soft/repo ./ python3-simplejson 3.17.6-1build1 [54.7 kB]

Get:12 file:/soft/repo ./ python3-libcloud 3.2.0-2 [1,554 kB]

Get:13 file:/soft/repo ./ python3-ntlm-auth 1.4.0-1 [20.4 kB]

Get:14 file:/soft/repo ./ python3-requests-kerberos 0.12.0-2 [11.9 kB]

Get:15 file:/soft/repo ./ python3-requests-ntlm 1.1.0-1.1 [6,160 B]

Get:16 file:/soft/repo ./ python3-requests-toolbelt 0.9.1-1 [38.0 kB]

Get:17 file:/soft/repo ./ python3-selinux 3.3-1build2 [159 kB]

Get:18 file:/soft/repo ./ python3-xmltodict 0.12.0-2 [12.6 kB]

Get:19 file:/soft/repo ./ python3-winrm 0.3.0-2 [21.7 kB]

Selecting previously unselected package python3-packaging.

…………………………………………………………………………………………………………………..

Processing triggers for man-db (2.10.2-1) ...

Scanning processes...                                                                                                                          

Scanning linux images...                                                                                                                       

Running kernel seems to be up-to-date.

No services need to be restarted.

No containers need to be restarted.

No user sessions are running outdated binaries.

No VM guests are running outdated hypervisor (qemu) binaries on this host.

root@server:~#

5.5 编写一个脚本来更新Package.gz和索引文件

创建一个脚本文件以扫描更新Packages.gz文件,因为可能会不时的在本地APT仓库中添加新的deb软件包。因此,每次在repo目录中添加新的deb软件包之后,都需要更新Packages.gz文件和索引文件。

root@server:~# vim /bin/update-debs.sh

#!/bin/bash
cd
/soft/repo
dpkg
-scanpackages ./ /dev/null|gzip -9c >Packages.gz

apt-ftparchive packages ./ > Packages
apt-ftparchive release ./ > Release

给update-debs脚本文件添加可执行权限:

root@server:~# chmod +x /bin/update-debs.sh

现在执行此脚本以创建Packages.gz文件:

root@server:~#  /bin/update-debs.sh

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu包管理工具介绍及本地源配置(三) 的相关文章

  • 如何“grep”连续流?

    可以用吗grep在连续的流中 我的意思是有点tail f
  • 如何将推送的分支复制到另一个目录?

    我有一个分支叫master 生产 另一个称为development 当我从 master 推送提交时 post receive 挂钩执行 git work tree var www mywebsite com git dir var rep
  • Bash 中 $() 和 () 之间的区别

    当我打字时ls l echo file 支架的输出 这只是简单的回显 被获取并传递到外部ls l命令 就等于简单的ls l file 当我打字时ls l echo file 我们有错误 因为不能嵌套 内部外部命令 有人可以帮助我理解之间的区
  • 跟踪 pthread 调度

    我想做的是创建某种图表 详细说明 Linux 中 两个 线程的执行情况 我不需要查看线程的作用 只需查看它们何时被安排以及持续多长时间 基本上是一条时间线 在过去的几个小时里 我一直在互联网上搜索跟踪 pthread 调度的方法 不幸的是
  • 如何删除树莓派的相机预览

    我在我的 raspberryPi 上安装了 SimpleCv 并安装了用于使用相机板的驱动程序 uv4l 驱动程序 现在我想使用它 当我在 simpleCV shell Camera 0 getImage save foo jpg 上键入时
  • jpackage linux 创建的桌面文件不足

    我刚刚开始使用 jpackage 它是一个非常棒的工具 只要迈出一步 我的肩上的工作就减轻了很多 我对看起来硬编码且无法定制的东西越感到惊讶 JPackage 自动生成启动器 lib
  • xdotool 类型需要很长时间并导致整个桌面冻结

    我一直在使用xdotool type过去只能在快捷方式上输入耸肩xdotool type 这可行 但总是需要相当长的时间 并导致整个桌面冻结 完全冻结 而不仅仅是输入 几秒钟 不过并没有太打扰我 现在我需要一种方法来从文件中读取内容 对其进
  • 使用 MongoDB docker 镜像停止虚拟机而不丢失数据

    我已经在 AWS EC2 上的虚拟机中安装了官方的 MongoDB docker 映像 并且数据库上已经有数据 如果我停止虚拟机 以节省过夜费用 我会丢失数据库中包含的所有数据吗 在这些情况下我怎样才能让它持久 有多种选择可以实现此目的 但
  • Linux TCP服务器:在接受连接之前读取客户端的IP地址

    Related C Winsock API如何在接受连接之前获取连接客户端IP https stackoverflow com questions 716209 c winsock api how to get connecting cli
  • 退出 bash 脚本但保持进程运行

    我正在运行服务器 需要使用参数执行以下命令 这些脚本目前工作得很好 但问题是当我运行脚本时我无法返回到控制台 它在控制台中保持运行 如果我强行停止它 那么该过程也会停止 我想继续运行该进程并返回到控制台 bin sh php home st
  • 静态链接共享对象?或者损坏的文件?

    我有一个从专有来源获得的库 我正在尝试链接它 但出现以下错误 libxxx so 文件无法识别 文件格式无法识别 Collect2 ld 返回 1 退出状态 确实 ldd libxxx so statically linked 这究竟意味着
  • 如何从“git log”中查看 Git 中的特定版本?

    My git log显示为 enter code here git trial git log commit 4c5bc66ae50780cf8dcaf032da98422aea6e2cf7 Author king lt email pro
  • 如何在 Linux 中使用单行命令获取 Java 版本

    我想通过单个命令获取 Linux 中的 Java 版本 我是 awk 的新手 所以我正在尝试类似的事情 java version awk print 3 但这不会返回版本 我将如何获取1 6 0 21从下面的Java版本输出 java ve
  • 编写多个mysql脚本

    是否可以在复合脚本中包含其他 mysql 脚本 理想情况下 我不想为包含的脚本创建存储过程 对于较大的项目 我想分层维护几个较小的脚本 然后根据需要组合它们 但现在 我很乐意学习如何包含其他脚本 source是一个内置命令 您可以在 MyS
  • Xenomai 中的周期性线程实时失败

    我正在创建一个周期性线程 它在模拟输出上输出方波信号 我正在使用 Xenomai API 中的 Posix Skin 和 Analogy 我使用示波器测试了代码的实时性能 并查看了方波信号 频率为 1kHz 的延迟 我应该实现 250us
  • 当我尝试在 ubuntu:18.04 中移动 /etc/resolv.conf 时,出现“设备或资源繁忙”。怎么解决呢?

    我的 Docker 容器中有一个 VPN 客户端 ubuntu 18 04 客户必须执行以下操作 mv etc resolv conf etc resolv conf orig 然后客户端应该创建新的 etc resolv conf与他们的
  • Gradle 1.3:build.gradle 不构建类

    这里有一个新问题 我有一个 build gradle 文件apply plugin java在其中 并与 java 项目 包关联 当我跑步时gradle build从命令行我得到 compileJava UP TO DATE process
  • 为什么 ld 无法从 /etc/ld.so.conf 中的路径找到库?

    我想添加 opt vertica lib64进入系统库路径 所以我执行以下步骤 1 添加 opt vertica lib64 into etc ld so conf 然后运行ldconfig 2 检查 bash ldconfig p gre
  • Ubuntu 12.04 上的 PHP 从 5.3 升级到 php 5.6

    我正在按照本教程将 php 从版本 5 3 升级到 5 6 http phpave com upgrade php 53 to php 56 on ubuntu 1204 lts http phpave com upgrade php 53
  • 如何从 Linux 的 shell 中删除所有以 ._ 开头的文件?

    确实如标题所示 我已将许多文件从 Mac 复制到 Raspberry Pi 这导致了许多以前缀开头的多余文件 我想删除以以下开头的文件夹中的每个文件 我该怎么做 尝试类似的方法 cd path to directory rm rf 或者 如

随机推荐

  • android studio第三方框架总结

    第三方框架gradle添加 UI Material design和Support library控件 compile com android support appcompat v7 25 3 1 compile com android s
  • 搭建一个Fabric网络

    生成相关证书文件 首先Fabric提供了一些工具用于生成所需的文件 cryptogen模块会根据提供的配置文件生成后续模块运行过程中需要的证书和数据文件 cryptogen常用命令 generate用于根据配置文件生成证书 showtemp
  • DS18B20使用说明

    DS18B20 温湿度监测模块 芯片介绍 基础介绍 引脚介绍 DS18B20是单总线协议的典型代表 同时也是单总线协议最广泛的应用场景 是常用的数字温度传感器 其输出的是数字信号 具有体积小 硬件开销低 抗干扰能力强 精度高的特点 DS18
  • 动态SQL,模糊查询,关联查询

    一 和 的区别 相同点 这两个都是占位符 用来指定传入sql的参数 不同点 这个是预编译的 不会发生sql注入 如果需要使用拼接的话可以使用sql的内置函数contact 这个是将其中的变量通过字符串拼接的方式插入到sql语句中的 容易发生
  • CodeSmith 使用教程(10): CodeTemplateInfo 对象

    通过CodeTemplateInfo对象可以获取代码模板文件本身的一些信息 比如文件名 源语言 编码方法 其支持的属性有 属性名 描述 CodeBehind 该模板的Code behind的文件名或者模板不使用CodeBehind时为空字符
  • Gromacs初探

    1 Gromacs是用来干什么的 分子动力学模拟是分子模拟中最接近实验条件的模拟方法 能够从原子层面给出体系的微观演化过程 直观地展示实验现象发生的机理与规律 gromacs就是一个用于分子动力学模拟的程序 2 Gromacs的步骤 以T4
  • 项目部署K8s中excel导出模板名乱码

    问题描述 线下环境测试问题 部署到k8s上时 导出报表1时 导出时用的时报表2的模板 进入镜像中查询template下的导出模板 发现模板名都是问号 乱码 而且数量少了一个 可能由于这两个模板的名字都是5个汉字 导致tomcat解析时变成了
  • 还在select 1 union select 2 union……?

    要目录干啥 用Union吧 太长 用values吧 神奇 引申Values用法 用Union吧 太长 有时候 要临时建个短列表 2047以内的纯数字还不错 有个表 也够用 select number from master spt valu
  • 人脸识别、无人驾驶背后:是谁在造人工大脑?

    NEW 关注剁手日记视频号 最新视频 OPPO下一代屏下镜头技术 这可能才是你想要的全面屏 来源 科技新知 文 樟稻 编辑 伊页 转瞬之间 ILSVRC比赛 又称ImageNet比赛 已经停办了四年 作为机器视觉领域最受追捧也是最具权威的学
  • 【马士兵】Python基础--07(列表)

    Python基础 07 文章目录 Python基础 07 列表的添加操作 列表中的删除操作 列表元素的修改操作 对列表的排序操作 列表生成式 列表的添加操作 列表的添加元素有四种方法 列表的添加操作不改变列表的id值 所以相当于没有新的列表
  • python 点云处理 使用plyfile库写.ply文件

    点云处理时 关使用python读写 ply文件的博客并不多 而且要么是从ply文件头部开始写起 要么是csdn收费的 所以这里写一个博客记录下 1 读ply文件 这个很简单 具体可以看官方文档 代码 首先安装plyfile库 pip ins
  • 关于Oracle sql查询未走索引的问题(第二次查询比第一次查询更慢)

    这段时间发现查询一个大表很慢 这个表数据量大概有3亿多 第一次查询发现返回数据很快 即正常使用索引 紧接着 再次执行这语句时 发现查询很慢 很久才返回数据 按照oracle正常sql查询来说 第二次查询应该是比第一次更快才对 所以这想象没有
  • 深入浅出谈数据挖掘

    作 者 段勇 一 数据挖掘的本质 一般来说 比较狭义的观点认为数据挖掘区别于常规数据分析的关键点在于 数据挖掘主要侧重解决四类问题 分类 聚类 关联 预测 关于这四类问题后文会详细阐述 而常规数据分析则侧重于解决除此之外的其他数据分析问题
  • 计算物品的相似度矩阵

    计算物品的相似度矩阵 例如现在有A B C D四个用户 分别对a b c d e五个物品表达了自己喜好程度 通过评分高低来表现自己的偏好程度高低 计算物品之间的相似度矩阵 算法 1 建立用户物品倒排表 A a b d B a c e C b
  • Centos8中创建LVM条带卷具体方法

    为了性能考虑 考虑将数据跨越多个磁盘上存储 即把LV上连续的数据分成大小相同的块 然后依次存储在各个磁盘PV上 类似于RAID 0的数据存放形式 实现数据读写的并发 管理员依据自己的数据需求 定义数据分块大小 分布PV磁盘个数信息 从而实现
  • 注解 @AutoConfigureBefore 和 @AutoConfigureAfter 的用途

    介绍 AutoConfigureBefore 和 AutoConfigureAfter 是 spring boot autoconfigure 包下的注解 用途 AutoConfigureBefore AAAA class 或 AutoCo
  • 利用eNSP的Cloud连接物理机防火墙(web)

    防火墙一般用USG6000V的 双击打开后一般会出现会出现以下提示 需要导入一个USG6000V的设备包 可以自行下载 下载好后 点击浏览找到对应设备包导入即可 然后就可以正常开机了 开机后输入默认的账号密码 账号 admin 密码 Adm
  • Qt/C++编写视频监控系统80-远程回放视频流

    一 前言 远程回放NVR或者服务器上的视频文件 一般有三种方式 第一种是调用厂家的SDK 这个功能最全 但是缺点明显就是每个厂家的设备都有自己的SDK 只兼容自家的设备 如果你的软件需要接入多个厂家的 那就意味着要写好多套SDK接入 而且一
  • ​​​苹果上架app需要什么条件​​​

    当我们开发完app后 需要将ipa ap 上传IPA 使用一门Ipa上传小助手把安装包上传到appstoreconnect等待审核 专用密码上传IPA IPA上传小助手可以在windows环境下把IPA上传到appuploader 1 登录
  • Ubuntu包管理工具介绍及本地源配置(三)

    不论是在学习还是在做Linux运维的过程中都需要安装各种软件包以及使用包管理工具 但由于很多内网环境几乎不允许生产环境的服务器连接互联网 这样就造成内网服务器无法使用网上的各种源 而且如果使用来回拷贝软件包安装还得解决依赖问题 所以就需要搭