感到惊讶我无法找到有关此内容的更多信息。我正在尝试创建我已安装的所有端口和配方的列表/文件,并在另一台Macbook上重新填充它们。这可能没有太大的麻烦吗?
即。 python pip具有一个功能,您可以从需求文件中安装,该文件列出了所需的所有软件包及其版本。 pip install -r requirementsfile
。
答案 0 :(得分:3)
对于MacPorts,您可以使用port installed requested
获取手动安装的端口列表。再次安装这些的一种方法是在bash中编写一个循环;不过,这可能会变得棘手。
看看https://trac.macports.org/wiki/Migration基本上具有相同要求的{{3}},即使没有覆盖移动框(您可以找出切换框的位置)。如果你想避免手工操作,可以在底部找到一个脚本。
答案 1 :(得分:1)
您可以将brewfile与Homebrew一起使用。
答案 2 :(得分:0)
port
的MacPorts程序可以读取MacPorts命令的文件,例如:
> cat cmdfile.txt
install git
install vim
> sudo port -F cmdfile.txt
---> Computing dependencies for git
...
---> Computing dependencies for vim
...
...
选项 -F
传递一个“命令文件”:
> port -h
Usage: port
[-bcdfknNopqRstuvy] [-D portdir|portname] [-F cmdfile] action [actionflags]
[[portname|pseudo-portname|port-url] [@version] [+-variant]... [option=value]...]...
"port help" or "man 1 port" for more information.
portf
事实证明,MacPorts 还安装了 portf
,它是指向 port
的符号链接:
> ls -l /opt/local/bin/portf
lr-xr-xr-x 1 root admin 4 Jun 29 13:25 /opt/local/bin/portf -> port
并且相当于运行port -F
:
> sudo portf cmdfile.txt
---> Computing dependencies for git
...
---> Computing dependencies for vim
...
install
命令指定多个包名称请注意,port install
接受多个包名称。指定多个包名称可以加快执行速度,因为在 每个 install
命令完成后会扫描二进制文件以查找链接错误(并且消耗的时间不可忽略)。例如:
> cat cmdfile.txt
install git vim
> sudo port -F cmdfile.txt
---> Computing dependencies for git
...
---> Computing dependencies for vim
...
---> Scanning binaries for linking errors
...
为文件中的包列表运行 port install
的快速方法是:
> cat macports_packages.txt
git
vim
> python -c '\
> with open("macports_packages.txt", "rt") as f:
> text = f.read()
> print("install " + text.replace("\n", " "))' | sudo port
MacPorts 2.7.1
Entering shell mode... ("help" for help, "quit" to quit)
---> Computing dependencies for git
...
---> Computing dependencies for vim
...
---> Scanning binaries for linking errors
...
引用 MacPorts 更新日志:
<块引用>版本 1.3(2006 年 7 月 27 日):
<块引用>最相关的 Tcl code 是:
F {
# Name a command file to process
advance
if {[moreargs]} {
lappend ui_options(ports_commandfiles) [lookahead]
}
# If we've been invoked as portf, then the first argument is assumed
# to be the name of a command file (i.e., there is an implicit -F
# before any arguments).
if {[moreargs] && $cmdname eq "portf"} {
lappend ui_options(ports_commandfiles) [lookahead]
advance
}
set exit_status [process_command_files $ui_options(ports_commandfiles)]
proc process_command_files { filelist } {
set exit_status 0
# For each file in the command list, process commands
# in the file
foreach file $filelist {
if {$file eq "-"} {
set in stdin
} else {
if {[catch {set in [open $file]} result]} {
fatal "Failed to open command file; $result"
}
}
set exit_status [process_command_file $in]
if {$in ne "stdin"} {
close $in
}
# Exit on first failure unless -p was given
if {$exit_status != 0 && ![macports::ui_isset ports_processall]} {
return $exit_status
}
}
return $exit_status
}
repository macports-base
中的此信息是使用 ag
定位的,如下所示:
git clone git@github.com:macports/macports-base.git
cd macports-base
ag -u 'command file'