Linux 内核源代码树是什么?它包含什么以及其目的是什么?
我正在尝试构建一个外部模块,我正在使用的教程说要确保内核源代码树可用。
如果可用,我在 Ubuntu 中哪里可以找到它?
这里有一个类似的问题:
但我没有看到我的问题的答案。
如果能澄清这一点就好了。
这是我的 sources.list 目前的样子:
deb http://ftp.us.debian.org/debian/ jessie main
deb-src http://ftp.us.debian.org/debian/ jessie main
deb http://security.debian.org/ jessie/updates main contrib
deb-src http://security.debian.org/ jessie/updates main contrib
# jessie-updates, previously known as 'volatile'
deb http://ftp.us.debian.org/debian/ jessie-updates main contrib
deb-src http://ftp.us.debian.org/debian/ jessie-updates main contrib
Run Code Online (Sandbox Code Playgroud)
如您所见,存储库是该US区域的镜像。如何自动将其更改为另一个存储库区域,而无需手动更改 sources.list?
我只知道如何删除旧AU存储库并手动将其更改为其他区域存储库,例如存储库或其他存储库。
我知道我们可以按照以下格式更改 Debian 使用的 repo 区域:
http://ftp.[Region].debian.org/debian/
Run Code Online (Sandbox Code Playgroud)
但是不遵循默认格式的存储库如何:kartolo.sby.datautama.net.id,这是来自 的存储库Indonesia?我如何将其更改为此处列表中的一个?
考虑一下这一点。IFS仅在执行时设置read。
IFS='' read -r REPLY
Run Code Online (Sandbox Code Playgroud)
但是,如果我对.(source)执行类似操作,即使在执行该代码行之后,变量也会被分配和更改。
PATH="/new_path:${PATH}" . script.sh
echo "$PATH" # Value changed
Run Code Online (Sandbox Code Playgroud)
为什么会出现这种情况呢?我认为.和 Bash 一样source,是一个类似于reador 的命令echo。有没有任何文档,例如2.14。特殊的内置实用程序,提到这种行为吗?
如何以符合 POSIX 的方式临时设置$PATH和.(源)文件?
调用make installworld(or make world) 后,在新世界中更新源文件有两种方式:调用mergemaster -p或make distribution。我知道那个mergemaster调用make distribution但是它还有什么作用,为什么我要调用它而不是仅仅调用它make distribution?
我主要是一个 Windows 人,编程 C#,但我经常使用专为 Linux 机器设计的技术,如 git、MySQL、perl 脚本、memcached、php 等......因此我接触到这些工具。
我喜欢每隔一段时间查看这些工具的代码库,我在许多代码库中意识到一个文件夹,t其中包含一堆带有t扩展名的文件。
这些文件是什么?
为什么文件夹没有更具描述性的名称?
从 Debian 的DebugPackage,我知道在/usr/lib/debug创建两部分可执行文件(即,剥离可执行文件的符号并将它们放在单独的文件中)时,可执行文件的调试信息文件会进入。
但是,符号文件将引用源文件,我看不到源文件应该放在哪里。在 Red Hat/Fedora 上,我知道它们位于/usr/src/debug(根据 Fedora 的Packaging:Debuginfo)。
在 Debian 上,我在哪里放置用于调试的源文件?
一个具体的例子是 Crypto++。我有一个补丁,它GNUMakefile添加了以下内容:
IS_DEBIAN = $(shell uname -a 2>&1 | $(EGREP) -i -c "debian|ubuntu|mint")
...
# https://wiki.debian.org/DebugPackage
ifeq ($(IS_DEBIAN),1)
DEBUG_SYM_DIR ?= /usr/lib/debug/cryptopp
DEBUG_SRC_DIR ?= /usr/src/debug/cryptopp
endif
...
Run Code Online (Sandbox Code Playgroud)
然后有一个看起来像这样的符号配方:
symbol symbols:
$(MKDIR) -p $(DEBUG_SYM_DIR) $(DEBUG_SRC_DIR)
-objcopy --only-keep-debug cryptest.exe cryptest.exe.debug
-objcopy --only-keep-debug libcryptopp.so libcryptopp.so.debug
-strip --strip-debug --strip-unneeded cryptest.exe
-strip --strip-debug --strip-unneeded libcryptopp.so
-$(CP) cryptest.exe.debug $(DEBUG_SYM_DIR)/
-$(CP) libcryptopp.so.debug $(DEBUG_SYM_DIR)/
-objcopy --add-gnu-debuglink=$(DEBUG_SYM_DIR)/cryptest.exe.debug cryptest.exe …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序需要使用 commando 源来设置他的环境文件。
[Unit]
Description=Programname
After=syslog.target network.target
[Service]
User=root
ExecStartPre=source /opt/environmentname/bin/activate enviromentname
ExecStart=/var/programname/programname -f /etc/programname/programconfig.conf
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
现在,Systemd 抱怨 source 因为这不是绝对路径而且 source 是 bash 的内置所以我试过了
ExecStartPre=/bin/bash -c "source /opt/environmentname/bin/activate enviromentname"
Run Code Online (Sandbox Code Playgroud)
我们使用 source 而不是 chmod +x 运行脚本是因为供应商的要求。
那么有没有办法让这个工作?或者我们需要使用分叉之类的东西吗?
我们如何在 Systemd 单元文件中正确使用 bash 内置函数?
Boost:编译最新源代码或使用 add-apt-repository
我在一个路口,我应该走哪条路……?
Boost 1.55 是 Raspian Jessie stable 的一部分,安装 Domoticz 时的建议是使用最新的 Boost(通过编译源...),即。现在是 1.61,但“截至 2015 年 12 月 19 日,版本为 1.60。”。
(编辑:按照我的建议,我使用 gcc 4:4.9.2-2 在 Boost 1.55 之上成功构建了 Domoticz(只需要让它有 3 口))。
我可以执行以下操作之一:
a) 忽略下载的源代码(嘿嘿!)并从以下内容开始并留在 apt-get 系统中,但也许仍处于 Boost 的前沿?
(编辑:我在尝试这样做时出错并退缩了。):
sudo add-apt-repository ppa:boost-latest/ppa
etc
Run Code Online (Sandbox Code Playgroud)
b) 在 apt-get 系统之外编译下载的源代码(这似乎是一个坏主意,除非我可以将它与 apt-get 系统重新连接......)
(编辑:除非必要,否则这似乎没有必要!:-p,所以我又退缩了。)
我使用 rpi-clone 对一组 SD 卡进行了适当的备份;)
我有一个 Boost 1.55 删除前的备份(“如果你不删除旧的 Boost 库,你会得到链接错误”)。
我已经下载了 Boost 1.61 并且可以编译它(只需对另一个 SD 卡进行另一个单独的 rpi-clone 备份)......
欢迎任何建议…
我见过这些:
我通过以下方式从源代码安装了OpenSSL:
wget https://www.openssl.org/source/openssl-1.0.2h.tar.gz
tar -xvzf openssl-1.0.2h.tar.gz
cd openssl-1.0.2h/
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl
sudo make
sudo make install
Run Code Online (Sandbox Code Playgroud)
但是当我在命令行上输入 openssl 时,它显示“当前未安装程序‘openssl’”。我该怎么办?
FreeBSD jail 联机帮助页有关于构建 jail 分发树的说明:
D=/here/is/the/jail
cd /usr/src
mkdir -p $D
make world DESTDIR=$D
make distribution DESTDIR=$D
Run Code Online (Sandbox Code Playgroud)
是否可以使用非 root 帐户执行此操作?现在,使用普通用户帐户,我得到:
$ make world DESTDIR=/jails/base/
[Creating objdir /usr/obj/usr/src/amd64.amd64...]
mkdir: /usr/obj/usr: Permission denied
make: "/usr/src/share/mk/auto.obj.mk" line 69: could not use /usr/obj/usr/src/amd64.amd64: .OBJDIR=/usr/src
Run Code Online (Sandbox Code Playgroud)
如果我正在构建一个 jails 目录,我不明白为什么需要 root 权限。是否可以?